닥코 유튜브 채널에 애자일에 대해서 얼마나 많은분들이 알고있는지에 관련한 설문조사를 올린적이 있다. 생각 외로 많은 분들이 애자일을 모르는 분들이 훨씬 많다는 것을 알게 되었다.

코딩은 여러 미디어나 강의를 통해 많이 익히게 되지만, 실무적인 product management, product development 에 관련된 방법론, 철학, 어떤 과정을 통해 어떤 식으로 product가 완성되는지, 이런 부분에 대한 이야기를 할 필요성을 느꼈다. 

이번 포스팅을 통해 애자일에 관련한 첫 발걸음을 떼어보는 시간을 가져보자.

애자일은  methodology, 즉 방법론이 아니다. 프로젝트 매니지먼트를 정확하게 어떻게 해야 된다고 가이드를해주는 방법론이 아니다. 애자일은 하나의 마인드셋, 사상, 혹은 철학이다. 애자일 철학을 기반으로 파생된 방법론은 우리가 흔히 알고 있는 스크럼, 칸반, 익스트림프로그래밍, lean software development, 이런 여러 가지 방법이 있다. 

애자일이 뭘까? 애자일의 뜻이 무엇일까?
애자일을 그대로 직역하면 ‘날렵한’, ‘기민한’ 이런 뜻인데, 일상 영어에서 애자일을 사용하는 경우를 예를 들자면 – 운전하면서 ‘Oh! This car is very agile.’ 이렇게 얘기할 때가 있다.
이것은 내가 운전하는 대로 차가 즉각 반응을 한다, 원하는 방향으로 갑자기 틀어도 반응이 굉장히 빠르다 이런 것을 얘기할 때 ‘애자일하다’ 라고 흔히 이야기한다.

그 뜻을 그대로  ‘빠르다, 기민하게 반응할 수 있다’는 것을 우리가 생각하면 된다. 

‘애자일은 이렇게 하는 게 맞아’, 혹은 ‘애자일은 이렇게 하면 안되’ 이렇게 정의 내리기에는 굉장히 애매모호한 하나의 사상, 철학이기 때문에, ‘우린 스크럼을 하고 있어’, 아니면 ‘우리는 칸반을 하고있어’ 이렇게 구분 지어서 정확하게 정의를 낼수 있는 것은 방법론의 선에 있다고 말할수 있다. 

애자일의 역사에 대해서 잠깐 얘기를 해 보자면, 애자일은 1913년 포드 회사 창시자 핸리 포드가 자동차를 생산 하기 위해서 고안해낸 하나의 제조방식에서 파생된 것이다.
이것을 정확하게 소프트웨어 엔지니어링에 적용하기 시작한 것은 그리 오래되지 않았다. 이런 생산 라인 방식을 소프트웨어 개발에 이론적으로 생각하기 시작한 것은 2001년이다. 
정확하게 우리가 지금 흔히 얘기하고 있는 애자일은 그당시에는 Agile Manifesto, 애자일 방법론이라고 칭하기 시작했다. 애자일이 실제로 상용화가 되고 개발 인더스트리의 정착이 되고 활용되기 시작한 것은 2008년-2009년이다.
이때부터 애자의 급속도로 상용화되기 시작했다. 당시 기억하기로는 회사에서 인터뷰를 볼 때 애자일에 관련한 경험이 있는지, 그것에 관련된 키워드에 대해서 물어보는것이 흔한 인터뷰 질문중 하나였다. 

애자일을 소프트웨어 엔지니어링 차원에서 정확하게, 간략하게 설명을 하자면 – 개발자든지, 디자이너든지, 직업에 관련없이 하나의 프러덕트 팀에 동참에서 일을 하게 되면 그 그룹은 궁극적으로 그들의 프로덕트를 완성시켜 상용화시키는데 그 공통적인 목표를 가지게 된다..

애자일은 프러덕트를 개발하는데에 있어서 그 목표, 프러덕트의 완성도, 혹은 defiinition of done을 어떻게 두는지, 그것에 의거하게된다. 이것이 애자일 마인드셋의 시작이다.

다시 애자일의 뜻으로 돌아가서 ‘빨리 반응한다’ 를 생각해보자. 결국 애자일 마인드셋을 가지는데 있어서 직접적인 영향을 미치게 되는것은, 우리가 언제 프러덕트가 ‘완성됐다’라고 정의 내릴수 있는지에 따라 판이하게 달라진다. 시장이 필요로 하는 최소한의 요구사항을 만족시킬수있는 프러덕트를 최소한 시간적, 재정적, 인력적인 투자를 통해 릴리즈하는것을 목표로  하는것이 바로 애자일의 근본이다.

 우리가 시장이 원하는 최소한의 요구사항을 정의할때 MVP, 혹은 Minimal Viable Product 라고 칭한다.
최소한으로 가장 기본적인 기능을 가진, 사용이 가능한 퍼러덕트를 말할때 MVP라고 부르게 되는것이다.
좀더 쉬운 이해를 위해 카메라를 예로 들자면 – 우리가 지금 사용하고있는 디지털 미러리스 카메라를 생각해보자.
1960-70년대에 한창 필름카메라가 상용화, 보급화가 될시기때의 카메라를 보면 이미지를 스냅샷으로 찍어서 현상할수 있게 하는 그런 기본적인 기능에 포커스를 맞춰서 만들어졌다. 그런 카메라가 단계별적인 발전에 발전을 거치며 미디어가 바뀌고, 기술과 유행, 대중의 취향에 맞게 바뀌어온걸 우린 볼수가 있다. 지금도 우리는 카메라가 계속 새로운 모델이 나오는것을 목격 하고 있다. 이것을 MVP 차원에서 한번 바라보자면, 카메라는 단계별적 짧은 싸이클을 통해 발전의 발전을 거듭했고 비즈니스적 차원에서 그에 상응하는 이익을 가져다 주었다.
만약에 이런 짧은 싸이클이아닌 1970년대에 디지털 카메라을 개발하려고 노력했다고 생각해보자. 그당시 기술력으로는 불가능했을거니와, 더불어 시간, 인력도 부족했을거고, 시장이 원하는것에 초점을 맞추는것도 불가능했을것이다. 
애자일은 내가 원하는 프러덕트를 생산 하는것이 아닌 당장 시장이 필요로 하는 상용화 시키는것이다.

여러가지 파생된 방법론중에 우리가 소프트웨어 엔지니어링에서 제일 많이 사용하는것은 스크럽 혹은 칸반이다. 이런 여러가지 메소돌로지를 통해  roll out이 된 프러덕트는, 반복적인 development cycle, 시장에서 받은 여러 가지 feedback, 유저 테스팅을 통해서 개선사항을 수집하고 새로운 버전의 프러덕트를 시장에 직접 테스트를 하는 것이 이런 싸이클을 계속 반복적으로 가르치는 것이 바로 애자일의 키이다. 

 이 포스팅 관련 영상은 여기에서 볼수 있다.