얼마전 열심히 코딩을 하고 있는데 누군가 쳐다보는 느낌이 들어서 뒤를 봤더니 새로 들어온 신입 사원 하나가 내가 코딩하는 모습을 지켜보고 있었습니다. 그것도 신기한 눈으로 ... (^-^);;
하기사 자랑은 아니지만 내가 정말 열심히 코딩할때는 주로 사용하는 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번 정도면 로직 구성이 끝나는 경우가 많습니다.
여기서 제가 진짜 하고 싶은 말은 많은 고민을 한 후에 코딩을 한다면 누구나 빠르게 코딩을 할 수 있다는 점입니다. 고민의 양의 많을수록 어떤 구조를 갖추어야 할지, 어떠한 역활과 책임을 가진 객체들이 존재하여야 할지, 앞으로의 확장성은 어떻게 보장할지 등에 따라 사실 코딩해야 할 부분들은 더욱 분명해자고 구체화됩니다.
이렇게 구체화된 안이 어느정도 머리속으로 확정되면, 여러 사람들과 혹시 부족하거나 잘못된 점이 없는지 또 논의를 합니다. 그러다 보면 사실 실제 코드로 옮기지만 않았지 머리속에서 코드는 이미 짜여져있는 것입니다. 그런 논의 후 코딩을 한다면 누구나 거침없이 무진장 빠르게 핵심 로직에서부터 코딩을 할 수 있을 것이라고 생각합니다.
하지만 가끔 보면 그냥 방향만 정하고 코딩에 들어가는 분들이 많습니다. 그러다 코드가 조금 이상하게 동작하면, 다시 처음부터 코드를 짜는 경우가 많습니다. 이러다 보면 짜도 짜도 끝이 없는 코드가 만들어지고 단순하던 로직은 어느새 복잡해져서 조그만 요구사항 변경에도 신경질을 내곤 합니다.
물론 언제나 시간은 부족하지만, 커피한잔 마시면서 머리속으로 정리하고 같이 논의하고 손으로 그려본다면 여러분 누구나 열라 빠른 코딩을 할 수 있다고 생각합니다. 그 신입 사원에게 이 말을 하고 싶었는데, 그냥 말로 하긴 뭐하서 겸사 겸사 올립니다.
감사합니다. :-)
'Software for Life' 카테고리의 다른 글
| Google Code로 오픈 소스 프로젝트 시작하기 (2) | 2009/08/24 |
|---|---|
| 퀘이크 살아있었네(Quake Live :-) (2) | 2009/08/23 |
| 코딩(Coding)을 하다가 (6) | 2009/07/09 |
| 가슴속에 검은 파도가 넘실대고 키보드 치던 손에 돌을 잡고 싶어졌다. (3) | 2009/05/24 |
| 프로그래머와 침대 메트리스 (10) | 2009/05/23 |
| 지금까지의 일, 그리고 새로운 일 (6) | 2009/05/16 |
-
cheru 2009/07/09 16:56
코딩이 빠르다는 것이 단순 타이핑 속도나 IDE 사용능력만은 아닌 것 같습니다. 문제 해결 능력(이해력, 설계능력, 구현능력)이란 베이스가 빠르지 않다면 1000타/분 워리어라도, 자신에게 최적화된 IDE에 능숙하더라도 느릴 수 밖에요. 잘 읽었습니다. :-) -케루-
-
장선진 jangsunjin 2009/07/09 18:15
안녕하세요~ 케루님 :-)
네~ 여러가지 요인이 있겠지만 말씀하신대로 문제해결능력이 매우 중요한것 같습니다.
그리고 더 나아가 해당 언어나 환경에 맞게 적용하는 능력을 갖춘다면 금상첨화인것 같습니다.
이렇게 되도록 더 노력해야겠습니다.
좋은 말씀 감사합니다. :-)
-
-
greenfrog 2009/07/14 08:14
출근해서 오랜만에 형님 블로그 방문했습니다. ^^
언제나 느끼는 거지만 열정적이시고 고민 많으시고 동생들 의견 잘 들어주시는 형님과 함께 일하는 신입사원은 참 좋은 롤 모델을
가졌다는 부러움이 드네요.
저도 개발 전 고민을 많이 하는 편이지만 생각이 폭과 깊이가 항상 부족하다는 생각을 많이 합니다. 그래서 그런지 요구 사항이
바뀔때 마다 코드의 변경이 굉장이 많죠 ~~ 에혀 ~~ 아직 실력이 부족하니 차근차근 키워나가야겠네요 ~ ㅎㅎ-
장선진 jangsunjin 2009/07/14 09:26
웅~ 재영아~ 고맙네 :-)
재영이도 열정적으로 잘하고 있어서 앞으로 좋은 프로그래머가 될거야~
많은 고민의 시간은 누구에게나 필요한 법이니 너무 걱정말고 거침없이 앞으로 나가기를 ;-)
-
-
jeonHoSeok 2009/07/26 19:10
그 신기한 눈으로 쳐다본 신입사원이 저 같네요...ㅋㅋ
간만에 선진형님 블로그에 왔다가 왠지 제 얘기같아서 이렇게 눈도장 찍고 갑니다. (온라인상에선 형님으로 모실게요...^^)
오늘 하루 잠만잔거 같아요...(살인적인 캠프일정때매 피곤했나봐요...) 내일은 다시 눈 부릅뜨고 신기한 눈으로 선진형님
모니터를 주시하겠습니다...^^ 남은 주말 푹 쉬시고 낼뵈요~
위에 분은 제가 아는 그 재영씨 같네요^^-
장선진 jangsunjin 2009/07/27 10:02
ㅎㅎㅎ 호석 안녕 :-)
댓글 남겨주어서 좋고~ 그 신입사원중에 하나 맞네 ㅎㅎㅎ
호석이는 나중에 나 보다 빨리 코딩할듯~ 언제나 열심히 해줘서 고맙고 날라가 보자고~ ㅋㅋㅋ ;-)
-


