소프트웨어 개발에는 본질적인 방법이 존재한다. 그 방법은 사용자, 비즈니스, 경영진, 개발자 모두에게 도움을 준다. 따라서 본질적인 방법을 가장 높은 위치에 있는 경영진부터 가장 아래쪽에 있는 제품 책임자 그리고 개발자 모두가 알아야 한다.
작동하는 소프트웨어
를 보여주는 것이다. 작동하는 소프트웨어는 가치를 전달한다. 이러한 가치를 빠르고 자주 전달해야 한다. 이게 전부다. 나머지는 그래서 작동하는 소프트웨어를 보여주려면 어떻게 해야 되는가?에 대한 문제다.
가치란 우리가 원하는 것이다. 우리가 왜 일을 하는지에 대한 것이다. 돈을 벌 수도 있고 삶을 더 좋게 할 수도 있다.
가치를 전달하면 피드백으로부터 우리가 다음에 어떤 가치를 전달하지 변한다. 그래서 계획을 한 번만 세우고 지속하는 것이 아닌 무엇을 바꿀지 항상 고민하고 바꾸기 위해서는 지속적인 학습을 해야 한다.
우리와 사용자 모두 이해할 수 있는 조각을 개발해야 한다. 이는 피처라고 부른다.
피처 단위로 프로젝트를 진행하면 예측하기 더 쉬워진다. 왜냐하면 소프트웨어를 볼 수 있기 때문에 무슨 일이 일어나는지 바로 알 수 있기 때문이다.
주기마다 하나의 완성된 제품을 만들도록 목표를 세워야 한다. 주기마다 다음에 개발해야 할 피처와 그 피처의 테스트 방법을 정리해야 한다.
가장 높은 가치를 가진 피처를 먼저 개발해야 한다. 조직은 한정된 시간과 돈으로 가장 좋은 제품을 개발하는 방법을 배우게 된다. 이 과정은 반드시 투명하게 진행되어야 한다.
피처는 완료와 미완료로 구분해야 한다. 중간은 없다.
피처 단위 개발은 매 주기가 완벽한 개발 프로세스를 포함한다. 프로세스에는 요구 사항, 설계, 코딩, 그리고 테스트를 포함한다.
피처를 유연하게 추가하기 위해서는 프로젝트가 시작할 때부터 끝날 때까지 시스템의 기반을 견고하게 유지해야 한다.
각 개발팀은 피처의 일부가 아닌 전체를 개발할 수 있는 기술을 가지고 있어야 한다. 그러면 작업을 쉽게 할당할 수 있고 모든 작업이 어떻게 진행되고 있는지 쉽게 알 수 있다.
기술이 부족하다면 기술을 공유할 학습공동체를 만들어야 한다. 조직에서 가장 뛰어난 사람은 경험이 적은 사람들을 이끌어야 한다.
먼저 개발해야 할 핵심 피처를 추려야 한다. 시간과 예산을 정해 두고 가장 중요하고 가치 있는 피처를 우선으로 제품을 개발한다. 제품은 언제든지 배포할 수 있는 상태로 준비한다.
프로젝트는 가치를 우선하므로 계획은 프로젝트 기간 내내 필요하다. 1 ~ 2주를 하나의 주기로 각각의 피처는 2 ~ 3일 정도로 작업할 분량이 좋다.
오늘은 어제의 업무량만큼 일할 수 있다. 가장 최근 주기의 작업량을 기준으로 업무량을 계획해야 한다.
개인이 아닌 팀이 할 수 있는 양을 추정해야 한다.
반드시 개발주기가 끝날 때마다 가능한 한 버그가 없도록 유지해야 한다. 오직 테스트만이 결함을 최소화하는 방법이다.
개발 주기가 끝날 때마다 반드시 비즈니스 테스트를 수행해야 한다. 새로운 피처가 잘 작동하는지 뿐만 아니라 이전에 있던 피처들에 문제는 없는지도 확인해야 한다. 그러려면 반드시 비즈니스 관점에서 테스트해야 하며 제품이 마주칠 다양한 환경도 확인해야 한다.
테스트는 비즈니스와 개발자 관점으로 나눠 진행해야 한다. 비즈니스 테스트에서도 결함이 발견되기를 기대할 수 있지만 비즈니스 테스트는 매우 오랜 시간에 걸쳐 진행되며 문제가 발생해도 구체적인 에러를 알려주지 않는다. 따라서 개발자도 자동화된 전체 테스트를 진행해야만 결함을 조기에 발견하고 수정하여 제품을 더 안정적으로 만들 수 있다.
피처 단위로 제품이 성장할수록 설계 또한 함께 성장해야 한다. 그러려면 지속적으로 설계를 개선해야 한다. 따라서 리팩터링을 지속적으로 수행해야 한다.
올바른 설계를 유지하지 못하면 작업 속도는 점점 떨어지고 시간과 비용이 점점 커지게 된다.
따라서 피처 단위로 개발하려면 테스트와 리팩터링을 함께 진행해야 한다.
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!