2017년 8월 19일 토요일

소프트웨어 스펙은 왜 쓰기 어려운가?

스펙을 잘 쓰는 것은 소프트웨어 프로젝트를 성공하기 위한 가장 중요한 요소중 하나라는 것은 이미 수차례 강조한 얘기다.

스펙을 적절히 제대로 작성하지 않았다는 얘기는 건설에서 설계도를 제대로 만들지 않고 건설을 하는 것과 같이 소프트웨어 프로젝트에서도 여러가지 문제를 야기시킨다.

  • 프로젝트가 종료 일정을 지키지 못할 가능성이 높다.
  • 소프트웨어 아키텍쳐가 엉망이 될 가능성이 높다.
  • 소프트웨어 품질을 보장하기 어렵다.
  • 개발자들이 야근에 내몰려 혹사를 당하기 쉽다.
  • 개발에 관련된 지식 축적이 어렵다.
  • 추후 요구사항이 변경되어도 소프트웨어에 어떠한 파급효과가 있는지 예측하기 어렵다.
  • 업그레이드 프로젝트를 효과적으로 진행하기 어렵다.

실제로 많은 회사들에서는 소프트웨어 스펙을 잘 쓰기 위해서 많은 투자를 한다. 그럼에도 왜 스펙을 잘 쓰기 어려운가? 또한 개발자들이 분석 설계를 잘 할 수 있는 뛰어난 아키텍트로 성장이 잘 안되는가?

많은 개발자들은 독학을 통해서 뛰어난 프로그래머가 되기도 한다. 하지만 왜 스펙 작성은 독학으로 잘 안되는가? 스펙은 프로그래밍보다 훨씬 많은 측면으로 분석을 해야 하고 복잡하기 때문이다. 스펙 작성은 골프와 피아노에 비견되곤 한다. 그래서 스펙 작성을 골프와 피아노에 비교를 해보았다.

소프트웨어 스펙 작성
골프 
피아노
효과
책을 보고 스스로 공부해서 스펙을 적는다.
골프 잘치는 책을 보고 혼자서 연습한다.
피아노 교본을 보고 혼자서 연습한다.
역효과
강연을 듣고 필요성을 절감해서 스펙을 적는다.
타이거 우즈 특강 모임에서 깨달은 바가 있다.
피아노 잘치는 법이라는 강연을 듣는다.
미미한 효과
인터넷에서 좋다는 Template을 구해서 각 항목을 채운다. 
좋다는 골프채를 구매해서 골프를 친다.
좋은 피아노를 사서 열심히 연습한다.
미미한 효과 또는 역효과
일하면서 뛰어난 선배들이 작성한 스펙을 본다.
골프 연습장에 골프를 잘치는 프로가 많아서 수시로 골프 치는 것을 볼 수 있다.
피아노 교습소에 뛰어난 피아니스트가 있어서 연주를 수시로 볼 수 있다.
좋은 환경
스스로 스펙을 작성하고 뛰어난 아키텍트 선배의 리뷰를 받는다.
골프 코치에게 골프를 배우고 연습을 반복한다.
피아노 선생님에게 피아노 치는 것을 배우고 연습을 반복한다.
발전 가능성이 높은 환경
수년간 지속적으로 스스로 스펙을 작성하고 뛰어난 아키텍트 선배의 리뷰를 받는다.
수년간 실전 골프를 치면서 지속적으로 골프 코치에게 스윙을 교정받고 배운다.
수년간 피아노를 치면서 지속적으로 선생님에게 피아노 치는 것을 배운다.
발전 가능성이 가장 높은 방법

본인 스스로도 타 프로젝트의 수많은 스펙의 리뷰에 참여한다.
후배들의 골프 스윙도 봐주면서 이론적으로도 지식을 쌓는다.
후배들이 피아노를 치는 것을 봐주면서 조언을 해준다.
발전 가능성이 가장 높은 방법

이쯤 설명하면 많은 회사들이 왜 스펙을 잘 작성하기 어려운지 이해가 될 것이다.

개인관점으로 보면 좋은 환경을 갖춘 곳에서 일하는 것이 가장 좋다고 할 수 있다. 회사입장에서는 회사를 좋은 환경으로 만들고 좋은 관행을 만들어야 한다. 그럼 회사가 가져야 할 좋은 관행이란 무엇이 있을까?

  • 뛰어난 아키텍트를 여러명 보유한다.
  • 작은 프로젝트라도 스펙을 제대로 작성하고 개발하는 문화를 만든다.
  • 철저한 정보 공유, 투명한 개발 환경
  • 경영진을 비롯하여 많은 프로젝트 관련자들이 스펙을 충분히 리뷰한다.

그럼 반대로 이를 저해하는 나쁜 관행들은 무엇이 있을까?

  • 빠르게 개발한다는 명목하게 주먹구구식 개발을 신봉한다.
  • 원칙보다 기법에 현혹되어 여러 방법론을 기웃거린다.
  • 복잡한 프로세스가 문제를 해결해 줄것으로 맹신하고 강요한다.
  • 코딩이 가장 중요하다고 생각한다.
  • 작성된 스펙에 관심들이 없어서 리뷰에 소홀하다가 개발 후에 부담없이 변경을 요구한다.
  • 상명하복의 조직문화


이런 문화에서는 뛰어난 아키텍트가 있다고 하더라도 무용지물일 뿐이다. 회사는 좋은 관행을 만들어가고 개인들은 좋은 습관을 가지도록 노력할 때 수년 후에는 스펙을 제대로 작성할 수 있는 역량을 갖추고 소프트웨어 개발 역량이 글로벌 회사들과 경쟁할 중요한 기초 역량을 갖추어 가고 있다고 할 수 있다. 

댓글 없음:

댓글 쓰기