소프트웨어 개발 과정은 매우 복잡합니다.
그러나 성공한 소프트웨어 개발이란, 본연의 `가치`를 추구할 때 단순화되며 비로소 이루어질 수 있음을 이 책을 통해 깨닫게 되었습니다.
도서명은 국문이 아닌 원서 그대로 `The Nature of Software Development`로 출간되었으나, 이 책의 제목을 `소프트웨어 개발의 본질'이라 부를 수도 있을 겁니다.
이 책은 소프트웨어 개발 프로세스를 최대한 활용하고자 하는 모든 사람들을 대상으로 하고 있습니다.
숙련된 개발자라면 흥미있을 법한 주제이지만, 소프트웨어 팀장 또는 관리자가 가장 많은 도움을 얻을 수 있을 것입니다.
저자 Ron Jeffries는 소프트웨어 작성에 관해 생각할 수 있는 간단하지만, 반드시 필요한 방법들을 제시하고 있습니다. 일과 팀을 조직하는 방법을 중심으로 서술하고 있습니다. 최근에 많은 애자일 방법론들이 논의되고 있겟지만, 15여년 전 애자일 선언문 (Agile Manifesto)으로 돌아가 본질적인 가치에 대해 주장하고 있습니다.
그가 말한 효과적인 소프트웨어 개발을 위한 7 가지 핵심 아이디어는 아래와 같습니다.
1. 가치에 초점을 두고 시작하고 끝낸다. : 우리가 제품에서 정말로 원하는 것. 가치있는 것에 대해 생각하고, 무엇이 더 중요하고 무엇이 그렇게 중요하지 않은지에 대해 생각한다.
2. '기능'이라고 불리는 작은 가치를 가진 제품을 만든다 : 가치 창출을 책임지는 팀을 구성한다. 우리는 그들이 무엇이 필요한지 그리고 얼마나 많은 시간을 사용할 수 있는지를 이해하는지 확인합니다. 우리는 스케줄과 약속을 검토하는 것이 아니라 실제로 구축 한 것을 관찰함으로써 업무를 안내한다.
3. 필요한 기능을 중심으로 팀을 구성한다 : 기능을 중심으로 할 때, 신속하게 가치를 계획하고 구축 할 수 있다. 선량한 사람들과 함께 조직하고 기술을 습득하도록 도와줌으로써 업무를 효율적이고 효과적으로 수행 할 수 있다.
4. 기능 측면에서 계획한다 : 팀을 배치하고 기능을 염두에두고 다음에 수행 할 기능과 연기할 기능을 선택하여 프로젝트를 조정한다. 먼저 높은 가치가 있는 것을 시작한다.
5. 기능 면에서 구축한다 : 필요로하는 아키텍처 및 인프라를 포함한 기능을 기반으로 구축한다.
6. 기능을 가장 작은 단위로 분할한다 : 우선 순위와 가치가 제일 높은 부분을 가능한 한 빨리 제작한 다음, 마감일까지 제품을 향상시킵니다. 최고의 가치를 우선적으로 구축하기 때문에 항상 최상의 제품을 내보낼 준비가 되어 있어야 한다.
7. 매일 품질을 향상 시킨다 : 가능한 한 무결점에 가깝도록 항상 필요한 모든 것을 적용한다. 지속 가능하고 지속적으로 가치를 끊임없이 구축한다.
이처럼 본 도서는`본질로 돌아가자`, 본질주의(Essentialism)적인 강한 메시지를 가지고 있지만, 얇은 책인 만큼 초보자가 읽어도 내용이 부담스럽지 않습니다. 삽화가 곁들어져 있어 내용을 이해하는데 많은 도움을 줍니다.
전반적으로 우리가 소프트웨어를 작성하는 이유에 대한 중요한 부분을 바로 잡아주고 효과적인 방식으로 소프트웨어를 만들기 위해 조직과 업무를 다루는 방법에 대한 청사진과 가이드를 제시하는 계몽적인 도서입니다.
이 책을 통해 소프트웨어 프로젝트 관리를 위한 생각의 작은 프레임 워크을 가질 수 있을 것 입니다.