대개 개발을 한다고 하면 키보드부터 잡는 경우가 많습니다.
하지만, 좋지 않습니다. 소프트웨어 설계와 알고리듬 설계는 키보드로부터 시작하는 것이 아니거든요.
개발해야할 기능이 있다고 하면 처음엔 단순하게 시작하게 되지만 막상 코드를 작성하다보면 여러 예외 상황들이 생기고 그것들을 처리하기 위한 분기들이 여럿 생기게 됩니다.
이런 상황에서 코드부터 작성하면 기존의 코드 구조에 얽매여 그 이후의 코드가 지저분해지는 경우가 굉장히 많습니다.
기존 사고의 틀에서 벗어나지 못하여 마치 개미가 집짓듯 마구 덧붙이는 식이 되어버리는 거죠.
저는 코드를 작성하기 전에 가만히 앉아 10분 정도 생각하고 40분 정도는 앉아서 노트에 뭘 적기 시작합니다.
어떤 기능의 시작점부터 마지막점까지 노트에 볼펜으로 쭉 써내려가면서 예외 상황들을 정리하고 그것들을 고려한 코드 설계를 다듬어가는거죠.
먼저 작고 들고다닐 수 있는 노트를 준비하세요. 저는 옥스포드의 리갈패드 미니 노랑를 추천합니다.
항상 들고다니면서 어떤 기능에 대한 새로운 예외나 오류 처리에 대한 생각을 마구 적습니다. 그리고 차분하게 앉아 생각할 곳이 생기면 도표로 그리면서 코드를 설계합니다. 그렇게 다듬어가다보면 코드를 어떻게 작성해야겠다는 생각이 머릿속에 떠오르고 실제로 그것을 코드로 옮기는 데에는 5분에서 10분이 채 걸리지 않습니다. 노트에 적어놓은 구조만 그대로 번역하면 되니까요.
아래는 제가 회사에서 최근에 개발하는 2가지 기능에 대한 노트 필기 중 일부입니다. 기능 개발 구상 단계에서 가장 처음 작성한 것으로 알아보기 힘들 수 있습니다. 하지만 괜찮습니다. 이런 노트는 남에게 보여주기 위한 것이 아니라 혼자 생각을 정리하기 위한 용도거든요. 무엇이든지 적어놓지 않으면 시간이 흘러 잊기 마련입니다.
이렇게 Draft를 그린 후 생각을 다듬어 도표를 그리고 코드를 어떻게 작성해야겠다는 생각이 드는 순간 일은 사실 끝난 것이나 마찬가집니다. 코드를 작성하는 건 단지 타이핑일 뿐이거든요.
이 노트를 어딜가나 들고다닙니다. 버스나 지하철, 집앞에서 담배필 때까지. 개발자로서 일을 하다보면 업무 시간 이외에도 항상 본인이 작성하는 코드에 대해 생각을 할 수 밖에 없습니다. 길을 가다가도 문득 좋은 아이디어가 떠오르면 바로바로 적어두는 거죠. 그래야 나중에 시간날 때 다듬어야지.. 하면서 마음 편하게 다닐 수 있습니다.
개발 업무 이외에도 일정 관리나 새로운 기능에 대한 아이디어, 버그에 대한 해결 방법도 주로 이런 방법을 사용합니다.
한번 해보세요!