Kanban - 스타트업의 성공레시피(1)
David J. Anderson은 그의 저서 [칸반 : 지속적 개선을 추구하는 소프트웨어 개발]에서 자신이 여러 팀의 프로세스를 개선하면서 알게 된 스타트업의 성공 레시피에 대해서 다음과 같이 서술한다.
- 품질에 집중한다.
- 진행 중 업무를 줄인다.
- 자주 출시한다.
- 요구량을 처리량에 맞춘다.
- 우선순위를 부여한다.
- 예측성을 개선하기 위해 변동성의 원인을 공략한다.
각 단계는 대부분의 경우 순서대로 진행된다. 아래 목록으로 내려갈수록 관리자의 통제가 약해지며 팀원들에게 요구하는 행동변화가 많아진다.
전 단계가 완벽하게 체득되지 않은 상태에서 다음단계로 넘어가면 많은 문제가 생길 수 있기 때문에 각 단계에 대한 철저한 검증 또한 필요하다.
특히 마지막 단계인 변동성의 원인을 찾고 이를 통해 예측성을 증가시키는 일은 개발팀 뿐만 아니라 외부의 조직과도 긴밀한 신뢰 관계가 형성되어야 진행할 수 있기 때문에 많은 주의를 요한다.
1. 품질에 집중한다.
“지나친 결함은 소프트웨어 개발에서 가장 큰 낭비이다.” - p32
“팀 활동의 90% 이상이 결함 수저에 들어가는 상황이 흔하다는 뜻이다.” - p32
만약 높은 초기 품질을 유지할 수 있다면 이는 높은 팀의 생산성과 처리량을 이끌어낼 수 있을 것이다.
소프트웨어 품질 개선은 오래된 이슈이자 최고의 이슈이기도 하다. 그래서 이를 위해서는 애자일 개발과 전통적 접근 방식 모두를 고려해야 한다.
다음은 품질관리에 도움이 되는 도구 및 기법들과 간단한 설명이다.
테스트 & 코드리뷰
- 회귀 테스트 : 회귀 버그(이전에 수정했던 버그가 코드 추가 / 리팩토링 등의 과정을 거치면서 다시 발생하는 현상)를 발견/수정하기 위해서 버그가 발생했을 경우 해당 버그를 발견할 수 있는 테스트 코드를 작성한 후 수정하고 이후 프로그램이 수정되었을 때마다 해당 테스트를 실행하는 방식을 말한다. 테스트의 사이즈가 크기 때문에 자동화툴을 사용하는 것을 권장한다.
- 단위 테스트 : 소스코드의 특정 모듈이 의도된 대로 정확하게 작동하는지 확인하는 절차. 모든 메소드와 함수에 대해서 테스트코드를 작성하는 기법.
- 코드 인스팩션(Code Inspection) : 작성된 소스코드를 분석해서 개발 표준을 위반하거나 잘못 작성된 부분을 수정하는 작업. 시간이 많이 걸리는 작업이지만, 시행착오를 줄일 수 있는 좋은 방법이다.
- 짝 프로그래밍(Pair Programming) : 두 명의 개발자가 하나의 워크스테이션을 사용하여 프로그래밍 하는 것. 많은 방법이 있지만 이 글을 참조하면 좋을 것 같다
- 같이 참조하면 좋을 개념 : Peer review, Code walkthrough, Fagan inspection
특히 코드를 리뷰하는 작업의 경우 저자는 매일 30분정도는 코드를 검토하는데에 시간을 쓰라고 이야기한다.
디자인 패턴 & 개발도구 사용
- Open Source Society가 활성화 되면서 Rx, Functional Programming, MVVM 등 많은 도구들과 디자인패턴들이 소개되고 발전하고 있다. 당연히 이러한 것들을 잘 활용하면 품질이 개선된다.
- Software Factory : 디자인패턴을 코드 스니펫으로 요약하는데 사용할 수 있다.
이 부분은 개발팀의 행동변화를 필요로 하기 때문에 다소 어려운 단계이긴 하지만 품질을 확실하게 올릴수 있는 유용한 방법들이 많이 존재한다.
2번 부터 앞으로 한 포스팅에 한개의 레시피를 다뤄 볼 예정이다.