Thoughts2013.12.21 13:48

1. 보통 개발자는 선형적인 일을 하고, 뛰어난 개발자는 지수적인 일을 한다. 


보통 개발자는 대개의 경우 시간을 많이 들이면 해결될 문제를 풉니다. 고급 개발자는 고민하지 않으면 해결되지 않을 문제를 풉니다. 이런 문제로는 (1) 소프트웨어의 구조 (2) 소프트웨어의 성능 등, 고민과 실험과 선택을 요구하는 문제들이 있습니다. 소프트웨어의 패턴을 찾아내는 것은 보통 이런 수준의 개발자들입니다. 고급 개발자들이 프로젝트 초기에 해결한 문제들은 프로젝트의 진도를 획기적으로 개선합니다. 


2. 보통 개발자는 문법 때문에 고민하고, 뛰어난 개발자는 알고리즘 때문에 고민한다. 


보통 개발자에게 중요한 것은 프로그래밍 문법과 그것이 야기하는 오만가지 재미있는 문제일지 모르지만, 고급 개발자가 고민하는 것은 보통 문제의 본질에 더 가깝고, 그것은 보통 수학적인 형태를 띱니다. 그래서 '훌륭한 프로그래머가 되려면 수학을 잘 해야 한다'고 이야기하곤 하죠. 


프로그램 세계에서 이 수학은 보통 알고리즘과 맞닿아 있습니다. 프로그래밍을 공부하면서 알고리즘과 관련된 수학의 중요성을 느껴보지 못한 분이라면, (딱히 수학적인 책은 아닙니다만) "생각하는 프로그래밍"을 추천합니다. 제가 가장 좋아하는 절은, 이진 탐색이 어떻게 발전했는지를 다루는 절입니다. 읽어볼만 합니다. iTunes U의 알고리즘 개론 수업도 괜찮습니다. 



3. 보통 개발자는 남의 솔루션 때문에 고민하고, 뛰어난 개발자는 자기 솔루션 때문에 고민한다.


고급 개발자라면 자기가 주도적으로 설계하고 만든 솔루션이 하나는 있게 마련. 그것이 아무리 작건 간에 그것 때문에 고민하고 있고, 그 솔루션을 사용하는 사람들로부터 다양한 피드백을 받고 있으며, 그 솔루션의 성장을 위해 지속적인 고민을 하고 있다면, 당신은 이미 (초) 고급 개발자입니다. 


4. 보통 개발자는 밥 걱정을 하지만, 뛰어난 개발자는 세상 걱정을 한다.


뛰어난 개발자들이 세상 걱정을 하다 못해 만들어낸 다양한 오픈 소스들이 세상을 어떻게 바꾸어 놓았는지는 이미 잘 알고 계실 것이므로 패스. 


5. 보통 개발자는 버그가 나타나면 괴로워하지만, 뛰어난 개발자는 재미있어 한다.


그리고 이런 경지에 오른 개발자들은 보통 디버거를 사용하기 보다 '증상을 관찰하고 그 원인을 추정하는' 머리속 과정을 더 즐기는 경우가 많습니다. 그래서 코드와 디버깅 아웃풋을 몇 분 정도 바라보다 '거긴가부다'하며 버그를 잡는 일이 많죠. 이런 일은 (1) 자기가 만드는 시스템에 대한 깊은 이해와 (2) 많은 경험이 없이는 불가능하죠. 그러니, 같이 일하다가 이런 개발자를 만났다면 좋은 친구로 삼도록 하세요. 데드라인으로 가는 일이 외롭지 않을 겁니다. 



저작자 표시 비영리 변경 금지
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^