2013년 12월 5일 목요일

책 이야기 - 실천 반복형 소프트웨어 개발

왜 반복형 개발인가?

 Disciplined Agile Delivery (DAD)를 비롯해 애자일 개발에 가장 큰 영향을 끼치고 있는 인물인 Scot Ambler는 2007년부터 자신의 웹 사이트에서 비 정기적으로(거의 1-2년에 한차례)프로젝트 성공에 대한 설문을 진행해 오고 있다. (2013년 투표는 2013년 12월1일 현재 진행중이며 결과가 나오면 살펴볼 기회를 가져보려 한다.)

아래 표는 가장 최근 이뤄진 2011년의 조사 결과이다.



 여기서 눈여겨 보아야 할 것은 성공률 1위가 애자일 개발이 아닌 반복형 개발이라는 점이다.
 반복형 개발은 순차 점증적 개발(Iterative and incremental development)과 동일한 의미 이며 폭포수 개발 방식과 마찬가지로 여러가지 수정모델이 존재하는데, Rational Unified Process로 흔히 불리우는 Unified Process가 대표적이며,  2위와 3위에 오른 애자일 소프트웨어 개발 프로세스들 또한 반복형 개발에 근간을 두고 있다.


반복형 개발 VS 애자일 개발 VS 폭포수 모델

 애자일 개발과 반복형 개발은 실상 프로젝트 내부에서 이뤄지는 작업의 내용면에서는 사실상 큰 차이가 없다고 보는데, 두가지 개발 방식에 대한 차이는 무엇을 하는가 보다는 무었을 지향하는가에 있기 때문이다.

 애자일 개발은 가치 지향적이다. 애자일 개발은 프로세스나 계약, 절차보다 완성된 소프트웨어가 지니는 가치를 가장 중심에 놓고 프로세스를 바라보는 관점을 지닌다. 
반복형 개발은 폭포수 개발과 마찬가지로 기본적으로는 절차 지향적이다. 인적 자원에 크게 의존 할 수 밖에 없는 소프트웨어 개발 프로젝트가 필연적으로 지니게 되는 불가시성을 최대한 배제하기 위해 반복적이며 점진적으로 계획하고 실행하는 방법을 택하고 있다. 
XP나 스크럼과 같은 애자일 개발 프로세스들은 기본적으로 반복형 개발을 기초로 하여 개발 프로세스들을 확립하였다. 짧은 개발주기, 지속적인 통합/배포, 그리고 회고를 통한 피드백이 그것이다. 

 엔터프라이즈 어플리케이션 개발에 있어서 애자일 개발이 지니는 최대의 약점은 고객으로 부터 듣는 질문중 가장 단순하면서도 가장 흔히 듣는 질문인 "그래서 얼마면 되는거요?"라는 질문에 답변하기가 까다롭다는 점이다. 특히나 대규모의 프로젝트에서 "일단 한번 해 보시면 얼마나 좋은지 아실껍니다." 라는 답변으로 고객을 안심시키기는 쉽지가 않다는 이야기 이다.

 그렇다고 견적내기 편하다는 이유로 폭포수 모델을 택하기엔 너무나도 많은 대가를 감수해야만 한다. 폭포수 모델이 오늘날 천덕꾸러기 신세를 면치 못하는 이유는 만들어 내야 하는 소프트웨어에 대한 복잡성이 검토를 통해 예측 가능한 법위를 넘어섰기 때문이다. 

 현대의 사회 시스템은 끊임없이 복잡한 방향으로 변화하고 있으며 이를 추상화 하여 다루는 소프트웨어도 함께 복잡성을 더해가고 있다.  이에 대해 반복형 개발은 끊임없이 완성된 소프트웨어를 만들어 내고 그에 대한 피드백을 통해 프로젝트를 통제해 나가는 방식을 취함으로서 이러한 복잡성에 대응해 나가고 있다.

 즉, 고객이 진정 원하는 소프트웨어의 사양은 완성된 소프트웨어를 직접 만져보기 전에는 확정하기 어렵다. 따라서 검토만으로 해결 할 수있다고 주장하는것은 너무나 천진 난만한 생각이며, 이에 대한 대가로 지불되는 것은 대부분의 개발 현장에서 개발자들의 땀과 눈물이 될 것이다.  



실천 반복형 소프트웨어 개발에서 다루는 내용



이제 본론인 책 이야기를 할 시간이다.



 저자인 쓰다씨는 현재 일본 마이크로소프트에서 테스트 전문가로 활동하고 있으며 필자가 소속된 豆蔵Mamezou의 OB이기도 하다.

저자는 이 책의 대상 독자에 대해 책 머리에 다음과 같이 밝히고 있다.
  • 3~5년정도의 소프트웨어 개발 경험이 있는 분
  • 프로젝트 팀을 리드하는 위치이며, 팀운영방침을 정해야 하는 분
  • 지금부터 프로젝트팀을 리드하는 위치에 서게되는 분
  • 프로젝트팀의 운영에 대해서 문제의식을 가지고 있는 분
  • 개발중인 소프트웨어의 품질을 제어할 수 없어서 곤란을 겪고 있는 분
  • 개발을 지원하는 툴을 도입하고 싶지만, 조직의 문화적 저항에 부딧혀 뜻을 이루지 못하는 분
  • 툴을 도입하기는 하였으나 제대로 활용하는 방법을 알지 못하는 분
  • 폭포수개발 프로세스에서 벗어나고 싶은 분
  • 반복형 개발을 시험해 보고 싶지만, 몇번을 반복해도 끝이 나질 않아 실패한적이 있는 분

 이 책에서는 언어나 생산되는 소프트웨어에 관계없이 다양한 소프트웨어 개발 프로젝트에서 사용 가능한 범용적인 반복헝 개발의 원칙과 규율을 제시하고 있다.

 책에서 소개하는 원칙과 규울은 단순히 이론에 그치는것이 아니라 현재 나와있는 최적의 개발지원 환경들(빌드, 형상관리, 이슈트래킹, CI)이 개발 규모와 진행상황에 따라 어떻게 연동되어 운용 되어야 하는지를 구체적인 예제와 함께 설명하고 있다.

 개인적으로 이 책의 가장 맘에 드는 부분은 일방적으로 이러한 방식이 가장 좋습니다 라고 강요하는 식이 아니라 스스로 각자의 개발 현실에 맞는 프로세스를 찾아 나갈 수 있도록 다양한 힌트를 제시하고 있다는 점이다.

품질과 납기를 동시에 잡는 비장의 무기 - 타임박싱 관리 기법

 저자인 쓰다씨가 반복형 개발에서 특히 중요하게 생각하는 개념은 타임박싱기법 이다.
타임박싱이란 기간 안에 끝낼 수 있는 작업과 그렇지 못한 작업을 선별하여 다음 반복에 넘기는 프로젝트 관리 기법을 지칭하는 것으로 정해진 시간 속에서 개발 사이클을 반복해야 하는 반복형 개발에서 품질과 납기를 지켜내기 위해 매우 유용한 개념이라 할 수 있다.



타임박싱 기법에 대해서는 아래 포스팅에서 자세히 다루고 있다.

프로젝트 관리 기법 - 타임박싱(Timeboxing) 관리 기법


그래서 얼마면 되는거요?

 마지막으로 아까전에 했던 "그래서 얼마면 되는거요?"라는 고객의 질문에 대해서 필자는 다음과 같이 답변을 하고자 한다.


"반복형 개발이 더 싸지지는 않을지 모릅니다. 하지만 같은 비용의 폭포수 개발과 비교하자면 위험 요소들의 제어가 훨씬 쉬워지며, 무엇보다 좋은 품질의 소프트웨어를 생산하는것이 가능해 집니다."

 반복형 개발(또는 애자일 개발)은 개발자가 편해지자고 하는것이 아니다. 오히려 개발자는 폭포수형 개발에 비해 훨씬 많은 작업들을 수행 해야만 한다. 그렇기 때문에 빌드하고 에러를 체크하고 코드 품질을 유지하는 등의 작업들을 철저하게 자동화 해 나감으로서 사람만이 할 수 있는 창조적인 작업에 보다 많은 시간을 투자 하는것이 가능해지는 것이다.

 개발 현장에서 애자일 프로세스의 도입을 검토하고 있거나 이미 도입하였더라도 프로세스의 개선에 목말라 하는 모든 이들에게 이 책을 꼭 추천한다.

2013년 12월 1일 일요일

성공한 스타트업이 미국에서 많이 나오는 이유는?

패기, 도전정신... 이런 단어들이 예능방송 이외의 곳에서 들려오지 않게 된 지가 꽤 오래된듯 싶다.  이미 우리사회는 도전하지 않아도 먹고살만하기 때문일까? 그보다는 실패에서 감수해야 하는 댓가가 너무나도 크기에 젊은이들이 몸을 사리게 된 것은 아닐까 싶다.

클라우드 컴퓨팅의 등장으로 개인이 무한대의 컴퓨팅 파워를 손에 넣을 수 있는 시대가 왔다. 더 이상 돈 걱정 하지 않고 두뇌 하나로도 승부가 가능한 시대가 열린것이다. 인재의 질로 우수하기로는 세계에서 둘째가라면 서러운 대한민국에서 혁신적인 서비스들이 나오기 위해서는 무엇이 필요할까?

Quora에서 ”성공한 스타트업이 미국에서 많이 나오는 이유는?”이란 주제로 이루어진 논의가 있었는데, 상당히 심도있는 답변들이 올라왔기에 이 자리에서 소개한다.

대부분의 성공한 스타트업은 왜 미국에서 나오는 것일까요?
저와 제 친구들은 미국인은 아닙니다만 이전부터 왜 대부분의 성공한 스타트업이 미국에서 이루어졌는가에 데해서 자주 토론해 왔습니다.
미국은 다른나라들이 가지지 못한 무언가를 가지고 있는 것일까요? 문화? 커뮤니티? 얼리어답터? 투자자? 환경?

Robert Scoble - 저는 Rackspace의 창업에 대해 공부하고 있습니다.
저는 전세계를 돌면서 스타트업 기업들과 만남을 가져왔습니다. 미국이 다른 나라들과 차별되는 점은 다음과 같습니다.

1. 롤 모델에의 접근성 - 애플 본사에에서 한 CEO를 만난적이 있습니다 그는 우리에게 애플이 창사 당시부터 성장하는 모습을 보아 왔다고 했습니다. "애플이 할 수 있다면 누구라도 해 낼 수 있습니다." 그가 우리에게 전한 말 이며, 이것이 롤모델이 뒤로 갈 수록 중요해 지는 이유입니다.

2. 자본에의 접근성 - 에플은 창업을 하기위해 투자가 필요했습니다. 모든 창업이 그러하듯이 말이죠. 자기자본과 친구들나 가족의 돈으로 창업이 가능한 사람은 몇 명 되질 않습니다. 하지만 이곳에서는 롤 모델 덕분에 친구와 가족들의 돈을 빌리는것이 좀 더 쉽습니다. 만약 우리가 당신에게 만달러를 주어 창업을 하고(실제로 GoPro는 그 정도 자본으로 제가 사는 집에서 2백야드도 떨어지지 않은 곳에서 창업했습니다.) 어느날 수십억 달러의 회사가 되어 있을지도 모르는 일 입니다. 지구상에 몇명이나 그런 일이 가능할까요? 제가 알기론 그다지 많지 않습니다.

3. 비지니스 기반에의 접근성 - 창업을 하는데 도움이 되는 변호사가 필요 하십니까? 그들이 여기 있습니다. 사무실과 창업에 도움이 필요한가요? 창업에 즉시 사용 가능한 300개의 사무실들을 지금 보러 가 보세요. PR팀? 창업전에 상담 할 수 있는 맨토? 차 쓸 일이 밥먹들이 있다구요? 상장을 준비하는 방법을 아는 재무 담당자요? 그밖에 필요한것들이 다 미국에 있습니다. 아, 물론 다른 나라라고 위에 열거한 것들이 없는건 아닙니다. 하지만 샌프란시스코, 시에틀, 보스톤 ,뉴욕, LA만큼 풍부하진 않습니다.

4. 배급에 대한 접근성 - 당신의 새로운 서비스를 어떻게 사람들에게 전달할 생각입니까? 앱스토어는 어떤가요? 아마존, 애플, 구글, 마이크로소프트, 그리고 페이스북이 앱스토어를 제공하고 있습니다. 이젠 누구도 배급문제로 고민하지 않습니다. 검색엔진을 써 보는건 어떻습니까? 뉴욕이나 샌프란시스코에서는 보다 많은 사업제휴와 배급에 대한 기회를 얻을 수 있을것 입니다. 아시다 시피 대부분의 기술관련 언론이 센프란시스코와 뉴욕에 몰려있기 때문이지요.

5. 수익 창출에 대한 접근성 - 광고를 하고 싶으신가요? 뉴욕이 짱이지요. 세계 어느곳보다 미국은 부유한 시장입니다. (적어도 중국이 추월하기 전까지는) 다른 시장으로의 접근성도 좋은 관계로 월드 와이드 브랜드를 런칭하기도 수월합니다.

6. 인재에 대한 접근성 - 오늘날의 대부분의 기업들은 빅데이터 전문가를 필요로 합니다. 예를 들면 하둡을 이용한 클러스터 처리 같은거 말입니다. 당신의 지역에서 그 일을 할 수 있는 사람을 쉽게 구할 수 있나요? 아마 아닐껍니다. 하지만 샌프란시스코 근방이라면 쉬울껍니다. 구글을 비롯해 HP,  시스코, 선, 야후와 같은 수많은 IT기업들이 최고수준의 기술과 사업적 재능을 지닌 인재들이 끊임없이 배출되는 스텐포드 대학에서 시작했습니다.

7. 관리자에 대한 접근성 - 당신은 단 두명이 라면을 먹어가며 시작하는 기업이라 할 지라도 CEO의 역할은 가장 중요하며 사실상 성공과 실패가 CEO HR의 단계에서 이미 결정 됩니다. 세계 탑 클래스의 언론을 다룰 수 있는 방법을 이해하고 있습니까? 래리페이지의 사무실로 찾아가서 구글과 사업거래를 성사 시킬 수 있나요?

8. 제품에 대한 접근성 - 오클리, GM, 포드, 보잉 그리고 그 밖에 수많은 메이커들이 미국에서 물건을 만들어냅니다. 이 사실은 그러한 물건들을 만들어 내는 방법을 만드는 사람들도 미국에서 찾기 쉽다는 이야기 입니다. 애플은 중국으로 생산라인을 옮겼습니다만, 여전히 많은 중국의 제품들은 미국 시장을 겨냥해서 만들어지고 있습니다.

9. 수많은 찬스들 - 샌프란시스코 지역에서 저녁 식사를 하거나 커피를 마시다 보면 수많은 스타트업 기업들과 대형 기업들의 임원들과 우연히 마주칠 기회를 가지게 됩니다. 아마 이러한 우연을 일상적으로 접할 수 있는 곳은 지구상에 이곳밖에 없을껍니다. 저는 그러한 우연들이 거대한 비즈니스로 거래로 이어지는 현장을 목격해 오고 있습니다. 큰 고기는 작은 강이나 개천에선 놀지 않는법 입니다.

Rony Gao - 국제 비즈니스 전문가

Rovert Scoble의 멋진 답변에 추가해 보겠습니다. 인구수를 살펴 보면 금방 답이 나오죠. 3억명이라는 인구는 분명 스타트업에게는 더 없는 축복입니다. 우리들이 미국에서의 기회에 대해서 말 할때 곶잘 간과하는 부분이 있는데, 미국의 인구는 나머지 G7인구를 합친 것과 거의 맞먹는다는 점 입니다.


Patric Keane - www.produckworld.com에서 근무
이 주제에 대한 글이 Paul Graham의 블로그에 잘 정리되어 있습니다.

Why Startups Condense in America

요약해서 보자면
1. 미국은 이민을 받는다.
2. 미국은 부자 나라다.
3. 미국은 경찰국가가 (아직은)아니다.
4. 미국은 나은 대학을 가지고 있다.
5. 미국에선 해고가 자유롭다.
6. 미국에선 적은 고용으로도 일이 가능하다.
7. 미국은 너무 까다롭지 않다.
8. 미국은 거대한 국내 시장을 가지고 있다.
9. 미국은 밴처 펀딩이 있다.
10.  America Has Dynamic Typing for Careers. (해석 불가)

쓰면서 보니 시장과 인구면에 있어서는 2천5백만이라는 인구가 몰려있는 서울도 제법 큰 기회를 제공하는 도시라는 생각이 든다. 인적 물적 인프라도 나쁘지 않은 만큼 서버 인프라의 부담을 크게 덜어줄 수 있는 클라우드 서비스의 등장이 새로운 밴처 열풍의 기폭제가 되었으면 하는 바램을 적어본다.