2011/02/14 09:30
RL.T hink.
초보자 (보통 뉴비라고 부르는) 들이 아무리 애를 써도
구루를 따라잡을 수 없는 이유.
구루들이 개발을 잘 하는데는 여러가지 이유가 있다.
그중 한가지, 그리고 절대적인 이유가 바로
'경험'이다.
수많은 문제를 풀어가며 쌓인 경험들,
그 많은 경험이 쌓임에 따라서 쌓인 내공이라는 것은
절대로 초보자들, 그리고 그 구루보다 실력이 없는 사람들이
쉬이 따라잡을 수 없는 것이다.
그런데 이 내공이라는 건 대체 뭘까?
어떤 Domain Specific한 문제에 있어서
구루의 내공은 절대적인 힘을 발휘한다.
Domain Specific이라는 것은 꽤나 다양한 의미를 지니는데,
예컨데 개발 플래폼일 수도 있고,
언어에 대한 지식일 수도 있으며,
개발 방법론에 대한 사유일수도 있다.
물론 특정 분야에 대한 전문적인 지식을 포함해서 말이다.
초보자들이라고 해도
개발 플래폼에 대해서 남들에 비해 세배 더 열심히 공부하고,
언어에 대한 지식은 도서관을 섭렵했으며,
개발 방법론에 대해서는 이름만 대면 하루종일 썰을 풀 수도 있고,
심지어는 특정 분야의 종사자도 혀를 내두를 만큼 빠삭할 수도 있다.
그런데 왜 초보자들은 절대로 구루의 내공을 따라잡을 수 없는걸까?
우리는 절대로 남의 코드를 읽지 않는다.
사실 현업에서 일하면서 남의 코드를 읽을 일은
기존에 다른 사람이 만들어놓은 소스코드를
버그 혹은 수정사항의 발생으로 유지보수할 때 뿐이다.
이렇게 (어쩔수 없이) 타인의 코드를 읽어야 할 때에도
대부분의 사람들은 그저 자신과 코딩 스타일이 다르다는 이유로
투덜거리고는 한다.
물론, 실제로 쉽게 풀 수 있는 문제를 굉장히 지저분하게 풀어놓은 경우도 있으나
이 또한 기존에 개발을 했던 개발자의 사유의 산물이다.
이렇게 기존 사람이 문제를 풀기 위해서 밟아온 과정은
전혀 이해하려고 하지 않은 채,
그저 스타일이 다르다는 이유로, 쉬이 이해할 수 없다는 이유로
그 코드는 '쓰레기' 취급을 받는다.
언제나 프로그래밍은 결과 지향적이기 때문인지도 모른다.
과정이야 어쨌든 사실 엔드 유저에게 보이는 모습은
그냥 결과물로서 말한다.
개발자들도 어차피 최종 산출물을 뽑아내야 하는 사람들이기에
더더욱 결과물로서 말한다.
그들은, 끊임없이 사고한다.
그리고 절대로 그 사고를 타인과 나누지 않는다.
소스코드를 읽어보면 알겠지만
History가 그대로 남아있는 소스는 대부분 없다.
그저 알고리즘 수정. 이런 주석만 붙어있을 뿐이다.
이런건 SVN같은 형상관리 프로그램으로 관리하면 된다지만,
미안하지만 SVN의 History Source를 읽는 케이스는
이 버그가 대체 누구의 잘못인가를 따지기 위한 상황 말고는 못봤다.
무언가를 배우기 위해 가장 빠른 방법은
다른사람이 어떤 과정을 밟았는지에 대해서 보고, 따라하고, 습득하고,
고쳐나가고, 직접 만들어보고, 내것으로 만드는 것이다.
우리는 , 보고, 따라하고, 습득하고, 고쳐보고..는 모두 다 생략한채로
언제나 자신의 취향이 100% 반영된 바퀴를 새로 발명한다.
그리고 기뻐한다.
서점에 가면 수많은 자기개발서와 성공서들이 쌓여있다.
그런데 유난히 IT 분야에는 그저 영웅 만들기에만 치중할 뿐, 이런건 거의 없다.
이것이 실용학문의 한계라고 하기에는 뭔가 우습다.
원래는 사유학문인 경제분야에서는 이런책이 끝도 없이 쏟아져 나오는데,
실용학문인 IT분야는 그저 자신의 방법론만 설파할 뿐
그 방법론이 어떠한 사고과정을 걸쳐 펼쳐졌는지는 절대 말하지 않는다.
Agile에서는 말한다. ProtoType을 만들고,서서히 뜯어고쳐라.
한국의 현업에서는 말한다. ProtoType을 만들어라. 그리고 프로젝트 종료.
IT는, 절대로 타인의 경험을 공유하지않는다.
소스포지등에 보이는 수많은 프로젝트들 중에서
그 많은 소스코드들 중에서
자신이 개발하는 분야에서 1등인 오픈소스 프로그램의 소스코드를
읽어본 사람은 몇이나 될까.
다른사람의 생각의 과정과 그 결과물이 도출된 원인을 배우지 않는 한,
뉴비는 스스로 깨달아갈 뿐, 절대로 구루의 옆에 설 수 없다.
2011.02.14. By RL.T
관련글
[RL.T hink.] - 지식 권하는 사회..슬프다.

