티스토리 뷰

해우소 (toilet)/- 일상&잡담

소프트웨어 품질 향상을 위한 개발 방법 고심

공부하는 나부랭이, 무중력고기 2014.07.05 20:00

   어떻게 하면 유지/보수가 쉬울까? 어떻게 하면 오류를 쉽게 찾아낼 수 있게끔 깔끔하게 코딩할 수 있을까?


   개발자라는 직업을 갖고 있는 사람이라면 누구나 고민해봤을, 그리고 고민하고 있을 문제가 아닐까 생각한다.

   (아니라면 열정이 없거나 현실에 굴복했거나...)


   나 또한 병아리 개발자 주제에 어떻게 하면 소스 품질을 향상시켜서 유지/보수를 쉽게 할 수 있을까 많이 고심했다. 한번 만들고 땡! 하는 프로젝트는 거의 없기에, 다음번에 고칠 일이 생겼을 때 어떻게든 노가다를 줄이고 싶어서 머리를 이리저리 굴리는 것이다. 내가 작성한 소스의 노가다 수정을 내가 할 수도 있고 다른 사람이 할 수도 있다. 다른 사람에게 바톤이 넘겨질 때에 적어도 욕은 듣지 않게 코딩하려고 노력한다. 어쩌면 SI의 바닥을 경험해보지 못한  병아리 개발자이기에 가능한 고민인지도 모르겠다.


   아는 사람은 다 알겠지만, 대한민국 IT 업계에 대부분을 차지하는 있는 부분은 임베디드이고, 순수하게 소프트웨어만 개발만 하는 업체들은 대부분 주로 공공기관 혹은 대기업에서 하청을 받아서 갑의 요구대로 프로그램을 만들어주는 SI 사업을 하고 있다.(독자의 기술이나 솔루션을 갖고 있는 한글과컴퓨터 같은 회사나 포털사이트 업체인 네이버/다음 같은 회사, 대형 온라인 게임회사들 말고는 거의 다 SI를 하고 있다고 보면 된다.) 그 하청 받아서 하는 일감이 갑을병정무기경신임계까지 내려오는 소프트웨어 업계 하청 구조의 폐해가 이런 데에서 나온다는 것은 알만한 사람을 다 알 터.


   제한된 수의 프로젝트를 수주하기 위해서는-차별화 된 기술이 없거나 블루오션과 같은 시장 경쟁력이 없는 중소기업의 경우-개발 기간을 줄이거나 단가를 낮추는 방법을 통해 프로젝트를 따오게 되는데, 단가를 낮추면 이익이 줄어드니 보통은 개발 기간을 단축시킨다. 그러면 짧은 기간 내에 개발을 마쳐야 하니 개발자들은 유지/보수고 뭐고 나중을 생각할 여유없이 일단은 작동만 하게 코딩해놓는 것이다. 그러니 결과물은 오류없이 작동하나 나중에 언제 어디서 오류가 터질지 모르는 시한 폭탄이 되어버린다. 아무것도 모르는 사람이 SM이 뭐하는 일이에요? 라고 물어보면 "SI가 싼 똥을 치우는 일입니다."라는 답변이 괜히 돌아오는 게 아니다.


   프로그램 개발 초기 단계에서의 개발자 입장에서도 자기가 작성한 코드를 뿌듯한 마음으로 바라보고 싶을 것이다.(최소한의 열정이라도 있는 프로그래머라면...) 보통 그런 코드들은 그 누가봐도 작성해놓은 코드를 쉽게 파악할 수 있고, 오류를 쉽게 찾아낼 수 있게끔 코드가 깔끔하며, 코드의 중복이 적고 불필요한 코드가 없어서 수정이 편하다. 그럼 이런 걸 좀더 쉽게 할 수 있는 방법이 없을까?


   가장 기본적인 단계에서는 Coding Convention이 있다. 보통 팀 단위로 진행하는 프로젝트의 특성상 최소한의 코딩 규칙은 정해놓고 지키는 것이 필요하다고 생각한다. 근데 사실 엄격하게 규칙을 정해놓고 지킨다고 해도 로직 자체를 더럽게 짜놓는 사람이 있으면 그건 방법이 없다. 더 나아가서는 리팩토링, TDD 방법론 등등이 있는데.. 이런 것들도 개발자 각자의 경험과 재량에 달린 것이지, 자동으로 띡! 하고 해주는 것은 아무것도 없다. (찾아본 바로는 그렇다..ㅡ.ㅡ;;) 품질 좋은 코드를 작성하기 위해 도와주는 툴들은 더러 있지만 그런 것들을 따로 사용하기 위해선 개발자의 의지가 있어야 하고, 팀 프로젝트에서 나만 사용하면 아무짝에도 쓸모가 없다.


   결국에는 다른 사람을 위한 최소한의 배려를 바탕으로 한 개발자 각자의 꼼꼼함이 필요한데, 말이 쉽지 사실상 "우리 모두 똑같이 열심히 일하고, 똑같이 나눠갖자" 하는 공산주의 이상향과 다름이 없다.


   그저 나라도 최소한의 양심과 열정을 지니고 짜놓은 코드들도 재검토 하며 소프트웨어 품질 향상을 고심해야겠다라는 결론에 다다른다.


   초심을 잃지 말지어다. .....



댓글
댓글쓰기 폼
Total
1,311,284
Today
698
Yesterday
1,100
«   2019/06   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
글 보관함