Agile Practices

애자일 실천방법을 정리한다.

가치

빠르게 일하고 변화에 반응할 수 있도록 가치와 원칙을 세운, “애자일 소프트웨어 개발 선언문” 을 보자.

프로세스와 툴보다 개인과 상호작용이 우선이다

팀을 구성하는 일이 환경을 구축하는 일보다 더 중요하다.
팀을 만들기 위해 노력하고 팀의 필요를 기반으로 환경을 구축하자.

포괄적인 문서보다 동작하는 소프트웨어가 우선이다

설계 의사결정의 이유와 시스템을 설명하는 문서를 만들어야한다. 그 문서는 짧고 요약적이어야한다.
하지만, 문서화에 집착하지 말자. 그 필요가 급박하고 중요하지 않다면 아무 문서도 만들지 말자.

계약 협상보다 고객 협력이 우선이다

성공적인 프로젝트를 위해서는, 규칙적으로 자주 고객의 피드백을 받아야한다.
계약서나 작업 기술서에 의존하지 말고, 자주 피드백을 주고 고겍이 개발팀과 가까이 일해야한다.

계획을 따르는 것보다 변화에 대한 반응이 우선이다

팀이 시스템에 대해 알아갈수록, 고객이 그들의 요구에 대해 알아갈수록, 차트의 어떤 테스크는 필요 없어지고 어떤 테스크는 새로 추가될 수 있다.
바람직한 계획 전략은 다음 2주간의 세부적인 계획을 수립하고, 다음 3개월간의 개략적인 계획을, 그 이후로는 대강의 계획을 세우는 것이다.

원칙

앞의 가치들은 다음 열두 가지 원칙을 이끌어낸다.

최고의 가치는 소프트웨어의 빠르고 지속적인 공개를 통해 고객을 만족시키는 것이다

가능하면 기본적인 시스템을 프로젝트 시작 후 처음 몇 주 안에 공개하자.
그리고 2주마다 기능성을 증가시킨 시스템을 계속 공개하려고 노력하자.

개발 후반부에 접어들었어도, 요구사항 변경을 환영해라

태도의 선언이다. 애자일 프로세스의 일원은 변화를 걱정하지 않는다.

개발 중인 소프트웨어를 2주에서 2달 사이, 혹은 더 짧은 시간 간격으로 자주 공개해라

문서와 계획을 공개하는 것이 아니다.
목적은 고객의 요구를 만족시키는 소프트웨어를 공개하는 것이다.

업무를 하는 사람과 개발자는 프로젝트를 통틀어 계속 함께 일해야한다

프로젝트를 빠르게 진행하기 위해서는, 고객과 개발자 사이에 빈번한 상호작용이 있어야한다.

의욕적인 개인들을 중심으로 프로젝트를 구성해라

사람이 성공의 가장 중요한 요소이다.
환경과 필요로 하는 지원을 제공하고 그 들이 그 일을 해낼 것이라고 맡겨둬라.

개발팀 내에서 정보를 공유하는 가장 효율적인 방법은 직접 일대일로 대화하는 것이다

문서에 대해 큰 필요성을 느낄 때는 작성할 수 있지만, 필수는 아니다.
꼭 필요한 것은 대화이다.

개발 중인 소프트웨어가 진척 상황의 일차적 척도다

진척 상황은, 고객의 요구사항을 충족시키고 있는 소프트웨어의 비율로 측적한다.

애자일 프로세스는 지속 가능한 개발을 촉진한다. 지속적인 pace 를 유지해야한다

팀은 전력으로 출발해 그 속력을 유지하지 않는다. 빠르지만 지속 가능한 속도를 유지하자.

우수 기술과 좋은 설계에 대한 지속적인 관심은 속도를 향상한다

프로젝트를 빠르게 진행하는 방법은, 소프트웨어를 깨끗하고 튼튼한 상태로 유지하는 것이다.

단순성은 필수적이다

가장 간단하고 가장 고품질의 작업을 오늘 행하고, 내일 문제가 생기면 그 때 변경 작업을 하자.

최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 나온다

책임감은 외부로부터 팀원 개개인에게 수여된 것이 아니다.
책임감은 온전한 팀에게 전달되고, 팀은 그것을 충족시키기 위해 제일 좋은 방법을 결정한다.

팀은 규칙적으로 더 효과적인 방법을 반영해야하고, 그 행위를 조율하고 조정해야한다

환경이 계속 변하고 있다는 사실을 알고, 빠른 속도를 유지하기 위해 환경과 함께 변화해아한다.


클린 소프트웨어 <로버트 C.마틴>

Comments