diff --git "a/9\354\236\245/\353\260\261\354\247\200\354\227\260.md" "b/9\354\236\245/\353\260\261\354\247\200\354\227\260.md" new file mode 100644 index 0000000..db49acd --- /dev/null +++ "b/9\354\236\245/\353\260\261\354\247\200\354\227\260.md" @@ -0,0 +1,58 @@ +# 9장 실용주의 프로젝트 + +## Topic 49 실용주의 팀 + +실용주의 팀은 작다. +구성원이 대략 10~12명 이하여야 하고, 추가되거나 빠지는 일이 드물어야 하며, 서로가 잘 알고 신뢰하며 의존해야 한다. + +팀 전체가 깨진 창문을 용납하지 않아야 하며, 반드시 제품의 품질에 책임을 져야 한다. + +'돌멩이 수프와 삶은 개구리' 이야기에서 개구리는 서서히 변하는 환경을 감지하지 못하고 결국 삶아진다. +범위의 확장, 일정 단축, 추가 기능, 새로운 환경 등 인지했던 부분의 변화를 파악하고 있어야 삶아지는 신세가 되지 않는다. + +성공을 원하는 팀이라면 지식과 기술에 투자하는 것을 고려해야 한다. +할 일을 기능 개발로만 몽땅 채우지는 말라. +새로운 기능을 만드는 것 외에도 해야 할 일들이 있다. + +- 구형 시스템 유지 보수 +- 프로세스 회고와 개선 +- 새로운 기술 탐험 +- 학습 및 기술 갈고 닦기 + +좋은 의사소통이 중복을 피하는 핵심이다. + +일관성과 정확성을 모두 보장하는 방법은 자동화하는 것이다. +도구 제작 역량을 갖추어서 프로젝트 개발과 서비스 배포를 자동화하는 도구를 만들고 적용하라. + +## Topic 50 코코넛만으로는 부족하다 + +화물 숭배의 함정에 빠지지 않아야 한다. +눈에 잘 띄는 결과물을 만드는 데만 투자하면서 기반이 되는 작업이 마법처럼 끝나있기를 소망하면 안 된다. + +소프트웨어 개발 방법론의 목표는 함께 일하는 것을 돕는 것이다. +어떤 특정 방법론에서 가장 좋은 부분만 가져다가 적절히 조정하여 사용해야 한다. +인기 있는 방법론 하나만 좇지 말고, 다른 것들로도 눈길을 돌려야 한다. + +진짜 목표는 소프트웨어를 제공함으로써 사용자가 즉각적으로 새로운 일을 할 수 있게 되는 것이다. +사용자가 필요로 할 때마다, 사업적으로 배포가 의미 있을 때마다 출시해야 한다. + +## Topic 51 실용주의 시작 도구 + +프로젝트를 지탱하는 기둥에는 '버전 관리, 회귀 테스트, 전체 자동화'가 있다. + +- 버전 관리 : 프로젝트를 빌드하는 데 필요한 모든 것을 버전 관리하에 두어야 한다. +- 회귀 테스트 : 지금 당장 버그를 찾도록 자신을 몰아세우지만, 덕분에 나중에 다른 사람이 버그를 발견하게 되는 상황을 피할 수 있다. +- 전체 자동화 : 현대 소프트웨어 개발은 스크립트화된 자동 절차에 의존하고 있다. 수작업이 필요해서는 안 된다. + +견고한 기반을 갖췄다면 사용자를 기쁘게 하는 것에 집중할 수 있다. + +## Topic 52 사용자를 기쁘게 하라 + +개발자로서 우리의 목표는 사용자를 기쁘게 하는 것이다. +소프트웨어 프로젝트 자체가 아니라 고객 잔존율, 데이터 품질, 절감 비용과 같은 성공 척도가 진짜로 의미 있는 사업 가치다. +소프트웨어는 이런 목적을 달성하기 위한 수단일 뿐이다. + +## Topic 53 오만과 편견 + +자신의 코드만 좋게 보고 동료들의 코드는 깎아내리는 편견을 버리고 다른 사람의 코드를 존중해야 한다. +코드에 붙은 여러분의 이름이 품질의 보증 수표로 인식되게 해야 한다.