![]() 우리는 개발자와 프로그래머라는 말을 뚜렷하게 구분하여 사용하고 있지는 않다. 하지만, 썬에서 발급하는 자바 자격증을 보면, SCJP, SCJD, SCAJ 등으로 구분하여, 프로그래머(Programmer), 개발자(Developer), 아키텍트(Architect)의 3단계로 구분하고 있다. 이 순서대로 경력과 능력이 올라가야 그 수준을 달성하게 된다. 즉, 개발자와 프로그래머 사이에서는 개발자가 좀 더 놓은 수준의 능력을 갖춘 사람이 된다. 이 둘 사이에는 무슨 차이가 있을까? 공식적으로는 뚜렷하게 차이점이 정의되어 있지는 않다. 필자는 최소한 다음을 잘 이해하고 있는 사람은 개발자로서 프로그래머와의 구분을 가져오는 차이가 있다고 생각한다. |
|
|
|
개발 방법론 개발 방법론은 프로젝트 초기에 선택되어야 할 가장 최우선적인 항목의 하나다. 많은 프로젝트에서 Waterfall에 근간을 둔, 정보 공학적인 방법론을 사용한다. 요즘에는 CBD나 XP (eXtreme Programming)이 많은 프로젝트에서 사용된다. 하지만, 아직까지는 CBD의 성공적인 적용이나, XP를 기가 막히게 사용해서 좋은 효과를 얻었다는 얘기를 그다지 많이 듣지 못했다. 필자의 판단으로는 현재 가장 쓸만한 방법론은 UP(Unified Process)며, 현실적인 프로젝트에서는 UP를 간단화 시킨 UP-Lite를 사용하는 것이 좋다. UP는 Rational사(현재는 IBM으로 합병됨)에서 RUP라는 이름으로 널리 알려진 개발 방법론이다. |
|
아키텍처는 방법론인 UP에서도 강조하는 부분이나, 썬에서는 더욱 더 강조하는 부분이다. 모든 시스템의 결과물은 그것이 다양한 프로그램의 집합이던, 하드웨어에 COTS를 올려 놓은 것이던, 그 시스템의 Quality로 평가된다는 것이며, 그 quality에 가장 많은 영향을 주는 요소는 아키텍처라는 것이다. 많은 사람들이, 단일 프로그램의 버그보다는 설계상의 오류를 수정하기가 몇 십 배 어려우며(혹은 비용이 많이 소요된다), 설계상의 오류의 수정보다는 잘못된 아키텍처 구성의 변경이 몇 십 배 어려운 일이라고 말하고 있다. |
|
Prototyping 이 세상에서 처음 해보는 일을 잘할 수 있는 사람은 없다고 한다. 프로젝트도 마찬가지다. 개발자가 수행하는 모든 프로젝트가 내가 잘 알고 있는 기술만으로 진행되지는 않는다. 심지어 경험이 매우 풍부한 개발자도 전혀 새로운 시스템 구성을 해야만 하는 경우도 그리 드물지 않다. 프로토타입은 이점에서 매우 유용한 결과물이다. 프로젝트의 초기에, 요구 사항에 대한 이해, 시스템 구성, 프로그램 구조, 서버의 성능 등에 대하여 미심쩍었던 부분을 확인하기에는 이처럼 좋은 도구나 제도는 없다. |
|
Framework 프레임웍의 정의를 아는가? 일반적으로 인정 받고 있는 프레임웍의 정의는 “관련있는 클래스의 집합”이라는 의미 정도다. 설마라고? 프레임웍에 대한 많은 논문을 쓴 Ralph Johnson은 “프레임웍은 관련 문제점을 해결하기 위한 추상적인 디자인을 구체화하는 클래스의 집합(A framework is a set of classes that embodies an abstract design for solutions to a family of related problems.)” 이라고 정의하고 있다. 최근에 많이 사용되는 buzz word인 CBD(Component Based Development)에서의 핵심 단어인 컴포넌트의 정의만큼이나 애매 모호하며 도움이 안된다. 여기에서 프레임웍의 정의를 따지는 것은 무의미하며, 그냥 일반적으로 많이 사용되는 STRUTS, Log4J나 ANT, JUnit 등을 지칭한다고 이해하자. 이들의 사용 목적은, 이건 완전히 개인적인 생각이지만, 프로그램의 일관된 quality를 얻는 것과 그 유지 보수의 편리성에 목적을 두고 있다. |
|
Design Pattern 디자인 패턴은 이제 프로그래머라면 당연히 알아야 하는 것으로 여겨지고 있다. 또한, 많은 사람들이 여러 개의 디자인 패턴을 프로젝트에 적용하고 있으며, 얘기를 해보면 많은 수의 패턴을 알고 있다. 하지만, 실제로 깊은 대화를 나눠보면, 피상적으로 패턴을 이해하고 있는 경우가 있으며, 심지어는 잘못된 곳에 잘못 사용하는 경우도 비일비재하다. 내가 몇 개의 패턴을 말할 수 있는가 보다는 단 한 개라도 정확하게 이해하고 사용할 수 있는 편이 더 낫지 않을까 생각한다. |
|
기타 정확하게 출처는 생각나지 않지만, 비교적 최근에 어느 글에서 본 내용이다. 우리나라의 개발자는 코딩은 열심히 하면서 테스트를 해 보는데, 그 기본 동작 원리에 대해서는 별로 관심을 두지 않는다는 내용이었다. 필자도 매우 동감하는 내용이다. EJB 프로그램은 잘 하지만, 그 동작 원리에 대해서는 잘 모르는 개발자를 심심치 않게 목격할 수 있다. 기타 다른 자바 기술 분야도 이와 유사한 경우가 흔하다. 우리나라 개발자들은 일단 손이 먼저 움직이는 경향이 강해서 그렇다고 필자는 믿고 있다. 하지만, 이제는 그 습관을 조금은 바꾸어야 하지 않을까 생각한다. 그리고, 책을 많이 읽을 것을 권한다. “J2EE 1.4 따라잡기”와 같은 자바 기술에 대한 직접적인 내용도 읽어야 하지만, language나 spec.이라는 개념에서 조금은 벗어난 기술 관련 문서들도 많이 읽어 볼 것을 권한다. 왜 그런 책들을 읽어야 하냐고 묻는다면, 내가 알고 있는 얘기 하나를 할까 한다. 마지막으로, 같은 코끼리를 만지고도 서로 이해하고 있는 바가 다른 경우도 있듯이, 같은 문제나 상황에 대하여 해석을 달리하는 경우도 많다. 이와 해결하기 위한 상호 의사 소통은 매주 중요한 기술(skill)에 해당한다. 더불어서 필요한 기술은, 발표력, 문서 작성력, 문제 해결 능력 등이 있다. 개발자와 프로그래머의 가장 큰 차이는 코딩이 자신이 가진 능력의 전부가 아니라는 것이며, 프로젝트는 코딩이라는 이름으로 대표되는, 시스템을 대상으로 진행하는 식의 활동(activity)으로만 구성된 일이 아니다라는 점이다. 프로젝트에서의 대부분의 활동은 사람을 대상으로 진행된다. 심지어 코딩도 단순히 시스템과 프로그래머와의 대화라고 단정하기도 어렵다. 왜냐하면, 많은 프로그램은 사람과의 대화를 수행하기 때문이다. 따라서, 클래스 간의 Interface만 잘 정의하는 것이 중요한 것이 아니라, 팀원들 간의, 사람들 사이의 Interface를 잘 정립하는 것도 중요하다. |
| 두서 없는 얘기를 여기까지 읽어 주셔서 감사합니다. 즐코딩하시길. 아니 즐개발하시길…. |
"Career Path" 카테고리의 다른 글
- Architect의 꿈을 향하여 (댓글 14개 / 트랙백 0개) 2006/01/01
- 돼지 삼형제의 집짓기 프로젝트 (댓글 7개 / 트랙백 0개) 2006/01/01
- 자바세계에서 꿈을 키워가는 프로그래머에게 (댓글 5개 / 트랙백 1개) 2006/01/01
- 자바 프로그래머에서 개발자로 (댓글 7개 / 트랙백 0개) 2006/01/01
- Java와 모바일 환경과의 만남 (댓글 5개 / 트랙백 0개) 2006/01/01

댓글을 달아 주세요
멋진 글 감사합니다.. 지식이 쌓이는 것 같아요
2007/09/07 20:12가장 중요한 부분을 놓칠 수 있는 내용을 짚어주셨네요.
2007/09/08 15:59컬럼 감사합니다. ^*^
프로토타입
2007/09/12 19:01프로토타입/ 프레임워크/ 디자인패턴...
2007/09/12 19:02저에게는 중요한 너무나도 중요한 개념이였는데 잘 보고갑니다.
알찬 정보 감사드려요~
와~~ 정말 이해가 쉽게 잘 쓰쎴네요~~ 좋은 정보 좋은 글 잘 읽고 갑니다.^^
2007/09/15 12:10두서 없다니요..일목요연하게 잘 정리된 글..잘 읽었읍니다
2007/09/16 14:38좋은 정보 감사해요~
2007/09/19 04:54