자격증과 세미나, 프로그램 이야기를 주저없이 써봅니다.

Since 2008. 10.

개인적 이야기/발자취 & 생활 이야기

[칼럼] 개발자의 등급 나누기에 대한 개인적인 짧은 생각

럭키맨 운수 2009. 2. 13. 15:33
이 칼럼은 개발자 천국을 꿈꾸는 최강의 IT 포탈 DEVPIA의 김수동님이 작성하셨습니다.

 

초급, 중급, 고급, 특급...?
개발자의 등급은 어떻게 나누는 걸까요? 개발자 고충상담에 어느분께서 관련질문을 올리셨는데, 이에 대한 의문이 생겨서 짧은 지식에 적절치못한 글실력이지만, 한번 시도해봤습니다. 아무래도 등급을 나누기 위해서는 등급을 나누는 기준이 있어야 겠고, 등급을 나누는 기준은 특정 직업에서 중요하게 여겨지는 부분들을 중점으로 봐야겠죠. 대략 10가지 정도로 생각나는대로 나눠봤습니다. 물론, 이런 구분은 철저히 개인적인 기준에서 제 맘대로 나눴음을 미리 말씀드립니다.

 

1. 수학적 사고방식(문제를 추상화 시켜서 적절한 단계를 거치면서 해답을 만들어 낼 수 있느냐)
사실 수학은 추상화와 관계된 우리가 살아가는데 있어서 꼭 필요한 학문입니다. 우리나라의 잘못된 교육으로 인해서, 왜 수학을 중요하게 배워야 하는지 보다는 공식을 외우고, 그 공식으로 어떻게 문제를 푸는지만 하다보니 수학은 시험볼때 아니면 필요없는 학문이 되어버렸습니다. 수학은 실생활의 문제를 문제해결을 위한 것들만 남기고 최대한 단순화&추상화 시켜서 종이위에 옮겨놓고 문제해결을 모색하는 학문입니다.

 

예를 들어서, 쾨니히스베르그의 다리 문제같은 경우에 그 문제를 직접 몸으로 풀려면, 쫌 괴롭고, 지도를 펼쳐놔도 필요한거 외에 너무 많은 정보가 있습니다. 그래서 문제해결을 위해서 섬은 그냥 동그란 원으로, 다리는 원을 연결하는 직선으로 종이위에 그리고 문제를 해결합니다. 즉, 다리와 다리가 잇는 육지외에는 문제해결에 중요한건 없는 셈이죠. 필요한것을 추려내고, 나머지는 빼버리는 전략인 추상화는 컴퓨터 공학뿐만아니라 다른 학문에서도 굉장히 중요한, 어쩌면 우리가 인생을 살아가는데 있어서 중요한 능력이라고 할 수 있겠습니다.('사고력을 키우는 수학책', '생각의 탄생'이라는 책에 잘 나와 있습니다)


프로그래밍도 마찬가지지요. 문제를 해결하려고 분석을하고 알고리즘을 짜다보면, 전혀상관없는 문제때문에 그거 해결하느라 시간을 허비하는 경우도 있고 문제를 파악하지 못해서 뭘 해결해야 하는건지 파악을 제대로 못하는 경우도 있고, 논리적으로 단계를 잘 못밟아서 계속 다시짜고다시짜고 하는 경우가 나옵니다. 수학&과학전공자들 중엔 컴퓨터공학을 우습게 보는 사람들도 있습니다. 물론, 이야기할 가치도 없는 문제이긴 하지만(그들의 무지에 기인한 거죠-_-) 개인적으로 수학적 사고가 기반이 되는 컴퓨터 프로그래밍에 수학능력자들이 좀 더 유리한 것은 부정하기 힘든거 같습니다.


2. 검색능력(모르는 문제에 부딪혔을때, 얼마나 빠르고 정확하게 필요한 정보를 찾을 수 있느냐)
정보가 방대해질 수록 거기엔 중요하지 않은&잘못된 정보의 수는 늘어납니다. 물론 비율이 유지되느냐에 대한 해답은 전문적인 연구를 하시는 분들께서 대답해주시겠지요-_-.

하지만, 정보가 방대해질수록 올바른&유익한 정보의 수도 역시 같이 늘어납니다. 그리고 정보를 잘 찾을 수 있는 사람들에겐 다른&고급 분야에 대한 진입장벽은 더 낮아지는 것이구요. 얼마나 빠르고 정확하게 많게 자신이 원하는 정보를 찾을 수 있느냐 하는 것은 이제 매우 중요한 능력이 된지 오래지요. 커뮤니티에 답변을 올리고 기다리는 것도 매우 중요한 수단입니다만 이미 같은 고민을 하고 있는 사람들이 세계적으로 많다고 봤을때, 자신이 원하는 답을 더 빨리&풍부하게 찾을 수도 있겠지요.

 

3. 응용능력(기본줄기만 있는 코드에서 변경가능한 부분을 파악해내서 필요한대로 응용이 가능한가)
1번과 관계가 있는 부분이긴하지만, 확장되는 면이 있어서 따로 빼내었습니다. 사실 응용이라는 건 기본에 대한 이해, 변경가능점과 하나의 점으로 볼 수 있는 기능들의 상호관계를 파악하는 능력이라고 생각합니다. 물론 기본에 대한 이해는 없어도 나머지 두 부분의 파악이 뛰어난 사람이라면, 다른 사람의 코드를 가져와서 자신에게 맞게 금방 응용할 수 있습니다. 물론 그렇게 본다면, 코드의 동작을 머리속에서 이미지화 할 수 있는 능력(추상화랑은 또 조금 다른듯.)과 코드를 잘 읽는 능력이 필요하겠죠. 아무튼, MSDN이나 기타 사이트의 튜토리얼을 보면 딱 기본줄기만 나와있습니다. 거기서 어떻게 자신이 원하는 기능으로 응용할지는 개인의 역량에 달린 것이겠죠.


4. 커뮤니케이션능력
(효율적 의사 교환을 위한 수단 - 모델링언어들이나 커뮤니케이션에 영향을 주는 요인들에 대한 이해
상대방을 존중하는 커뮤니케이션)
굉장히 중요한 분야인데요, 아는 사람들은 다 알고 모르는 사람들은 전혀 모르는 것이 바로 피플웨어지요. 그리고 알더라도 '이상과 현실'이라는 편리한 도피수단을 사용해서 논의자체를 안드로메다로 끌고가려는 분들도 있습니다.(이상과 현실의 차이는 분명히 있지만, 시도자체를 거부하는 분들을 찝는 것임.-_-)


같은 말을 해도 '아'다르고 '어'다르다는 건 누구나 알지만, 실제로 대화를 하거나 하면 '아'하고 '어'는 똑같은 경우도 굉장히 많습니다. 얼마든지 좋은 방향으로 대화를 통해서, 시간은 조금 더 걸리는 것 처럼 보이더라도 원하는 바에 최대한 가까이 갈수도 있는데 그냥 일방적인 의사소통이나 자존심싸움으로 번지는 경우가 많죠. 사실 많은 대화를 하지 않고 얼렁뚱땅 넘어가버리면 나중엔 의사소통에 시간이 더 들거나, 안좋은 감정이 쌓여서 발목을 잡는 경우가 더 많죠.

 

현명하게, 좋은 표현으로 서로의 의견을 의견으로 인정하면서 의견을 모은다면, 궁극적으로 의사소통에 걸리는 시간은 더 빨라지겠죠. 사실 신뢰라는 것은 눈에 보이진 않지만, 신뢰가 구축된 사람들간의 의사소통은 술술~ 넘어가는 면이 있죠.

 

다른 사람들 이야기를 좀 들어보면 개중에는 자신의 목표를 팀원전체의 목표인양 이야기하는 분들도 있겠죠. 비전을 공유하고 합의하는게 중요하다는 건 누구나(모르는 소수빼고) 지식으로 알고 있지만, 외워서 그럴까요? 지식이 지혜로 연결되지 않는 경우가 많은 것 같더군요.


5. 경험, 도메인에 대한 지식(특정 도메인의 업무특성 이나 흐름에 대한 이해)
경험이 없는 지식이야 말로 머리속에 그냥 저장된 거에 불과하겠죠. 다양한 경험을 통해 그 지식이 이해되고, 그 지식이 또 다른 생각의 전환&발전의 기반이 되는 것이겠죠. 그리고 경험을 통해 단편적인 지식들이 하나로 꿰어지는 '깨달음'이 오게되면, 이해의 차원이 또 한차원 올라가는 것이겠죠.
그리고 경험과는 별도로 특정 도메인의 업무흐름, 현업들의 특성, 애로사항, 특수성등을 잘 이해하는 것 역시 전문가라는 칭호를 듣기에는 필수적인 요소겠지요.


6. 인맥
뭐 특별히 할말이 없을 것 같습니다. 뛰어난 사람들은 보통 뛰어난 사람들과 친분이 있더군요. 그래서 더 시너지 효과가 나면서 교류를 하는 걸 보면... 역시 유유상종인가 봅니다.


7. 공부철학
이 바닥이 그렇듯이 스스로 계속해서 공부안하면, 재미도 없고 감동도 없이 힘만든 분야가 되기 십상이지요. 그래서 공부를 할때 자신만의 철학이 있어서, 남의 도움없이도 다른 사람의 동기부여 없이도 계속해서 공부를 해나갈 수 있어야 합니다. 상향식이던 하향식을 지향하던, 자신만의 공부철학이 분명하고 그 공부철할이 충분히 납득할 만하고 효율적이어야 할 것입니다.


8. 호기심
7번과 어느정도 연결되는 것이죠. 이분야에 대한 호기심이 없다면 고수가 되는 길은 무척이나 힘들다고 생각합니다. 시간도 오래걸릴거라고 생각하고요. 아주 어린나이에 세계적인 기업을 일으킨 사람들은 오직 호기심하나로 이렇게저렇게 하던 사람들이 거의 대부분이라고 생각합니다. 투자한 만큼 받는거죠. 요즘 아웃라이어라는 책에서 나오더군요. 1만시간의 법칙? 물론 이 연구결과는 꽤 오래전에 나온건데요. 물론 이 1만시간도 어떤자세로 하느냐에 달려있다고 생각합니다만, 아무래도 호기심이 없으면 어릴때부터 1만시간 못하겠죠? 커서도 물론 하기 힘들구요.


9. 정리
자신의 경험을 잘 정리해놓는 것 역시 매우 중요한 일이겠죠. 개인적으로는 다른 사람들과 나누지 않는 사람은 실력이 좋아도 고급, 특급으로 인정하기 힘들다고 생각합니다. 나눔의 장점은 꼭 받는 사람만이 가져가는 건 아니죠. 그래서 개인적으로는 뭔가 발견을 했을때 그걸 명확하고 깔끔하게 다른 사람에게 전달하는 것도 중요한 능력이라고 생각합니다.


10. 명확한 목표
명확한 목표가 있는 사람이 더 높은 곳으로 올라갈 가능성이 높다고 생각합니다. 예를 들어 짬이 안될때 회사에서 고생을 하는데 딱히 목표가 없이 고생하는 건 그냥 고생하는거고, 목표가 있고 거기까지 가기위한 과정으로 고생을 하는건 또 다른 의미로 다가오고 결과또한 다르겠지요.

 

- 재미삼아 제 맘대로 간략하게 그려본 능력치...(ASP.NET 차트컨트롤 께서 수고해주셨습니다.)

 

아래는 그저 코딩잘하는 친구.(초급이 아닐까...)

 

아래는 중급개발자(위의 그래프보다 코딩능력을 떨어질 지라도 더 높은 중급으로 칠수도 있다고 생각합니다.)

 

아래는 고급 or 특급 개발자

전부 다 꽉차면 그건 신의 영역 이겠죠.

 

그냥 호기심을 해결하기 위해서 정리해본 글이라 잘 정리가 된거 같지는 않네요. 논의를 할여지도 많다는 생각이 들구요. 다른 분들은 어떻게 생각하시는지 이야기를 더 해봤으면 좋겠습니다.