All I Need To Know To Be A Better Programmer I Learned In Kindergarten라는 오래된 글이지만, 훌륭한 프로그래머가 되는 것은 먼 곳에, 어려운 곳에 있지만은 않다는 느낌을 받았다. 기본적인 내용들이지만, 그동안 바쁘다는 핑계로 잊었던 것들을 다시 생각해 보는 계기가 되었다. 그리고 조금씩 먼저 실천해 가는 개발자만이 훌륭한 프로그래머로 되지 않을까? 생각해 보면서 정리해 본다.
프로그래밍은 참으로 복잡한 것이다. 그렇지만, 훌륭한 프로그래머가 되기 위해서 필요한 대부분의 것들은 우리가 어릴때 학교에서 배운 것과 크게 다르지 않다. 즉, 훌륭한 프로그래머는 어릴때 유치원에서 배운대로만 하면 된다는 이야기다.
아래의 리스트에 대한 영감은 Robert Fulghum의 All I Really Need to Know I Learned in Kindergarten라는 에세이에서 많이 왔다.
1. 모든 것을 공유해라.
가능하면 오픈 소스를 사용하고 할 수 있다면 기여까지(contribute) 해보자. 커뮤니티의 집단 지성은 몇몇 대기업의 제한된 비전(생각들)보다는 훨씬 좋다.
2. 공평하게 해라.
다른 기술들이나 프레임워크, 방법론, 그리고 의견들에 기회를 주자. 자신의 선택만(내 방법만) 잘 동작한다고 생각하면 안 된다. 다른 대안들도 잘 동작할 수 있고 열린 마음으로 다른 것들을 알아가는 것도 좋다.
3. 사람을 공격하자 마라.
2번에서와 같이 사람들이 .net이나 Java, PHP를 사용하고 있다는 이유만으로 그들을 공격하지 말자. 때로는 그들이 당신이 생각하는 것보다 훨씬 사용성이 좋고 더 유용할 수 있다. 당신이 그들을 공격하지 않는다면 당신은 그들로부터 더 많은 것을 배울 수 있다.
4. 내가 어지른 것은 내가 정리하자.
잘 동작하는 코드를 배포할 수 있도록 노력하자. QA가 너의 모든 버그를 찾아준다고 생각하면 안 된다. 자주 테스트하고 때로는 치밀하게 때로는 광범위하게 테스트 하자.
5. 내것이 아니면 가지지 말자.
자신이 사용하는 것의 라이센스를 따르자. 절대로 훔치는 것은 안된다. 그리고 나중에 몰랐다고 잡아떼도 안된다.
6. 사람을 다치게 했다면 꼭 미안하다는 말을 하자.
코드 리뷰는 매우 좋은 것이지만, 거의 행해지지는 않는다. 당신보다 경험이 없는 프로그래머에게 가르쳐주는 것은 팀 전체에는 큰 도움이 된다. 사람들을 공개적으로 비난하는 것을 그만하자. 학습은 사람을 경시하는 것이 아니다. 때때로 사람들은 내말을 들어줄 때도 있고 그렇지 않을 때도 있다. 나 자신보다 못하다고 생각되는 사람으로부터 많은 것을 배울 수도 있다.
7. 먹기 전에 손을 씻자.
코드 를 작성하기 전에 대상을 잘 이해하도록 노력하자. 프로토타입을 만들고, Web상에서 예를 체크해 보자. 같은 일하는 동료와 이야기하거나 심지어 같이 노는 것도 좋다. 경험을 하지 않았거나 사용한적이 없는 것을 구축하는 것은 매우 힘들다. 결국 단서를 가지고 일을 시작하면 결과는 잘 마무리 될 것이다.
8. 사용이 끝나면 물을 내리자.
사용할 수 없는 물건을 바꾸거나 다시 작성, 리팩토링, 그냥 포기하는 것을 두려워하면 안 된다. 때로는 의심스럽다면 던져버리는 것이 최고의 철학이다. 그리고 결코 자신의 코드와 사랑에 빠지면 안 된다.
9. 따뜻한 쿠키와 찬 우유는 건강에 좋다.
물론 프로그래머는 자신의 업무 환경이 좋아야 한다. 좋은 의자, 조용한 환경, 최신 PC에, 더 좋고 더 쉬운 코드를 만들 수 있는 도구가 필수적이다. 관리자는 프로그래머에게 떨어지는 것을 지켜주는 우산 역할을 하는 것이다. 프로그래머라면 저급한 노예의 삶을 거부하자. 만약 고용주가 너를 하찮게 취급한다면, 다른 더 좋은 회사를 찾아라.
10. 균형된 삶을 살자 - 매일 조금씩 배우고, 생각하고, 그리고 칠하고, 노래하고, 춤추고, 놀고, 일하자.
나는 자신이 가치 있다고 생각하면 뭐든지 20%의 시간을 투자할 수 있는 Google의 20%룰을 좋아한다. 고용주들은 별도로 낮잠을 자는 룸이나 게임룸이나 긴장을 풀어주는 환경을 준비해야 한다. 프로그래밍은 정신적으로 매우 힘든일이다. 때때로 우리의 뇌를 쉽게해주는 것이 필요하다. 일상적인 주 80시간 노동은 당신이 만든 제품을 품질을 파괴하기 때문에 거부하자.(자신을 녹초로도 만들 수 있다)
11. 오후에는 꼭 낮잠을 자자.
하루 24시간 일하는 것은 전혀 생산적이지 않다. 휴식을 취하고, 집으로 가서 제대로 수면을 취하라. 나는 종종 고약한 문제를 집에 가는 동안에 해결될 때가 있었다. 퇴근길 운전중에, 혹은 다음날 아침에 해결 방법이 떠올랐다.

