클린 애자일(Clean Agile - Back to Basics) - 2장 왜 애자일인가
직업의식
우리 사회는 전적으로 소프트웨어에 의존하고 있다. 소프트웨어 없이는 지금 우리가 누리는 문명을 만들 수 없을 것이다.
그렇다면 누가 소프트웨어를 만드는가? 여러분과 나다. 우리 프로그래머가 세상을 지배한다.
나는 꿈꾸었고, 지금도 꿈꾼다. 애자일 소프트웨어 개발의 규율이 컴퓨터 프로그래밍을 진정한 직업, 명예로운 직업으로 바꾸는 첫 단추가 될 것이라고.
당연한 기대
우리는 쓰레기를 내보내지 않겠다.
애자일이 강조하는 테스트, 리팩터링, 단순한 설계, 고객의 피드백이 나쁜 코드가 출시되지 않게 막는 확실한 해결책임을 알아 두자.
기술적 준비 상태 유지하기
시스템은 각 반복 주기가 끝날 때마다 기술적으로는 배포 가능해야 한다. 기술적으로 배포 가능하다는 이야기는 개발자가 보기에 시스템이 배포해도 될 만큼 기술적으로 견고하다는 뜻이다. 코드는 깨끗하고 모든 테스트가 성공해야 한다.
반복 주기가 끝날 때마다 시스템이 기술적으로는 배포 준비가 되어 있다면, 배포 자체는 비즈니스 결정 사항이 된다.
안정적인 생산성
아키텍처, 설계, 코드를 가능한 한 계속해서 깨끗하게 관리하여 생산성을 높게 유지해야 한다.
애자일 실천 방법 중 테스트, 짝 프로그래밍, 리팩토링, 단순한 설계는 함정을 피하는 기술적인 비결이다. 그리고 계획 게임은 팀을 함정으로 떠미는 일정 압박에 대한 해결책이다.
낮은 수정 비용
소프트웨어(software)는 합성어다. ‘웨어(ware)’는 ‘제품(product)’을 의미한다. ‘소프트(soft)’는 바꾸기 쉽다는 뜻이다. 소프트웨어를 변경하기 어렵게 만들었다는 것은 소프트웨어의 진정한 존재 이유를 훼손한 것이다.
테스트 주도 개발, 리팩터링, 단순한 설계라는 애자일 실천 방법이 소프트웨어 시스템을 최소한의 노력으로 안전하게 바꿀 수 있게 해 준다.
지속적인 개선
소프트웨어 시스템은 오래될수록 더 좋아져야 한다.
애자일 실천 방법인 짝 프로그래밍, 테스트 주도 개발, 리팩터링, 단순한 설계는 이런 기대에 부합할 수 있도록 강력하게 도와준다.
두려움을 이기는 능력
확고한 규율과 투지로 테스트 주도 개발을 실천한다면, 두려움을 이기는 능력을 갖추게 될 것이다.
QA는 아무것도 찾지 못해야 한다.
QA가 문제를 찾는다면, 개발팀은 개발 프로세스에서 어디가 잘못되었는지 찾아내야 하며 다음번에는 QA가 찾지 못하도록 고쳐야 한다.
애자일 실천 방법인 인수 테스트, 테스트 주도 개발, 지속적인 통합이 이런 기대에 부합할 수 있도록 도와준다.
테스트 자동화
애자일 실천 방법인 테스트 주도 개발, 지속적인 통합, 인수 테스트가 이런 기대에 부합할 수 있도록 도와준다.
우리는 서로를 대신한다.
지식을 칸막이에 가두어서는 안 된다. 지식을 공유해야 한다.
애자일 실천 방법인 짝 프로그래밍, 전체 팀, 공동 소유가 이런 기대에 부합할 수 있도록 도와준다.
정직한 추정
정직하게 추정을 해야 한다. 모든 것을 알지는 못 할 것이다. 그러니, 아는 것과 모르는 것에 기반하여 추정해야 한다.
어떤 일이 얼마나 걸릴지는 모르더라도, 한 작업을 다른 작업과 상대적으로 비교할 수는 있을 것이다.
아니면 상대적으로 비교하는 대신, 가능한 값의 범위를 말할 수도 있을 것이다.
애자일 실천 방법인 계획 게임, 전체 팀이 이런 기대에 부합할 수 있도록 도와준다.
“아니요”라고 말해야 한다.
문제의 해결책이 없을 때는 “아니요”라고 말해야 한다.
애자일 실천 방법인 전체 팀이 이런 기대에 부합할 수 있도록 도와준다.
지속적이고 적극적인 학습
우리 산업은 빠르게 변한다. 우리도 발맞추어 변해야 한다. 그러니 배우고, 배우고 또 배워라!
애자일 실천 방법인 전체 팀이 이런 기대에 부합할 수 있도록 도와준다.
멘토링
가장 좋은 공부 방법은 가르치는 것이다.
애자일 실천 방법인 전체 팀이 이런 기대에 부합할 수 있도록 도와준다.
권리 장전
스노버드 회의 당시, 켄트 벡은 애자일의 목표가 사업과 개발 사이의 분열을 치유하는 것이라고 말했다. 이를 위해 모인 사람 중 켄트 벡, 워드 커닝햄, 론 제프리스가 다음 권리 장전을 만들었다.
결론
전문가다운 소프트웨어 개발을 뒷받침하는 여러 규율이 모여 애자일이라는 체계를 이룬다. 규율을 따름으로써 이렇게 개발자와 고객 서로 권리를 부여하고 기대를 받아들이는 것이 소프트웨어 윤리 규범 기반이다.
애자일은 윤리적인 직업의 기반을 이루는 권리, 기대, 규율을 한데 모은 것이다.