01.소프트웨어공학/Agile

'애자일 선언'의 원칙이 주는 의미

임똘 2010. 1. 28. 13:13
애자일 동맹(Agile Alliance)은 애자일 선언의 '가치'를 실천하기 위해 12가지 '원칙'을 정의했습니다. 이 원칙이 주는 의미도 한번 생각해 보겠습니다.

우리의 최고 가치는 유용한 소프트웨어의 빠르고 지속적인 공개를 통해 고객을 만족시키는 것이다.
연구 결과에 따르면 작은 기능을 고객에게 빨리 전달할수록 품질은 높아진다. 기능을 사용할 수 있다면 바로 사용하면 되고 아직 부족하면 계속 개발할 지 여부를 결정할 수 있다.

개발 후반부에 접어들었다 할지라도, 요구사항 변경을 확인한다. 애자일 프로세스는 고객의 경쟁 우위를 위해 변화를 이용한다.
애자일 개발에서는 고객도 팀의 일원이 된다. 시장의 요구는 변하기 때문에 고객의 요구사항이 시간에 따라 변하는 것은 당연하다. 팀은 이를 요구사항의 변경으로 보지 않고 시장의 요구를 더 정확히 알게 된 것으로 본다.

개발중인 소프트웨어를 2주에서 2개월 사이, 혹은 더 짧은 간격으로 자주 인도한다.
프로젝트 전체 과정 동안 비즈니스를 하는 사람과 개발자는 계속 함께 일해야 한다.
프로젝트를 빨리 진행하기 위해서는 고객, 개발자와 같은 이해당사자 간의 빈번한 대화가 필수적이다. 이를 위해서 함께 같은 장소에서 일하는게 좋다.

의욕적인 개인을 중심으로 프로젝트를 구성한다. 환경과 필요한 것을 지원하고 그들이 그 일을 해 낼 것이라는 믿음을 갖고 일을 맡긴다.
프로젝트에서 가장 중요한 것은 사람이다. 사람에게 장애가 되는 환경은 모두 바꿔야 한다.

개발 팀 내부에서 정보를 전달 및 공유하는 가장 효율적이고 효과적인 방법은 직접 일대일로 대화하는 것이다.
문서가 30% 완성되었다고 해도 시스템이 완성된 게 없다면 아무 의미가 없다. 중요한 건 일이 끝나는 것이다.

애자일 프로세스는 지속 가능한 개발을 촉진한다. 스폰서, 개발자, 사용자는 꾸준히 지속가능한 속도를 유지할 수 있어야 한다.
소프트웨어 개발은 마라톤이지 100m 달리기가 아니다. 과도한 근무는 집중력을 떨어뜨리고 피로를 누적시켜 오히려 일을 망치게 된다.

우수한 기술과 좋은 설계에 대한 지속적인 관심은 진행 속도를 향상시킨다.
빨리 개발하기 위해 품질을 낮추는 것은 어리석을 생각이다. 초반부터 좋은 품질을 유지하기 위해 노력한다면 오히려 개발이 진행되는 동안 개발속도가 빨라진다.

단순성(아직 끝내지 않은 일의 양을 최대화하는 기술)은 필수적이다.
할 수 있는 것을 하는게 좋다. 불필요하게 어려운 기술을 사용한다거나 미래를 생각해서 복잡한 구조를 선택하는 것은 개발 속도를 느리게 할 뿐이다.

최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 나온다.
팀은 최고의 결정을 하기 위해 각 멤버가 전체 분야에 참여한다. 팀 전체는 이 결정에 대한 책임 역시 공유한다.

규칙적으로, 팀은 좀 더 효과적인 방법을 반영해야 하고, 적절히 그 동작을 조율하고 조정해야 한다.
프로젝트 상황은 계속 변한다. 변화를 따라가려면 팀이 일하는 방식도 수시로 변해야 한다.