洪民憙 (홍민희) 블로그

뛰어난 개발자를 구분하기 위한 몇 가지 질문

링크된 글을 보고 내 주변 사람들의 반응이 하나 같이 차갑거나 냉소적이다. 저 글에는 편견이 가득하다는 것이다.

사실 편견이 항상 나쁜 것은 아니다. 편견은 일종의 휴리스틱이다. 휴리스틱이 무엇인가? 위키백과에서는 다음과 같이 설명하고 있다(강조는 내가 했음).

발견법(發見法) 또는 휴리스틱(heuristic)은 경험에 기반하여 문제를 해결하거나 학습하거나 발견해 내는 방법을 말한다. 전산학 등 과학분야에서는 한정된 시간 내에 수행하기 위해 최적의 해 대신 현실적으로 만족할 만한 수준의 해를 구하는 방법이다. 형용사구로 발견적 방법(heuristic method, 휴리스틱 기법)이라고도 한다.

편견은 보통 어떤 판단을 위해서 쓰이는 지식이나 기준을 얘기하는데, 편견의 특징은 경험을 (대체로) 과도하게 확대 해석하거나 과도하게 신뢰한다는 점, 그리고 매우 빠른 시간 안에 판단이 끝난다는 점에 있다. 이게 휴리스틱이 아니면 무엇인가?

뛰어난 개발자를 구분하기 위해 더 엄정하고 확실한 절차가 있을 수 있겠지만, 뛰어난 개발자인지 확신하기 위해 10년이 걸린다면 차라리 부정확한 편견에 기대는 게 더 낫다고 본다. 애초에 뛰어난 개발자를 구하기 위한 방법을 다루는 저런 글에서 편견이 빠질 수도 없으며, 편견이 빠졌다면 오히려 저 글은 욕은 덜 먹었을지언정 어떠한 유용성도 찾을 수 없었을 거라고 본다.

저 글에 냉소적으로 반응하게 되는 이유는 저 글의 내용이 편견으로 가득찼기 때문이 아니라, 저 글이 제시하는 편견/휴리스틱의 성능, 즉 예측력이 떨어진다고 보기 때문이다. 저 글에 머리가 차갑게 식으며 반발감이 든다면, 그 이유는 저 조건에 부합하지 않으면서도 뛰어난 개발자들, 혹은 저 조건에 부합하는데도 형편없는 개발자들이 머릿속에서 퍼뜩퍼뜩 생각나기 때문이다. 가령 프로그래밍 언어가 중요하지 않다고 주장하길래 코딩을 시켜봤더니 C밖에 모른다고 하고 코드도 대학교 과제 수준을 못 벗어나던 사람(아 그래서 프로그래밍 언어가 중요하지 않다고 주장했구나?), 키보드는 커녕 일체의 컴퓨터나 가젯에 관심이 없지만 귀신 같이 코딩하던 오픈 소스 개발자(이런 사람 생각보다 많다), 몰스킨이나 만년필은 커녕 tangible한 어떤 종류의 노트나 펜도 쓰지 않고 오로지 디지털 디바이스로만 메모하고 시시각각 그것을 빠르게 검색해내고 일을 훌륭하게 처리하는 프로그래머 등.

나는 편견이 유용하다고 믿는 편이라 예측력이 뛰어나다면 그 편견을 기억해두고 나도 활용하는 편이다. Paul Graham이 초기에 쓴 몇몇 글들은 훌륭한 프로그래머(Paul Graham은 ‘해커’라고 표현한다)에 대한 편견으로 가득찬 글이지만 그 편견이 유효한 수준으로 예측력을 갖기 때문에 동료 프로그래머들로부터 여전히 즐겨 인용된다. 내가 블로그에 써왔던 글 역시도 편견에서 자유로울 수 없다. 하지만 나는 내가 쓴 글들이 최소한의 예측력을 가지고 있다고 믿기 때문에 그런 글을 썼다.

사실 편견/휴리스틱은 그걸 학습시킨 경험과 기준이 중요한데, 아마 저 글이 담은 편견이 성능이 떨어지는 이유는 저 글을 쓴 사람이 어쩌다 편향된 경험을 했거나(예를 들어 SI에서만 일을 해왔다거나), 애초에 ‘뛰어난 개발자’에 대한 기준 자체가 나나 내 주변 사람들과 많이 달랐기 때문일 것이다. 실제로 개발자가 아닌 사람들 입장에서의 뛰어난 개발자는 개발자 사이에서의 뛰어난 개발자와 다른 사람을 가리키는 경우가 꽤 많다. 개발자끼리는 개발자가 만든 결과물 중에 코드 자체도 그 개발자를 평가하는데 크게 작용하기 때문에 코드 자체에는 접근하지 못해서 평가에서 제외되는 비개발자들과는 판단 근거가 달라진다. 결과물이 잘 작동하고 일정도 여유있게 미리 끝냈고 설명서도 잘 써놨으면 일단 그것만 봐서는 뛰어난 개발자일 확률이 높다. 그런데 동료 개발자가 나중에 유지보수를 위해 그 사람의 코드를 까봤더니 마치 일부러 난독화한 것과 같은 읽기 매우 어려운 코드가 나왔다면 동료 개발자들끼리는 그 개발자는 더이상 그리 뛰어난 개발자 취급을 받지 못하게 된다. 이렇게 같은 개발자를 보고도 다른 판단을 하므로 경험 자체가 편향되지 않았다고 하더라도 다른 기준으로 인해 다른 편견을 발전시켰을 수도 있다.

마지막으로 나는 저 글에 제시된 기준으로 내가 아는 개발자들을 분류해봤을 때 내가 정말로 뛰어난 개발자로 판단하는 사람은 한명도 생각나지 않았다는 점을 언급해야겠다.