차분하게 프로그래밍 하라.
대학원에 있을때나, 혹은 회사를 다니면서 느낀것 중 하나는 프로그래머가 아닌 사람들은 결과에 집착한다는 사실입니다. 저는 거의 매일 **“어디까지 됐어?”** 라는 말을 듣습니다. 때로는 정말 짜증나기도 하지만, 모르는 사람이니까 그럴수 있다고 여기고 있어요. 그런데, 재촉하면 자꾸만 빨리 빨리 해야할것 같아서 프로그래밍을 빨리 하다 보니 차분히 프로그래밍 하는 습관이 필요하구나. 라는 생각이 들더라구요.
왜 차분하게 프로그래밍해야 하는가?
**
차분히 프로그래밍 해야하는 이유는 한가지 입니다.
**
명확한 코드/알고리즘/로직을 만들어내기 위해서 입니다.
**프로그래밍은 원래 설계 후 구현이 원칙입니다. 많은 방법론이 있지만, 구현후 설계는 없지요. 대부분의 회사에서 그런 방식을 사용하지만 하지만, 대학원에서나 혹은 혼자 개발하는 경우, 큰 그림만 생각한 후에 그때그때 설계하면서 구현해 나가는 경우가 많습니다. 간단한 기능의 경우, 빨리빨리 설계와 구현을 병행하면서 만드는 것이 가능하지만, 프로그램이라고 불리울 정도의 크기가 되면 반드시 문제가 생기게 되고 결국엔 기한내에 다 끝내지 못하는 사태가 발생하지요.
프로그래머는 아무리 옆에서 빨리 빨리 하라고 해도 차분하게 설계하고 차분하게 코딩해야 한다고 생각합니다. 그리고 한번 키보드에 손을 올려서 띨때까지 만든 코드는 다신 건드릴 필요가 없을 정도로 종이에 자신이 생각한 로직에 대해서 그려보고, 생각해 보는 작업이 반드시 필요하다고 생각합니다.
A4용지를 활용하라.
******
**
**
**
대학원에 있을때의 한 이야기를 풀자면,
빨리 빨리 하라는 윗선(?)의 재촉 때문에 한 후배가 (이제 갓 프로그래밍 문법을 익힌) 키보드에 손을 올리고 모니터를 멍하게 쳐다보고 있더라구요. 그래서 제가 물었습니다.
“왜 안짜?”
“어떻게 짜야할지 모르겠어요”
저는 그 후배에게 키보드를 치우게하고 A4용지를 갔다 주면서 말했습니다. 너가 만들어야 하는 프로그램을 순서대로 말로 풀어써 보라고요.
사람은 원래 아날로그형 동물이기 때문에 펜을 가지고 종이에 써 봐야 머릿속에 각인이 됩니다. 대충 머릿속으로 “아, 어떻게 어떻게 해서 이렇게 짜야겠다” 라고 생각하고 키보드에 손을 올리면, 절대 좋은 프로그램, 명확한 코드를 짤수는 없습니다.
**먼저 종이에 펜을 가지고 큰 그림을 그려보고, 거기에 따라서 흐름(Flow)를 서술해 보는것이 중요합니다. 그리고 서술한 흐름(Flow)를 보면서 필요한 것들, 예를 들면 전달해야하는 정보라던지, 검사해야 할것들 이라던지 등등에 대해서 체크를 해 나가면서 하나의 로직을 완성해 나가는 작업이 반드시 선행되어야 합니다.**
저도 그리 명확한 프로그램을 짜는 편은 아니지만, 돌이켜 생각해 보면 좀더 고민하고 좀더 생각해 봤으면 놓치지 않았을 것들이 코드를 다 짠후 프로그램을 실행시켰을때 생기는 버그를 보면 꼭 생각이 나더라구요.
프로그래밍은 조각가이다.
**
저는 프로그램은 하나의 조각 작품이라고 생각합니다. 그럼 프로그래머는 조각가이지요. 조각은 점점 깍고 다듬고 해야 제 모습을 찾는다고 생각합니다. 하지만 한번 깍은 조각의 부스러기는 다시 붙일수가 없습니다. 때문에 한번의 칼질, 망치질이 무거워야 제대로된 조각을 할수 있다고 생각합니다.
프로그램도 마찬가지라고 생각합니다. Ctrl+Z 를 누르면 쉽게 이전 상태로 돌아갈수 있지만, 프로그래머는 그럴수록 점점 지쳐가고 그에따라 좋은 코드가 생산될 수가 없습니다. 때문에 한번의 코딩, 한번의 클릭, 한번의 키보드 타이핑이 고민끝에 이루어져야 한다고 생각합니다. 그러기 위해서는 위에서 설명한것 처럼 종이에 써보고, 화이트보드에도 써보면서 제대로된 코드인지 스스로 생각해 봐야 한다고 생각합니다.
처음 프로그래밍을 배우는 분들이 있으시다면, 문법을 공부하시되 처음부터 프로그램을 키보드로 치기 보다는 종이에 흐름을(Flow) 써보는 습관을 키우라고 말씀드리고 싶습니다.^^