본문 바로가기

IT이야기

프로그래머 분류 - 13가지

Code Craft 뛰어난 코드 작성을 위한 실천 지침에서 재미난 부분을 발견해서 요약 인용한다.

프로그래머 분류 - 408쪽

이 책에서 제일 재미있는 부분이다. 프로그래머를 프로그래머의 시각에서 13가지로 분류해서 각각에 대한 설명과 강점, 약점, 우리가 여기에 속한다면 해야 할일, 이들과 함께 일하는 방법을 설명하고 있다. 책에는 다 있고, 여기서는 설명만 있다. 난 어디에 속할까?

열성적인 코더

열성적인 코더는 재빠르고 쏜살 같습니다; 코드 안에서 생각을 합니다. 추진력도 있고, 타고난 프로그래머인 이 사람은 머리 속에 아이디어가 구성되자 마자 코드를 작성합니다. 먼저 뒤로 물러서서 생각하는 법이 없습니다. 그래서 기술적인 스킬은 아주 뛰어남에도 불구하고, 코드에서 진정한 잠재력을 보여주는 일이 절대 없습니다.

코드 멍키

이들은 기초는 튼튼하지만 독창성이 없는 코드를 작성합니다. 자기 일을 할당 받으면 꾸준히 일을 하고, 항상 다음 일을 받을 준비가 되어 있습니다. 머슴처럼 일을 하기 때문에 툴툴대는 프로그래머라고도 알려져 있습니다.
코드 멍키는 성격이 조용합니다. 뛰어난 결과를 내기 위해 열심히 노력하는 것을 싫어하기 때문에 매력적이지 않은 프로젝트로 밀려납니다. 대개 유지보수 프로그래머로 이름을 새기고, 예전의 코드베이스가 계속 작동되도록 만드는 일을 합니다. 개척자들이 흥미진진한 대체물을 작성하기 위해 떠나가 있는 동안에요.
신참 코드 멍키는 시간이 지나면서 훈련을 받으면 배우고 발전하지만, 위험도가 낮은 일을 할당 받습니다. 고참 코드 멍키는 대개 더 이상 발전하지 못하고, 코드 멍키로서 은퇴합니다. 은퇴하는 것을 상당히 행복하게 생각합니다.

권위자
이 사람은 전설적이고 신비로운 천재입니다: 프로그램 마법사입니다. 조용하고 나서지 않는, 어찌 보면 약간 기묘한 경향이 있습니다. 탁월한 코드를 작성하지만 평범한 사람들과는 의사소통이 잘 되지 않습니다.

권위자는 혼자서 근본이 되는 중요한 일을 합니다: 프레임워크, 아키텍쳐, 커널 등등. 그리고 동요들로부터 마땅히 받아야 할 존경을(그리고 경외를) 받습니다.

권위자는 전지전능하기 때문에 모든 것을 알고 있고, 모든 것을 볼 수 있습니다. 기술적인 논의를 할 때마다 현명한 모습으로 나타나서, 자기의 전문가적인 의견을 내놓습니다.
되다만 권위자
되다만 권위자는 자기가 천재라고 생각합니다. 그런데 아닙니다. 아는 게 많은 것처럼 말하지만 쓰레기만 한 무더기입니다.
아마도 이 사람이 가장 위험한 유형의 코드 멍키일 것입니다; 피해를 입기 전에는 분간하기 어렵습니다. 그럴싸하게 말하고 자신감에 차있기 때문에, 관리자는 이 사람이 천재라고 생각합니다.
일반적으로 되다만 권위자는 진짜 권위자보다 목소리가 큽니다. 자화자찬을 많이 하고, 자만심이 강합니다. 자기 자신을 권위있는 위치에 올려놓습니다.

거만한 천재

이 친구는 권위자의 미묘하지만 중요한 변종입니다. 킬러 프로그래머인 이 사람은 빠르고, 효율적일 뿐만 아니라, 고품질의 코드를 작성합니다. 이 사람도 권위자만큼은 아니지만 훌륭합니다. 하지만 자신의 스킬에 대해 너무너무 잘 알고 있기 때문에 건방지고, 생색을 내고 품위가 없습니다.
이 천재는 못 말릴 정도로 논쟁을 좋아하는데, 그 이유는 보통 자기가 옳기 때문입니다. 그리고 이 사람은 항상 다른 사람의 잘못된 의견 위에 자신의 올바른 관점을 알리고, 장려합니다. 그런 일에 익숙해져 있습니다. 가장 열 받는 일은 대부분의 경우에 이 사람이 옳다는 것이고, 그래서 당신은 이 사람과 하는 모든 논쟁에서 질 수 밖에 없다는 점입니다. 이 사람은 자기가 옳지 않을 경우에는 자기가 옳은 것으로 논쟁의 주제가 옮겨갈 때까지 계속 말을 합니다.

카우보이

카우보이는 적극적으로 힘든 일을 피해 다니는 나쁜 프로그래머입니다. 이 사람은 자기가 찾을 수 있는 꼼수를 모두 다 사용합니다. 어떤 사람은 이 친구를 해커로 잘못 분류하지만, 이 단어의 고전적 의미에서 바라보면 이 친구는 해커가 아닙니다. 해커는 기크들 사이에서 영웅적인 코더를 자랑스럽게 묘사하기 위해 사용했던 용어입니다.
카우보이는 코드 안으로 직접 다이빙을 하고, 당면한 문제를 풀기 위해 필요한 최소한의 일만 합니다. 그 일이 아주 좋은 솔루션인지, 코드 구조를 손상시키는지, 미래의 요구사항을 만족시키는지 신경을 쓰지 않습니다.
카우보이는 자기에게 주어진 일을 빨리 끝마치고 다음 일로 넘어가고 싶어서 안달을 합니다. 만약 이 사람이 개발 프로세스에 대한 글을 읽은 적이 있다면 스스로 이것을 기민한 프로그램이라고 부르겠지만, 사실은 그냥 게으른 것입니다.

계획가

계획가는 자기 할일에 대해서 너무 많은 생각을 해서, 이 사람이 코드 작성을 시작할 때쯤이면 프로젝트는 이미 끝나있을 것입니다.
미리 계획을 하고, 응집력 있게 설계해야 하는 것은 사실이지만, 이 친구는 자기 일이 끝날 때까지 뚫을 수 없는 딱딱한 껍질을 만들고, 그 안에 들어가서 모든 외부 세계와의 접촉을 거부합니다. 그러는 동안 이 사람 주변에 있는 모든 것이 바뀌고 맙니다.
이 사람은 가방 끈이 길기 때문에 많이 연구하고 많이 읽습니다. 흔히 볼 수 있는 이 부류의 아종으로는 프로세스 위니가 있습니다. 프로세스 위니란 "적절한 개발 프로세스"를 잘 알고 있지만, 데드라인에 맞추거나 일을 끝마치는 데 약한 사람을 말합니다.(프로세스 위니는 결국 중간 관리자가 된 다음에 잘립니다.)
노친네

이 선배님은 보수적인 생각을 가진 고참 프로그래머입니다. 의자에 기대고 편하게 앉아서 이 분이 말씀하시는 "옛날에는 말이지" 추억담을 들으십시오. 정수 덧셈 연산을 하기 위해서 펀치 카드와 메모리 용량이 적은 기계를 사용하던 때의 이야기를요.
이 고참은 다음 중 하나의 상태일 것입니다: 자기가 아직 가장 좋아하는 일을 하고 있다는 사실에 만족해하고 있거나, 무수히 많은 진급 기회를 놓친 사실에 비통해하고 잇거나, 이들은 모든 것을 보아왔고, 모든 답을 알고 있기 때문에 새로운 트릭은 배우려고 하지 않습니다.(이 사람은 배워야 할 새로운 것이 아무 것도 없다고 말을 할 것입니다; 옛날과 똑같은 생각을 포장만 다시 했을 뿐이야). 이들은 새로운 언어 배우기를 달가워하지 않스빈다: "나는 c++는 필요 없어. 어셈블리로 완벽하게 할 수 있으니까, 그건 됐네"
이 고참은 바보 같은 짓을 용서하지 않습니다. 다소 까다롭고 쉽게 짜증을 냅니다.
광신도

광신도는 세뇌된 종교인이고, BigCo제품은 모두 뛰어나다고 맹목적으로 믿는 사도입니다. 10대 소녀가 록 스타를 숭배하듯이, 프로그래머에게도 우상이 잇습니다. 열정에 휩싸인 이 광신도는 무보수로 테크놀로지 복음을 전파하는 일을 떠맡습니다. 그리고 자기에게 주어진 모든 일에 BigCo 제품을 포함시키려고 합니다.
광신도는 BigCo를 너무나 추종하기 때문에 다른 모든 접근 방법을 배제하고, 대안에 대해서는 거의 알지 못합니다. BigCo의 현재 제품에 있는 뛰어나지 않은 모든 특징은 다음 버전에서 확실하게 고쳐질 것이라고 생각합니다. 그러니까 새로운 버전이 나오자마자 바로 업그레이드해야 한다고 생각합니다.
일편단심 프로그래머

이 사람은 전형적인 기크(geek)이고, 기술을 먹고 호흡하는 친구입니다. 기술이 자기 인생의 전부이고, 아마 자다가 꿈도 꿀 것입니다.
일편단심 프로그래머는 놀라울 정도로 하나 밖에 모릅니다. 집에 일을 가지고 가서, 시스템 전체를 설계하고 작성해서 돌아옵니다. 위험한 버그는 모두 정정하고, 프로젝트의 나머지 구현 방법도 계획해서 돌아옵니다. 당신이 아침식사를 하기도 전에 모든 일을 끝내놓습니다.
게으름뱅이

게으름뱅이는 일하기 싫어하고 게으름을 피우는 사람입니다. 하지만 이 사람은 아주 많은 일을 하고 있는 것처럼 보이는 방법을 배웠기 때문에 감지하기가 어렵습니다. 이 사람이 하는 "설계"는 혼자 놀기이고, 이 사람이 하는 "연구"는 웹 사이트에서 빠른 속의 자동차를 보는 것이고, 이 사람이 하는 "구현"은 사적인 일을 하는 것입니다. 게으름뱅이는 적극적으로 숙제를 피합니다. (아, 너무 바빠서 못했어요.)
더 미묘한 게음름뱅이는 자기가 하고 싶어하는 일이나, 해야 된다고 생각하는 일을 아주 조금만 할 것입니다. 자기가 하기로 되어 있는 일을 하는 것이 아니라요. 끊임없이 일을 하고 있음에도 불구하고 일을 완료하는 법이 절대 없을 것입니다.
게으름뱅이는 즐길 줄을 압니다. 사교 모임에 지나칠 정도로 자주 나가고, 책상 밑에서 잠을 자고 있는 모습으로 발견될 수도 있습니다. 이 사람은 점심시간에 술집에 가는 것을 제외하고는 대부분 커피로 식사를 때웁니다.
이 친구는 폐인이 될 수 있습니다; 프로젝트가 아주 많이 실패하면 일할 의욕을 완전히 잃을 테니까요.
마지못해 하는 팀장

조직에는 전형적으로 이런 사람이 있습니다; 이 사람은 더 이상 진급할 기술직이 없어서 팀장으로 승진한 개발자입니다.
누가 봐도 이 사람은 그 일을 하기 싫어하는 것이 눈에 확 들어옵니다. 리더로서 가져야 할 올바른 스킬도 없고, 주어진 임무를 따라가기 위해 무진 애를 씁니다. 이 사람은 프로그래머이고, 프로그램을 작성하고 싶어 합니다. 이 사람은 선천적으로 사람들을 조직하거나 관리하는 사람이 아닐 뿐더러 의사소통도 잘 못합니다.
대부분의 프로그래머는 리더 역할을 엄청나게 못합니다. 정말 우수한 소프트웨어 팀장은 거의 없습니다; 그럼 팀장이 되기 위해서는 특별한 기술적 스킬과 조직 운영 스킬이 모두 필요합니다. 마지못해 하는 팀장은 상당히 부드러운 태도를 가졌고 우유부단합니다 - 그렇지 않으면 그 일을 맡으라고 설득되었을 리가 없겠지요. 이 사람은 개발팀과 관리부 사이에 끼어서 프로젝트가 지연되고 소프트웨어의 품질이 떨어지는데 대한 책임을 집니다. 그러면서 점점 더 얼굴에는 난감한 표정이 피어나고, 마침내 모든 기력을 소진하게 됩니다.

이상적인 프로그래머

전설 속의 이상적 프로그래머는 부분적으로 다음과 같습니다.
정치적이고(politician)
대인관계가 좋고(Relational)
예술적인(Aristic)
기술상의 천재(Technical genius)

여러분은 어떤 프로그래머입니까?

'IT이야기' 카테고리의 다른 글

spring framwwork  (0) 2007.12.10
Code Craft 뛰어난 코드 작성을 위한 실천 지침  (0) 2007.12.06
수도쿠(sukodo) 알고리즘  (0) 2007.06.07
[20061108] apache ab를 이용한 벤치마크  (0) 2007.05.02
검색엔진 관련 자료  (0) 2007.02.13