2007년 3월 2일 금요일

좋은 자바프로그래밍을 하기 위한 전략

좋은 글이라 판단되여 퍼왔습니다.



1. 목표를 확실히 하라


세상의 모든일이 그렇듯이, 소프트웨어를 개발하는 작업 역시, 목표를 확실히 잡는것이 중요합니다. 개중에 프로젝트를 진행하다보면, 볼 수 있는데요. 쇼핑몰을 예를 들어보도록 하죠. 쇼핑몰은, 물건을 팔아서 수익을 남길 수 있는 것이 궁극적인 목적입니다. 그 목적에 부합한 시스템을 설계하고, 목표로 잡아서 개발해야 하지만, 종종, 개발자의 아집이라고 할까요? 아님 욕심이라고 할까요… 새로운 기술을 접목시켜 보고자 하는 욕심이나, 경영진의 의도에 따른 신기술(CRM 등등) 적용이 우선시 되어, 실제로 활용되지 못하는 기술이나 솔루션 적용을 목표로 두고, 원래 목적과 벗어나는 경우가 많습니다. 아무리 좋은 솔루션이나 기술이라도, 제대로 활용을 하지 못하면 소용이 없습니다.

게임을 만드는데는 재미가, 기업 홈페이지를 구축하는데는 회사의 이미지와 마케팅이, 그리고 기업용 Application 제작에는 수익증대와 효과적인 자원 관리에 있습니다. 그 목적을 성취시키지 못하면 아무리 좋은 기술과, 문서화, 안정성등을 가지고 있어도, 좋은 소프트웨어라고 볼 수 없습니다.

2. 목표 개발환경을 체크하라. (네트워크 환경 문제..)

많은 개발자들이 놓치고 넘어가는 부분중에 하나인데요, 목표 환경을 설정하는것이 매우 중요합니다. 사용자가 제작된 소프트웨어를 어떤환경에서 사용할지를 염두해두고 개발하는것은 매우 중요한 일입니다. 보통 하드웨어 환경은 대부분 체크를 하시고 개발을 하시는데 반면, 네트워크 환경을 체크하시는 개발자는 별로 많지 않더군요.

 국내의 경우, 초고속 인터넷 환경이 발달하여, 큰문제는 없지만, 아직까지 인터넷환경이 제대로 세팅되지 않은 중국같은 경우에는, 특정 소프트웨어의 네트워크 모듈때문에, 국내에서는 잘 작동하던 소프트웨어가 latency 등의 이유로 제대로 작동하지 않는 경우가 많습니다. 국내에서도 LAN 환경이 10M냐, 100M냐에 따라서도 서버간의 통신에서는 문제를 미치는 경우가 많습니다

 특히 자바개발자가 주의해야할점은 JVM의 Version인데, 많은 경우 이 JVM에서 생각하지도 못했던 오류가 일어나는 일이 많습니다. 꼭 사용자가 사용할 JVM Version을 체크하고, 테스트 결과를 리포팅하는 것이, 추후에 일어날 수 있는 문제를 예방할 수 있습니다.

3. 개발에도 순서와 절차가 있다. – 개발 방법론

어느정도 개발을 하신분들은 다 느끼시겠지만, 개발에도 순서와 절차가 있지요. 소프트웨어공학론이니, 개발방법론이니, 모두 이 부분에 속하는데, 이미 알고 계시는 이야기는 넘어가도록 하고, 이 부분에서 가장 중요한것은, 어떤 패턴은 사용하고, refactoring을 하고, uml을 이용해서 diagramming을 하는게 아닙니다. 딱 두가지만 이야기 하도록 하겠습니다.

 첫번째는, Analysis 입니다. 얼마나, 고객의 요구사항은 제대로 분석해내고, risk 요소에 대한 분석과 대책을 어떻게 세웠느냐에 따라, 그 프로젝트의 성공과 실패가 갈린다고해도 과언이 아닙니다. 보통 이 분석단계가 주목구구식으로 이루어 지는 경우가 매우 많지요. 그리고, 국내에서는 이상하게, 기법들이 분석보다는 설계 단계에 치우쳐져 있는듯한 느낌이 듭니다. 고객이 요구하는바를 제대로 catch해 내지 못하면 개발이 끝난후에도, 다시 코드를 수정하는 일이 많아져서, 결국은 누더기 같은 소프트웨어가 되버려버리지요. 어느정도 개발을 해보신분들은 대부분 공감을 하실거라 생각합니다.

 두번째는, 이것도 목적에 부합하라는 이야기와 비슷할 수 도 있겠는데요. 방법론을 선택하는데 있어서, 알맞은 방법론을 선택하라는 이야기 입니다. 5인정도의 프로젝트의 팀에서 RUP와 같이 큰 방법론을 적용할 필요가 없겠지요? 반대로, 100인 정도의 팀에서 XP를 적용한다면, 아무래도 문제가 있을겁니다. 정보공학방법론,OOAD,OSP,XP,RUP,SSADM등 방법론은 정말 많습니다만, 자신의 팀과, 프로젝트 환경에 알맞은 방법론을 시대의 주류에 휩쓸리지말고 선택하는것도, 좋은 소프트웨어를 만드는 첫걸음이 아닐가 생각합니다.

4. 개발 능력은 필수, 멀티 플레이어 개발자가 되자.

프로그래밍을 하시면서 많이들 느끼실테지만, 요즘은 개발능력, 코딩 능력 하나로만은 어렵다는 생각이 듭니다. 적어도 두가지 이상의 분야를 체득해야 성공적인 개발자로 거듭날 수 있다고 생각이 되는데요.

그중에서도 domain expert(특정 비지니스 프로세스에 대한 전문가) 적인 능력을 가지고 계신분은 해당 업무를 개발하는데, 훨씬 이득이 있는 것으로 생각이 됩니다. 병원 업무 개발하는 사람은 병원 업무를 잘알고, ERP 쪽에서 일하시는분은 회사 돌아가는 프로세스를 알고 있으면 도움이 되겠지요?

 또한 domain expert 이외에도, 기획 능력이나, 디자인 능력, 경영 능력, 팀관리 능력, 세일즈 능력등등의 두가지 이상의 능력을 가지고 있는 개발자 분들이, 요즘 유난히 눈에 띄는것을 볼 수 있습니다.

 개발은 기술일 뿐이고, 그 기술을 뒷받침해주고, 좀더 빛나게해주는 무언가가 필요하다는 생각이 절실하군요..

5. 전반적인 바탕 지식을 튼튼히 하자. – 데이터베이스,WAS 등등

두말할 필요 없겠지만, 내가 자바 개발자라고 해서, 자바만 알아서는 안되겠지요? 제대로된 자바 프로그래밍을 하기 위해서는 JVM 구조를 알면 도움이 되고, JVM을 제대로 알려면 System Programming을 알아야 이해가 되겠지요? DBMS 프로그래밍을 하려면 DBMS SQL 이 어떻게 사용하면 효율적인지도 알아야 겠구요.. 그래서 보통 개발자들이 갖추어야할 4대 기술을 System Programming,Network,Database,Software Engineering 을 꼽습니다.

 따져 보면, IT 기술의 거의 모든 분야라고 할 수 있겠는데요. 거의 모든 분야가 필요한게 사실이기도 하지요… 흔히들 개발자들 사이에서 내공이 튼튼하다라는 말을 쓰는데, 이러한 기술들이 내공이 아닌가 싶습니다. 개발언어도 물론 특징과 공부해야할것은 많지만, 이런 내공이 튼튼하다면, 좀 더 쉽게 접근할 수 있다고 생각합니다.

6. 예제 코드를 많이 보자.

각종 벤더에서 발표되는 example 코드나, 서적의 소스코드들을 보면 정말 잘 짜여진 코드들이 많습니다. 이런 코드들을 보고 있노라면, 저도 다시 참 많은것을 배우게 되는데요. 코딩룰에서 부터, 주석 달기, 패턴 등등. 끝이 없더군요… 자신이 안다고 단순히 넘어갈것이 아니라, 예제 코드들은 한번쯔음 살펴보는것이 좋을 것이라고 생각되구요. 단! 국내 몇몇 기초 서적들의 코드들은 다소 문제가 있는 코드들이 많기 때문에, 주의하셔서 보는것이 좋을것 같네요. 한번 잘못들여진 습관은 꽤 오래갈 수 있거든요..

출처 : http://www.j2eestudy.co.kr/

댓글 없음:

댓글 쓰기