개발자 대부분 기능 구현 중심인 이유에 이어서..


내가 10년전의 초보자였다면 여기까지 읽고 이런 의문이 들 것 같다. 고객이 요구한 기능을 가장 최우선적으로 구현하는 것에 집중하는 것이 뭐가 문제지? 당연히 가장 우선적으로 신경써야 할 것 아닌가.


고객이 원하는 기능을 고스란히 빠른시간내 구현하는 것은 당연하다. 객체지향적으로 개발해도 이것은 기본적으로 지켜야할 ‘의무’ 이고 ‘임무’다. 문제는 좋은 소프트웨어를 만들기 위해 기능 구현을 넘어 관심을 갖고 의식해서 신경써야 할 덕목이 있는데 우리는 보통 이런 부분을 무시하면서 기능 구현에 집착하게 된다.


 '매몰’, 개발자가 기능 구현만 집착할 경우 발생되는 부작용은 매몰현상이다. 한가지만 뚫어지게 신경써서 다른 중요한 것들을 보지 못하는 상황이다. 예를 들어 공군의 비행기, 전투기나 정찰기는 두명의 조종사가 타도록 설계된 기종이 있다. 왜 굳이 2명의 조종사가 필요할까. 앞에 조종사는 비행기를 움직이는데 특화되어 임무를 수행한다. 비행기의 고도, 속도, 방향, 선회등의 조종을 하고 만약 적기랑 조우하면 가파르게 파이팅~ 을 한다. 다른 조종사는 만약 정찰기면 정찰 업무, 비행기 바깥의 상황을 바라보고 넓은 시야에서 고급 정보가 될만한 장면들을 수집한다. 폭격기면 폭격할 장소를 측정하고 정확하게 폭격하도록 계산도 할 것이다. 이렇게 조종사가 두명인 이유는 한명의 조종사가 조종이라는 임무에 집중하다 보면 다른 중요한 일들을 하기 어렵기 때문이다. 비행기 조종사처럼 어느 한가지 일에만 몰두하면 다른 중요한 일들은 까맣게 덧칠되듯이 인식 못한다. 소프트웨어도 같다. 기능 구현만 집착하게 되면 다른 더 중요한 일(=유연함, 유지보수성, 확장성, 재사용성 등)들은 놓치고 잊게 된다.


덧글) 기존 내용에 비해 많은 내용을 다시 작성하고 있습니다. 내용에 대해 궁금한점은 댓글 주세요.~



Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요