본문 바로가기

Software for Life

코딩(Coding)을 하다가



얼마전 열심히 코딩을 하고 있는데 누군가 쳐다보는 느낌이 들어서 뒤를 봤더니 새로 들어온 신입 사원 하나가 내가 코딩하는 모습을 지켜보고 있었습니다. 그것도 신기한 눈으로 ... (^-^);;

하기사 자랑은 아니지만 내가 정말 열심히 코딩할때는 주로 사용하는 IDE인 Eclipse(http://eclipse.org)의 Quick Fix 기능이 코딩 속도를 못따라와서 내가 잠시 멈추워야할 경우가 많습니다. Eclipse의 Memory Option도 나름 조정하여 최소 512M이상 잡고 뜨게 해 놨음에도 불구하고 Eclipse는 간간히 내 속도를 헐래벌떡 쫓아오는 경우가 있습니다.

이렇게 코딩하는 모습을 지켜본다는 것은 어떻게 보면 신입 프로그래머들에게는 하나의 신기한 구경꺼리인것 같습니다.

나 역시 프로그래밍을 시작한지 얼마 지나지 않아 유명한 소프트웨어 아키텍트 분이 Emacs를 가지고  번개와 같이 코딩하고 컴파일하여 배포하는 모습을 보고 감동먹은 적이 있었습니다. 그래서 아직도 Emacs는 꼭 정복하고 싶은 IDE입니다. 사실 Emacs는 그냥 IDE라고 부르기에는 너무도 많은 기능이 있기에 전 아직도 Emacs에 대해서는 초보입니다.

여튼~ 나를 바라보면서 약간은 부러운 눈을 하고 있는 새내기 프로그래머를 바라보면서 여러가지 생각이 들었습니다.


사실 이렇게 빡세계 코딩하는 경우는 일주일에 몇일 되지 않습니다. 사실 난 코딩하기 전에 머리 속으로 며칠씩 이런 저런 고민과 고민을 거듭하곤 합니다. 실제로 어느정도 구체화된 안을 가지고 코딩을 하는 경우가 많습니다.

대부분 아마도 맨 뒷단, 즉 IO가 발생하는 부분이나 Event가 발생하는 부분부터 코딩을 시작하는 것이 아마 일반적일 것입니다. 하지만 저의 경우는 대부분 핵심 로직 부분부터 시작하는 경우가 많습니다. 비즈니스 로직이나 알고리즘을 품고있는 부분부터 코딩을 시작하고, 필요한 클래스드를 하나 하나 확장해 나가는 방식을 주로 사용합니다.

UML로 정리를 해서 시작하면 좋겠지만, 대부분 공동작업을 할 경우에도 끊임없는 커피 회의를 통하여 대부분의 방향을 정해놓고, 간단하게 주요 클래스들이나 컴포넌트를 정의한 후 바로 코딩에 들어갑니다.

이때 주로 핵심 로직을 담당하기 때문에 단순한 Operation만 제공하기 보다는 Utility 성 Operation들도 함께 만들어 줍니다. 요즘은 Eclipse 같은 IDE에서 워낙 쉽게 만들어 주기 때문에 대부분 IDE의 도움을 열심히 받아가며, 핵심 부분을 완성해 갑니다.

그런 후에 마지막으로 Event를 담당하는 객체나 IO를 담당하는 객체와 연결시켜 마무리하곤 합니다.

사실 이렇게 중앙에서부터 클래스를 확장시켜나가는 것은 그리 쉬운일은 아니지만, 현재 제가 맞고 있는 역활이 핵심 부분에 집중할 수 있기에 이렇게 코딩하곤 합니다. 이런식으로 코딩한 후 각각의 Event들이나 Test Case들을 통하여 테스트 하면 대부분 2~3번 정도면 로직 구성이 끝나는 경우가 많습니다.


여기서 제가 진짜 하고 싶은 말은 많은 고민을 한 후에 코딩을 한다면 누구나 빠르게 코딩을 할 수 있다는 점입니다. 고민의 양의 많을수록 어떤 구조를 갖추어야 할지, 어떠한 역활과 책임을 가진 객체들이 존재하여야 할지, 앞으로의 확장성은 어떻게 보장할지 등에 따라 사실 코딩해야 할 부분들은 더욱 분명해자고 구체화됩니다.

이렇게 구체화된 안이 어느정도 머리속으로 확정되면, 여러 사람들과 혹시 부족하거나 잘못된 점이 없는지 또 논의를 합니다. 그러다 보면 사실 실제 코드로 옮기지만 않았지 머리속에서 코드는 이미 짜여져있는 것입니다. 그런 논의 후 코딩을 한다면 누구나 거침없이 무진장 빠르게 핵심 로직에서부터 코딩을 할 수 있을 것이라고 생각합니다.

하지만 가끔 보면 그냥 방향만 정하고 코딩에 들어가는 분들이 많습니다. 그러다 코드가 조금 이상하게 동작하면, 다시 처음부터 코드를 짜는 경우가 많습니다. 이러다 보면 짜도 짜도 끝이 없는 코드가 만들어지고 단순하던 로직은 어느새 복잡해져서 조그만 요구사항 변경에도 신경질을 내곤 합니다.

물론 언제나 시간은 부족하지만, 커피한잔 마시면서 머리속으로 정리하고 같이 논의하고 손으로 그려본다면 여러분 누구나 열라 빠른 코딩을 할 수 있다고 생각합니다. 그 신입 사원에게 이 말을 하고 싶었는데, 그냥 말로 하긴 뭐하서 겸사 겸사 올립니다.

감사합니다. :-)