‘소프트웨어 개발이라는 긴 여로의 시작, 생각하는 프로그래머의 길은 어떻게 가야 하는가.’
이 책은 SW 마에스트로 과정에서 만난 멘토님의 추천으로 읽게 되었다. 사실 그동안 개발 서적이라고 하면 기술 위주의 책들만을 읽어 왔기에, 개발자의 삶에 대한 책은 처음 읽는 것이었다 - ‘좋은 프로그래머 되기’ 라는 책도 읽긴 했지만 이 책은 좋은 코드 작성 / 개발에 관련된 내용이므로 제외! - .
특히 인상적이었던 것은 소프트웨어 개발자의 삶을 장인이 되기 위한 길에 비유하며, 견습공 - 숙련공 - 장인 으로 설명하는 부분이었다. 도제식 개발인재 양성을 모토로 하는 SW 마에스트로 과정과 몹시 흡사(노리신 것인가…!)한 점이 흥미로웠다. 개발자가 커리어를 쌓으면서 만날 수 있는 수많은 문제 상황들에 적합한 대처법을 여러 패턴으로 설명해 놓았는데(원제 : ‘Apprenticeship Patterns’), 역시 무척이나 개발자스러운 방식이라고 느꼈다.
그 중 인상적인 몇몇 패턴을 적어 보겠다.
흰 띠를 매라
당신은 첫 번째 언어를 어느 정도 능숙하게 사용하게 되었다. 허나 새로운 기술을 익히려고 하니 예전만큼 속도가 나지 않고, 자기 개발이 교착 상태에 빠진 것은 아닌가 두려워진다.
- 해결책 : 새로운 상황에 들어설 때는, 학습을 통해 얻은 자신감은 그대로 두면서 전에 얻은 지식들은 한 켠에 밀어두어라.
이건 꽤 흥미로웠는데, 내가 자바스크립트를 쓰다가 자바를 처음 배웠을 때 생각이 났기 때문이다. 처음엔 자바의 길고 불필요해 보이는 코드들, 엄격한 타입 체킹 등이 굉장히 쓸모 없다고 생각했었다. 하지만 자바스크립트에 대한 지식들, 코딩 습관들을 내려놓고 자바를 다시 처음부터 배우기 시작하자, 자바만이 가진 장점들 - 완벽하게 객체지향적으로 작성 가능한 코드, 주석이 필요 없는 분명한 타입들, 프로젝트가 커짐에 따라 더욱 빛을 발하는 엄격함 - 이 보였다.
이 때의 경험으로 나중에 파이썬을 배울 때는 기존의 코드 스타일을 버리고 최대한 ‘파이썬스러운’ 코드를 짜려고 노력했고, 파이썬이 가진 장점과 매력을 보다 빠르게 느끼고 받아들일 수 있었다.
예술보다 기예
고객이 당면한 문제는 이미 검증된 해법이 존재하지만, 이번 기회에 동료들에게 깊은 인상을 심어줄 아름다운 무언가를 만들 수 있을 것 같다.
- 해결책 : 장인정신은 튼튼한 상호 관계에 기초한다. 이기심을 좇지 말고 고객에게 가치를 제공하는데 집중하라.
개발자는 어쨌거나 일종의 기술자로서, 코드의 예술성과 실용성 사이에서 균형을 잘 잡아야 한다는 이야기이다. 자기 기술로 생계를 꾸려야 하는 장인이 굶는다는 것은 어불성설이다.
‘나는 프로그래밍을 공예의 일종으로 여긴다. 공예는 예술의 일종이긴 하나 순수 예술은 아니다. 장식정인 면이 가미될 수는 있겠지만, 공예는 어쨌거나 쓸모 있는 물건을 만드는 작업이다. 하지만 순수 예술은 오직 아름다움을 목적으로 하는 무언가를 만드는 일이다.’
가장 뒤떨어진 이가 돼라
당신은 열정을 드러냈고, 새로운 기술을 배울 기회를 놓치지 않았다. 그 결과 당신의 개발 조직에서 가장 높은 수준에 도달했다. 그러자 더 이상 당신의 배움에 진전이 없게 되었다.
- 해결책 : 주변을 당신보다 뛰어난 개발자로 채워라. 당신이 가장 뒤떨어진 멤버가 되며, 더 성장할 여지가 있는 팀을 찾아라.
사람은 당연히 인정받는 것을 좋아한다. 그렇기에 어떤 조직에세 최고로 인정받게 되면, 더 이상 자리를 옮기며 위험을 감수하고 싶지 않은 것이 당연하다. 하지만 글쓴이는 소프트웨어 장인이 되기 위해 편한 위치에서 벗어날 것을 조언하고 있다. 확실히, 어떤 팀에서 가장 뒤떨어진 위치가 된다면 위기 의식, 자존심 때문에서라도 열심히 공부하고, 주변에 있는 자기보다 나은 개발자에게 배우며 빠른 속도로 성장할 수 있을 것이다. 탁월한 개발자가 되는 길은 정말 쉽지 않다..!
배운 것을 기록하라
당신은 같은 교훈을 계속 되풀이해서 배운다. 새로운 해결책을 도입하면서, 이전에도 같은 방법으로 해결했던 것 같은 기억이 나지만 자세한 내용은 어슴푸레하다. 과거로부터 배우지 못하는 자들은 똑같은 실수를 반복한다.
- 해결책 : 당신이 걸어가는 여정의 기록을 일지나 블로그 등으로 남겨라.
사실 이 패턴은 개발 실력을 쌓는 방법 으로 검색하면 꼭 나오는 내용이다. 그렇지만 행동으로 옮기기는 꽤나 쉽지 않는 패턴이기도 하다. 유명한 개발 블로그들을 보다 보니, 꼭 몇일에 한 번씩 글을 올릴 필요는 없다는 생각이 들었다. 1~2주에 한번이라도 글을 꾸준히 쓰려 한다.