Categories
asside quote

뛰어난 프로그래머의 유형

뛰어난 프로그래머에 대한 생각. 크게 분류하면 두가지 종류의 사람들이 있는데…

첫째 부류는 <디자인 패턴>파. 이 부류는 코드의 퀄리티, 문서화, long term maintenance를 중요하게 생각. 문제에 딱 맞는 디자인 패턴을 가져와 “아름다운” 코드를 만든다. Unit 테스트도 충실해서 디플로이 했을때 버그가 나오는 경우가 거의 없다. 워라벨이 중요해 심하게 일하지 않는다.

<디자인 패턴> 파의 문제는 “속도”. 문제는 제대로 해결하지만 진행 속도가 느리다. 당장 서버가 불타고 매니저 속이 타들어가도 제대로 문제를 해결하길 원한다. 제대로 해결하면 그런문제는 더 안발생할거라 얘기하지만, 현실은 꼭 그렇지 않다. 모든 문제가 예측가능하진 않기 때문에.

둘째 부류는 <해커>파. 불타는 문제에 뛰어들어 핵심을 파악하고 코드 몇줄로 해결하는 열정파. 필요하면 리눅스 커널까지 다 파고 들어간다. 서버와 매니저 마음이 불탈때 빠른 시간안에 식혀준다. 컴퓨터 자체를 좋아하고 워낙 많이 아는 사람들이다.

<해커>파 문제는 팀에 가는 long term 영향. 패턴보단 찌르는 핵심을 원하기 때문에 코드 퀄리티를 낮출수 있다. 프로세스를 무시하고 문제를 해결하기 때문에 QA, TPM등 그룹이 싫어한다. 문서화를 안 좋아해 팀에 지식이 잘 전달되지 않는다. 밤 늦게까지 일하기 때문에 팀의 워라벨에 영향.

내가 생각하는 가장 뛰어난 사람들은 <패턴>과 <해커> 경계를 넘나드는 <적응형> 사람들. 상황에 따라 본인의 성향을 적응(adapt) 시키며 한 성향에 머물지 않는다. 예를들어 <해커> 역할로 미친듯이 문제를 해결한후 그 과정을 문서화해 지식전달에도 최선을 다한다.

때로 long-term으로 해결할 “좋은 문제”들은 <해커>의 기질로 깊이있게 들어갈때 “발견”한다. 그때 발견한 문제들을 팀에 전달하고, <패턴> 파의 사람들이 제대로 문제를 해결할수 있도록 가이드한다. 팀에 공헌이 가장 큰 사람들은 좋은 문제를 발견하는 <적응형>이다.

https://twitter.com/sm_park/status/1288901023189184512