본문 바로가기

책/The nature of software development

1. 가치를 이루는 것들 (3~4) 피처 단위 개발을 위한 가이드라인

반응형

[The nature of software development] Part 1. 가치를 이루는 것들 Chapter 3. 피처 단위 개발을 위한 가이드라인

 

Chapter 3. 피처 단위 개발을 위한 가이드라인

프로젝트를 진행할 때 가장 먼저 알아야 할 것은 바로 마감 일정이다.

마감일 전에 원하는 피처 모두를 얻을 수는 없다.

프로젝트를 그대로 두는 것보다 현실적으로 관리하는 것이 필요하다.

Q. 최근 참여한 프로젝트에서 제대로 진행되지 않은 일 중 중요한 일이 무엇이었나요?

- 9개의 습관 버튼 구현하는 것.

Q. 제대로 진행했지만 실제로는 시간만 낭비했던 일은 무엇이었나요?

- 홈페이지에 넣은 사진은 사실 큰 가치는 제공하지 않는다.

Q. 너무 늦었거나 늦을 뻔했던 적이 있었는지도 생각해봅시다.

- 코드숨 수강기간 전에 제대로 작동하는 앱이 완성되지 않았다.

 

소프트웨어 프로젝트가 진행되는 일반 과정

활동을 기반으로 계획을 세운다.

분석, 설계, 코딩, 테스트의 과정을 거친다.

분석이 끝나도 설계, 코딩이 제 시간에 끝난다는 보장은 없다.

테스트를 하면 보통 좋은 일은 일어나지 않는다.

 

프로젝트가 계획대로 가는 일은 정말 드물다.

보통 실제로 할 수 있는 것보다 더 많은 것을 목표를 설정한다.

하지만 그러한 상황을 깨달았을 때는 이미 늦은 때가 많다.

프로젝트 선언을 실패하거나, 끈기있게 느릿느릿 프로젝트를 진행하는 것 두 가지의 선택지가 있다.

둘 다 최악이다.

끈기는 항상 옳지 않다.

Q. 상태가 나쁜 소프트웨어를 배포해본 경험이 있나요?

- 네

Q.여전히 너무 많은 결함이 있었나요?

- 네

Q. 소프트웨어를 바꾸기에 너무 어려웠나요?

- 네(기본기의 부족)

Q. 핵심 피처들을 완성하지 못했나요?

- 네

Q. 중요한 아이디어가 있는데 추가하기에는 너무 늦은 적은 없었나요?

- 없다.

 

활동을 기반으로 한 제품은 100kg짜리 돌덩어리 같다.

모든 것을 분석하고 설계하고, 모든 코드를 써내려가면

모든 피처를 가질 수 없다는 사실을 너무 늦게 깨닫게 된다.

처음부터 여러 배포 일정을 계획해야 한다.

그 이유는 다음과 같다.

1. 가치를 빨리 전달한다.

2. 프로젝트를 관리하기 쉽다.

3. 소프트웨어의 개발 자체가 더 쉬워진다.

계획, 분석, 설계, 개발, 테스트 단계로 진행하는 것이 프로젝트 관리에 도움이 될까?

아니요 TDD합시다.

 

피처단위로 프로젝트를 진행하면 더 잘 예측할 수 있다.

피처 단위로 제품을 배포하는 데 필요한 방법을 가이드 하고, 그러한 프로젝트 관리 능력은 어떻게 기를까?

피처들은 실제로 일어나는 일을 눈으로 보여준다.

주어진 기간에 얼마나 많은 일을 할 수 있을 지 더 잘 예측할 수 있다.

제품을 항시 작동하게끔 만들면 프로젝트 위험 요소를 줄일 수 있다.

시험적인 작은 피처를 추가해 마케팅 위험 요소도 미리 대처할 수 있다.

 

더 나은 정보, 더 나은 가이드, 더 많은 결과물

Q. 이 방법으로 소프트웨어를 개발하기 위해서 무엇이 필요할까요?

Q. 개발하고 싶은 것이 무엇인지조차 이해할 수 없는 상황에서는 어떻게 프로젝트를 계획해야 할까요?

 

 

Chapter 4. 피처 단위로 조직 구성하기

소프트웨어를 개발할 때는 분야별로 다양한 기술이 필요하다.

각 분야에 필요한 기술자 없이는 프로젝트를 성공시킬 수 없다.

 

피처는 각 개발팀이 개발해야 한다.

각 개발팀은 서로 협업이 필요하다.

의사소통이 효율적이어야 한다.

각 개발팀이 온전한 피처 전체를 개발할 수 있도록 해야 한다.

하지만 투입할 수 있는 전문가가 그리 많지 않다.

피처를 중요한 순서대로 나열한 후 그것을 기반으로 팀을 구성하자.

 

학습 공동체를 만들자

시니어개발자는 전문가이기 때문에 높은 연봉을 받는 것이 아니다.

다른 사람을 전문가로 이끌어 줄 수 있기 때문이다.

 

피처 개발팀은 쉽게 확장할 수 있다.

크로스펑셔널 팀: 공동 목표를 위해 소속 부서와 조직을 불문하고 필요한 각 분야의 전문가로 구성한 팀.

반응형