더 나은 프로그래밍을 위한 제언

요즘 “대한민국 개발자 희망보고서”를 읽고 있다. 현장의 얘기가 체계적으로 정리된 느낌과 함께  평소에 알고 있으면서도 실천하지 못하는 부분에 대해 내 자신을 다시 한번 일깨워 주고 있다. 그 중 코딩에 관한 가장 기본적인 얘기가 있어서 인용한다.


더 나은 프로그래밍을 위한 제언


제발 줄 좀 맞추자
프로그래밍을 잘 하는 사람과 그렇지 못한 사람의 차이는 바로 줄 간격을 맞춰서 프로그램을 짜느냐에 달려 있다고 나는 과감히 주장한다. 왜냐하면 그 동안 수많은 개발자를 보아왔지만 줄을 제대로 맞추지 않고 프로그램을 제대로 짜는 사람은 본 적이 없기 때문이다. 보기 좋은 코드가 디버깅하기 좋다. 제발 기본에 먼저 충실하자. 알고리즘과 자료구조에 대한 이해는 기본이다. 그런 다음에 기교를 발휘해도 늦지 않는다.

백문이 불여일타
“프로그래머가 되는 가장 좋은 방법은 프로그램을 작성해보고, 다른 사람이 작성한 훌륭한 프로그램을 공부하는 것이다.”
훌륭한 작가 중에서 책을 많이 읽지 않은 사람을 보았는가? 마찬가지로 좋은 프로그램을 만들기 위해서는 좋은 프로그램을 많이 보아야 한다. 무에서 만들어지는 것은 아무것도 없다. 책에 있는 소스나 공개 소스를 스스로 분석해보자. 그러나 이보다 더 좋은 방법은 직접 짜보는 것이다. 직접 짜보는 것만큼 훌륭하게 배우는 방법은 없다.

선설계 후코딩
항상 프로그래밍을 하기 전에 선설계 후코딩하는 습관을 들여야 한다. 생각하고 계획하는 프로그래밍을 하라는 말이다. 프로그래밍을 하다가 막히는 부분에 가서야 생각하는 것은 좋지 않은 습관이다. 프로그래밍 시간이 배로들뿐더러 수정에 의해 또 다른 문제가 야기될 개연성이 크다. 계획을 하되 머리속으로만 하지 말고 문서로 작성하여 기억이 유실되지 않도록 해야 한다.

친절한 주석씨
주석은 습관이다. 주석은 타인에 대한 배려다. 친절한 프로그래머가 되는 지름길은 주석을 잘 다는 것이다. 시간이 날 때 주석을 다는 것이 아니다. 주석은 프로그래밍의 일부분이라는 인식을 갖고 실천해야 한다. 주석을 달지 않으면 본인도 시간이 지나면 잘 기억이 나지 않는다.

3종 언어 세트
나의 경험으로 볼 때 프로그래밍 언어는 최소한 3가지는 익혀야 한다. 가급적이면 소프트웨어 프레임워크에 맞는 언어를 각각 익히는 것이 좋다. Client/Server, .NET, J2EE 프레임워크에 맞는 Powerbuilder, Java, C#을 예로 들 수 있다. 그렇지만 이 세가지 중에서 반드시 자신의 전공부야는 있어야 한다. 하나의 언어를 배우더라도 다른 언어에서 금세 응용할 수 있도록 충분히 이해해야 한다.

나만의 테크노트
자신만의 노하우를 반드시 정리하라. 가장 큰 재산이 된다. 일전에 프로젝트를 하면서 나만의 테크노트를 한 권씩 만들어 정리한 적이 있었는데 매우 유용했다. 그렇게 습득한 지식은 책에도 잘 나와 있지 않는다. 기록을 하지 않고 다시 복기하려면 엄청한 시간과 노력이 또 다시 요구된다. 테크 노트를 정리하는 일은 시행착오를 줄일 수 있도록 해 줄 뿐만 아니라 전문가로 가는 노하우를 하나씩 쌓아가는 기쁨도 느끼게 된다. Taeyo ASP & .NET 웹사이트가 성장한 배경을 살펴보라. 내일 당장 그대만의  테크노트를 한 권 장만하라.

코딩이 뭐길래
프로그래머는 절대 코딩만 하는 사람이 아니라고 누차 강조했다. 코딩 지상주의를 절대 경계하라. 어느 정도 코딩 실력이 올라가면 데이터베이스, 아키텍쳐 등의 유사분야의 영역에 대한 지식을 넓혀라. 때론 일반적인 지식도 필요하다. 큰 그림을 그릴 수 있어야 한다. 설상 프로그래머로 자신의 경력개발경로를 설계한다 하더라도 다른 분야에 대한 학습은 꼭 필요하다.