크몽이 애자일(Agile) 프로세스를 시작한 이유
최근 크몽에서도 애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발 방법을 시작하게 되었습니다.
사업 초기에는 개발자가 대표인 저밖에 없었고 다른 일들을 병행하면서 진행하다 보니 애자일 개발을 하기 어려웠는데요. 다행스럽게도 애자일 개발을 오랫동안 수행해온 개발자가 크몽팀의 CTO로 합류하면서 크몽팀에도 애자일을 도입하게 되었습니다.
애자일을 잘 모르시겠다고요? 애자일 소프트웨어 개발에 대한 위키백과 내용은 간략히 정리해보면 다음과 같습니다.
‘애자일 소프트웨어 개발(Agile software development) 혹은 애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다. 최근에는 애자일 게임 보급 등의 여파로 소프트웨어 엔지니어링 뿐 아니라 다양한 전문 분야에서 실용주의적 사고를 가진 사람들이 애자일 방법론을 적용하려는 시도를 하고 있다.’
그럼 애자일 개발과 방법론에 대해서 간단하게 알아보실까요?
애자일 소프트웨어 개발의 개념
애자일 방법론은 소프트웨어 개발 방법에 있어서, 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론입니다. 계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있으며, 계획에 너무 의존하는 경우는 그 형식적인 절차를 따르는데 필요한 시간과 비용을 무시할 수 없으며, 전체적이 개발의 흐름 자체를 느리게 하는 단점을 가지고 있지요.
그렇기 때문에 애자일 방법론에서 택한, 그리고 다른 고전적인 방법론, 예를 들면 폭포수 모델 또는 나선 모형과 구별되는 가장 큰 차이점은 less document-oriented, 즉 문서를 통한 개발 방법이 아니라, code-oriented, 실질적인 코딩을 통한 방법론입니다. 그러므로 애자일 개발 방법론은 계획을 통해서 주도해 나갔던 과거의 방법론과는 다르게 앞을 예측하며 개발을 하지 않고, 일정한 주기를 가지고 끊임없이 프로토 타입을 만들어내며, 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style 이라고 할 수 있습니다.
애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 “애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말입니다. 예전에는 애자일 개발 프로세스는 “경량(Lightweight)” 프로세스로 불렸죠. 익스트림 프로그래밍 (XP:eXtreme Programming)이 애자일 개발 프로세스의 대표적인 방법이라 할 수 있습니다
개발 배경
애자일 프로세스의 배경에는 소프트웨어 개발 자체가 다른 공학적인 프로세스와는 큰 차이가 있음을 인지하는 데에서 부터 시작되었습니다. 이는 소프트웨어 위기의 원인과 해결방안을 찾는 데에서 부터 시작되었다고 할 수 있는데요. 90년대 후반까지의 소프트웨어 공학과 개발방법론은 장기간에 걸쳐 많은 사람들을 투입하고 충분한 비용을 투입하여 진행하는 다른 공학의 프로세스와 비슷한 맥락에서 진행되었습니다. 그러나 소프트웨어는 유동적이고 개방적이고 요구사항의 변경에 따른 작업량을 예측하기 힘들죠. 그래서 이미 고전적인 소프트웨어 공학이나 관리 기법만으로는 대처할 수 없게 된 것입니다.
이런 문제에 대한 기술적인 해결책으로 객체지향이 있는데요. 객체지향 기술은 그동안의 개발 문제를 적절하게 대처해 주었습니다. 하지만 객체지향 개발을 하기 위해서는 그에 적합한 개발 프로세스가 필요했는데요. 수많은 애자일 개발 프로세스가 이러한 필요에 따라 만들어진 것입니다. 따라서 애자일 개발 프로세스의 상당수는 객체지향 기술을 기반으로 하고 있습니다. 애자일 개발 프로세스는 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제를 가지는 데요. 그 전제 아래에서 합리적인 답을 내도록 하는 것이 애자일 개발 프로세스라고 할 수 있습니다.
애자일 개발 시작
크몽 개발팀은 크몽의 서비스를 사용자가 보다 쉽고 재미있게 사용할 수 있게 만들기 위해 매일같이 고민하고 있습니다. 그러기 위해서는 우리 개발팀이 먼저 ‘솔.선.수.범.’하여 “재미있게 일해야 한다”라는 생각하는데요. 그러기 위해 애자일(Agile)을 시작했습니다. 처음에는 조금 서툴고 많은 것들이 낯설게 느껴졌지만, 어느덧 크몽안에도 애자일이 녹아들고 있는데요.
매일 아침 9시 30분이 되면, 개발팀은 “프로젝트 현황판” 앞으로 하나 둘씩 모입니다. “어제는 오랫만에 친구들과 3차까지 달렸더니, 오늘 컨디션이 좋지 않네요”와 같은 간단한 체크인으로 데일리 스크럼(Daily Scrum)을 시작합니다.
어제 한 일과 오늘 할일, 그리고 몇 가지 공유사항을 서로서로 이야기합니다. 데일리 스크럼은 크몽 개발팀이 산으로 가지 않도록 하는 역할을 합니다.
하루하루를 데일리 스크럼으로 진행한 후, 금요일이 되면 이번 스프린트(Sprint)에서 진행한 모든 일을 뒤돌아 보는 스프린트 리뷰 미팅을 가집니다.
빠르게 손을 움직여서 완료된 “사용자 스토리”를 중심으로 이번 스프린트를 정리합니다. 물론 개발팀이니만큼, 코드 리뷰(Code Review) 활동도 빠뜨리지는 않아요. 오늘은 스티브(Steve)님과 조엘(Joel)님이 페이스북 연동과 jQuery를 활용한 동적 CSS 적용에 대한 코드를 리뷰해주셨습니다.
그리고 이번 스프린트에서 좋았던 점과 개선했으면 하는 점을 각자 적어서 스프린트를 뒤돌아보는 회고를 합니다. 회고를 통해 스프린트가 마무리되면, 스프린트 계획 미팅을 가집니다. 다음 스프린트에서는 어떤 사용자 스토리를 진행할지를 우선순위를 도출하여, 팀의 속도에 맞게 스토리를 선택합니다.
크몽의 애자일 활용을 간략히 소개해 드렸는데요. 크몽의 대표로서 애자일로 만들어가는 크몽팀의 모습을 보면 가슴이 두근거립니다. 달라지는 크몽의 모습을 기대해 주세요.
출처원문 : 우리도 애자일을 합니다