요즘 경영의 화두는 단연 '애자일(Agile)'입니다. 전 세계적으로 잘 나가는 구글, 애플, 마이크로소프트 등이 경영 방식으로 도입하였습니다. 글로벌 IT 기업들의 성공을 지켜본 많은 기업들과 공공기관들, 그리고 스타트업들도 앞다투어 애자일을 경영 방식으로 활용합니다. 그렇다면, 애자일은 어떤 경영 방식일까요?
애자일(Agile)은 '날렵한, 민첩한, 기민한' 뜻의 영어 단어입니다. 애자일은 1991년 처음 미국 소프트웨어 개발 업계에 처음 등장하였고 2001년 에자일 선언문과 에자일 소프트웨어의 12가지 원칙이 만들어졌습니다.
당시 소프트웨어 개발 업체들은 시스템 요구 사항을 분석하고 완벽한 개발 계획을 수립한 후에 개발자들이 개발 계획에 따라 구현하였습니다. 대표적인 개발 방식은 폭포수(Waterfall) 모델입니다. 폭포수 모델의 장점은 프로젝트 구성원들이 쉽게 이해할 수 있고 무엇을 개발하는지를 명확히 이해할 수 있다는 것입니다. 반면에 계획대로 진행되지 않을 경우 큰 문제가 발생합니다. 계획된 납기일을 맞추기 위한 철야 작업과 개발자들의 스트레스는 극에 달하지만, 고객의 요구사항을 충족하기는 어렵습니다. 전통적인 개발 방식은 계획대로 소프트웨어를 만들고 출시하는 것이 최우선 과제입니다. 만일 개발을 완료한 시점에 시장과 고객이 바뀌었다면, 소프트웨어는 무용지물입니다.
불확실한 미래를 정확히 예측하는 것이 어려워지면서 전통적인 개발 프로세스를 보완할 수 있는 애자일 개발 프로세스가 대두되었습니다. 에자일 개발 프로세스는 개발 계획이 변경될 수 있다는 것을 전제합니다. 고객의 요구사항과 시장 상황에 맞추어 개발을 진행합니다. 언제나 제대로 동작할 수 있는 소프트웨어를 정의하고 모듈화 하고, 최대한 짧은 기간에 한 단위의 개발 사이클을 완료합니다. 개발자와 고객 간에 피드백과 상호협력을 통해 소프트웨어는 지속적으로 개발합니다.
지금은 미래가 불확실할 뿐만 아니라 시장이 빠르게 변합니다. 처음부터 완벽한 전략을 만들고 세부 실행 계획을 만들기 위해 노력하지만, 시장은 계획대로 머물러 있지 않습니다. 미래를 정확히 예측할 수 있는 방법이 없기 때문입니다. 시장이 변화할 때마다 전략을 빠르게 수정하고 세부 실행 계획을 변경해야 합니다. 즉, 시장의 변화에 민첩하게 대응할 수 있는 조직과 업무 방식이 필요합니다
전통적인 조직은 리더가 전략을 수립하고, 직원들이 전략을 실행합니다. 리더는 시장에 맞는 전략을 구사하기 위해 조사와 분석에 많은 시간을 할애합니다. 직원들의 성과는 전략에 따른 세부 실행 과정의 진척도에 따라 평가합니다. 전통적인 조직은 미래를 정확히 예측할 수 있을 때 최대의 효율을 발휘합니다. 하지만, 전략과 세부 실행 계획을 수립하는 시간이 오래 걸리고, 중간에 변경이 어렵고, 위험관리가 제대로 동작하지 않습니다.
기업들은 전통적인 조직의 문제점을 극복하기 위해 애자일 개발 프로세스를 적용하였습니다. 에자일 조직은 빠르고 민첩하게 움직일 수 있는 조직을 말하며, 급변하는 시장 환경에 빠르게 대응할 수 있습니다. 전략의 수립보다는 빠른 실행과 보완에 중점을 둡니다. 불확실한 미래를 예측하기보다는 전략과 계획 수립과 실행 기간을 짧게 가져가서 반복적인 실행 하여 경험을 쌓습니다. 고객의 요구 사항과 시장의 변화에 적극적으로 대응합니다.
예를 들어, 전통적인 조직은 출발지에서 눈을 뜨고 목적지를 본 후 도착할 때까지 눈을 감고 걸어가는 것이라면, 애자일 조직은 출발지에서 목적지를 본 후 잠시 걸어간 후 다시눈을 떠서 목적지를 점검합니다. 이 과정을 짧게 가져가서 지속적으로 반복합니다.
맥켄지 보고서에 따르면 애자일 조직은 다섯 가지 특징이 있습니다.
조직 전체에 공유된 목적과 비전
권한 위임을 받은 네트워크 팀 구조
빠른 의사결정과 학습 사이클
역동적이 사람중심 모델
차세대 기술 활용
애자일이 민첩한 조직이라는 것은 이해할 수 있지만, 어떻게 움직여야 하는 지를 잘 이해하기 어렵습니다. 애자일 개발 선언문과 12가지 개발 원칙을 읽어본다면, 애자일 조직의 느낌을 정확히 알 수 있습니다. 애자일에 대한 사상과 원리가 애자일 방법론에 포함되어 있기 때문입니다.
2001년 2월 켄트 벡 (Kent Beck) 외 16명의 저명한 소프트웨어 개발자들이 미국 유타주의 스노버드 스키 리조트에 모였습니다. 다양한 소프트웨어 개발 방법론에 대한 논의를 하면서 선언문을 완성하였습니다. 이때 논의된 개발 방법을 애자일 (Agile)이라 명명하였습니다. 선언문(Agile Manifesto)의 내용은 아래와 같고, 애자일 얼라이언스에서 확인할 수 있습니다.
We are unvovering better ways of developing software by doing it and helping others do it. through this work we have come to value.
우리는 소프트웨어를 개발하고 다른 사람들이 개발하는 것을 도와주면서 더 나은 소프트웨어 개발 방법을 찾을 것입니다. 이를 통해 우리는 다음을 가치 있게 여기게 되었습니다.
Indinivuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contact negotiation
Responsing to change over following a plan
과정과 도구보다 개인과 상호 작용을
이해할 수 있는 문서보다 작동하는 소프트웨어를
계약 협상보다는 고객과의 협력을
계획에 따르기보다 변화에 대응하기를
That is, while there is value in the items on right, we value the items on the left more.
오른쪽의 아이템들도 가치가 있지만, 왼쪽의 아이템들이 더 높은 가치가 있습니다.
애자일 선언을 기반으로 12개의 에자일 소프트웨어 개발 원칙이 정립되었습니다. 이상적인 에자일 프로세스를 구체화하였습니다. 내용은 아래와 같습니다.
We follow these principles:
우리는 다음의 원칙을 따른다:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
개발자의 최우선 순위는 가치 있는 소프트웨어를 일찍 그리고 지속적으로 개발하여 고객을 만족시키는 것이다.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
비록 개발 일정의 막바지일지라도 고객의 요구 사항 변경을 환영하라. 애자일 프로세스는 고객의 경쟁 우위를 위한 변화를 활용한다.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
제대로 작동하는 소프트웨어를 몇 주에서 몇 달 단위 간격으로 자주 개발하라. 더 짧은 기간을 선호하라
4. Business people and developers must work together daily throughout the project.
비즈니스 사람들과 개발자들은 프로젝트 내내 반드시 같이 일해야 한다.
5. Build projects around motivated individuals.Give them the environment and support they need, and trust them to get the job done.
동기 부여가 된 사람들로 프로젝트를 구성하라. 그들이 필요로 하는 환경과 지원을 제공하고, 그들이 프로젝트를 완수할 때까지 신뢰한다.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
개발팀 내에서 정보를 전달하는 가장 효율적이고 효과적인 방법은 면대면 대화이다.
7. Working software is the primary measure of progress.
제대로 작동하는 소프트웨어가 진행상황을 측정하는 방법이다.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
애자일 프로세스는 지속 가능한 개발을 장려한다. 스폰서, 개발자, 사용자는 일정한 페이스를 계속 유지할 수 있어야 한다.
9. Continuous attention to technical excellence and good design enhances agility.
기술적 탁월성과 좋은 설계에 대한 지속적인 주목이 애자일을 강화한다.
10. Simplicity--the art of maximizing the amount of work not done--is essential.
단순성이 필수다 - 단순성은 하지 않을 업무량을 최대화하는 기술이다
11. The best architectures, requirements, and designs emerge from self-organizing teams.
최고의 아키택쳐, 요구사항, 설계는 스스로 생성된 팀에서 창발 한다.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts
its behavior accordingly.
정기적으로 팀은 더 효과적인 방법을 모색하고 이에 따라 팀의 행동을 조율하고 조정한다.
여러 가지 애자일 방법론들은 12개의 원칙을 기반으로 합니다. 스프린트(Sprint)는 3번 원칙과 12번 원칙에서 파생되었습니다. 짧은 기간을 스트리트 단위로 명명하여 스프린트 단위로 소프트웨어를 개발을 합니다. 하나의 스프린트가 끝나면 회고 (Retrospective)를 진행합니다. 에자일 방법론은 큰 조직보다는 작은 팀에 효율적입니다. 이유는 5번에 기초하기 때문입니다.