레이블이 agile인 게시물을 표시합니다. 모든 게시물 표시
레이블이 agile인 게시물을 표시합니다. 모든 게시물 표시

2016년 7월 3일 일요일

애자일 마스터

애자일 마스터
조너선 라스무슨 저/최보나 역 | 인사이트(insight)

http://www.yes24.com/24/goods/6289137?scode=032




우선 책의 구성이 재미있다.
Head first 시리즈의 mini 버전 같아 너무 과하지도 않고 너무 딱딱하지도 않게 설명하고 있다.

책은 애자일 개발 방법론에 대해서도 다루지만 전반적인 내용은 애자일 방법론에 기반을 둔 프로젝트 진행에 대해서이며 각각의 주제들을 깊게 다루기보다 실제적인 예시와 상황으로 실제적인 부분들을 설명하고 개념 및 방법들을 설명하고 있다.

또한, 애자일 프로젝트 진행 시 수행되어야 할 프로젝트/팀 구성, 프로젝트 계획, 프로젝트 진행, 회고 등을 순서대로 설명해 주고 있어 애자일 프로젝트 진행에 대한 전체적인 이해를 도와주고 있다.
그래서 애자일 개발 방법론에 대해 기본 개념은 있고 프로젝트에 애자일을 적용하여 진행 시 참고할 만한 책으로 보인다.
이 책과 함께 추정, 회고, Kanban등의 주제에 대해서는 별도의 책을 참고할 필요성은 있어 보인다.

아래는 책을 보면서 동의하거나 도움이 되었던 부분들을 일부 발췌하였다.
책을 사서 보면 더 자세하고 다양한 다른 주제들이 있으니 꼭 책을 읽어 보시길~


[모두 한 버스를 타기 위한 인셉션 덱]
인셉션 덱은 로빈 기반스(Robin Gibbons)이 만든 것으로 다음의 것들로 구성되어 있다.
참고 : https://agilewarrior.wordpress.com/2010/11/06/the-agile-inception-deck/

- 우리가 왜 여기에 모였을까?
- 엘리베이터 피치
- 제품의 광고를 직접 디자인 해보기
- NOT 리스트
- 프로젝트와 관련된 다양한 사람들과 알고 지내기
- 해결책 보여주기
- 야근거리
- 규모 정하기
- 우선순위 정하기
- 미리 알아야 할 비용

책에서 말하다시피 인셉션 덱의 시작 아이디어인 "프로젝트와 관련이 있는 사람들을 보아, 모든 사람이 프로젝트에 기대하는 바가 같도록 서로 적절한 질문을 통해 생각을 공유한다면 프로젝트가 성공할 확률이 높을 것이다.' 처럼 프로젝트 팀의 방향과 구성원들의 생각을 조율하기 위해 인셉션 덱은 괜찮은 방법으로 보인다.

[전설의 사총사 : 시간, 비용, 품질, 범위]
- 시간, 비용, 품질을 정해 놓고 범위만은 프로젝트에 따라 변경할 수 있다.
- 트레이드오프 슬라이드에서 그 외 모두 우선순위를 1로 정할 수 없고, 두 항목의 우선순위가 같을 수 없다는 것도 꼭 생각해두고 있어야 한다.


[사용자 스토리의 요건 INVEST]
좋은 사용자 스토리의 요건은 Independent(독립적인), Negotiable(협상 가능한), Valuable(가치 있는), Estimatable(추정 가능한), Small(작은), Testable(테스트 가능한) 이다.


[데일리 미팅에서 질문]
일반적으로 데일리 미팅에서 아래와 같이 발언을 하는데, 책에서 제시한 질문들이 흥미로웠다.

- 어제 무엇을 했는가?
- 오늘은 무엇을 할 것인가?
- 내 잡업 속도를 늦추거나 방해하는 요소가 있는가?

=>
- 세상을 바꾸기 위해 어제 무엇을 했는가?
- 오늘 그 작업을 어떻게 끝낼 것인가?
- 불행히도 지금 내 앞을 가로막고 있는 이 장애물을 어떻게 없앨 것인가?


시각적인 작업환경 조성하기
특히나 프로젝트 진행 시 임원들이나 관리직들 대상으로 설명하거나 보여줄 것들이 필요하기 마련이다. 이때 프로젝트의 상황을 보여주거나 상황을 설명하기 위해 요긴하게 사용 될 수 있는 것들은 스토리보드, 릴리즈 상황판, 속도와 번다운 차트, 인셉션 덱이다.

2016년 3월 28일 월요일

[Links] Scrum of scrum

Definition
http://guide.agilealliance.org/guide/scrumofscrums.html

A technique to scale Scrum up to large groups (over a dozen people), consisting of dividing the groups into Agile teams of 5-10. Each daily scrum within a sub-team ends by designating one member as "ambassador" to participate in a daily meeting with ambassadors from other teams, called the Scrum of Scrums. - See more at: http://guide.agilealliance.org/guide/scrumofscrums.html#sthash.XvWPKlh8.dpuf


Large scaled scrum team structure
https://www.mountaingoatsoftware.com/agile/scrum/team
The illustration below shows how a Scrum of Scrums approach allows Scrum to scale up (in this case to 243 people). Each cell represents one person on a Scrum team. The bottom of this illustration shows teams with nine developers on them. One person from each team (the differently colored cell) also participates in a Scrum of Scrum to coordinate work above that team. Then from those nine-person teams, another person is selected (this time shown with diagonal lines) to participate in what is called a Scrum of Scrums of Scrums.
scrum of scrums 
Read more about conducting the Scrum of Scrums meeting.

Using Scrum of Scrums with Agile Teams to Coordinate and Collaborate
http://www.infoq.com/news/2014/03/scrum-of-scrums
: 사실 대규모 조직에 대한 scrum 조직에 관련된 내용이 많지 않아서 그런지 scrum of scrum 관련 article이 별로 없다.


(참고) 제품책임자(Product Owner)
 <우선순위 미팅>
 PO는 2주에 한번 C레벨들과 함께 적절한 우선순위 맞춰 과제를 진행하고 있는 지 공유하는 
 우선순위 미팅를 가졌으며, 돋보이기 위한 경쟁의식때문에 우선순위 미팅은 우선순위를 고려하는 미팅이 아닌 과제 PT자리로 퇴색되고 말았으며, 해당 미팅을 통해 자율적으로 과제를 선정 진행한다는 초기의 스크럼 계획과는 달라 C레벨들의 입김에 따라 과제의 우선순위가 바뀌고, 진행중인과제가 홀딩되는 웃지 못할 해프닝도 있었다.
제품 소유자(Product Owner)에 대한 오해

Spotify 조직문화
https://selfothercontext.com/2013/02/27/spotify/

2014년 5월 12일 월요일

Agile software development, 애자일 개발 방법 대충 정리

애자일의 애자도 모르면서 scrum 방법론 같은 것만 형식적으로 사용하다 보니
애자일에 대해서 많이 궁금했던 터라 개념, 철학을 한번 찾아 봄.

[Agile 정의]

먼저 사전적 정의는 다음과 같다..

http://dictionary.reference.com/browse/agile?s=t
ag·ile  [aj-uhl, -ahyl] adjective
1. quick and well-coordinated in movement; lithe: an agile leap.
2. active; lively: an agile person.
3. marked by an ability to think quickly; mentally acute or aware: She's 95 and still very agile.

http://endic.naver.com/enkrEntry.nhn?sLn=kr&entryId=6021a018893e48b6bbb505245a8f96f8&query=agile
형용사
1. 날렵한, 민첩한
2. (생각이) 재빠른, 기민한
  an agile mind/brain예문 발음듣기
  재빠른 생각[회전이 빠른 두뇌]


날렵한, 민첩한, 기민한...
뭔가 감이 오는가? 사실 스크럼 할때도 이런 단어들을 들었지만 별 감흥이 없었음.
좀 더 자세한 설명을 찾아보자

What is Agility? by Jim Highsmith
http://jimhighsmith.com/what-is-agility/


  • Agility is the ability to both create and respond to change in order to profit in a turbulent business environment.
  • Agility is the ability to balance flexibility and stability.


In an uncertain and turbulent world, success belongs to companies that have the capacity to create change, and maybe even chaos, for their competitors. Creating change disrupts competitors; responding to change guards against competitive thrusts. Creating change requires innovation: developing new products, creating new sales channels, reducing product development time, customizing products for increasingly smaller market segments.

위 article을 보면 급변하는 기업 비지니스 환경에서 변화를 이뤄내는 역량을 가지고 변화에 민첩하게 대응 하는 기업들은 경쟁에서 성공하며 이런 변화에는 여러 혁신들이 필요하다라는 설명을 하고 있음. 즉 Agility/Agile 하다라고 말하는 것은 비지니스 요구사항에 민첩하게  반응한다는 의미로 보임.

한글판 Wikipedia에서는 애자일 개발 방법론을 다음과 같이 표현하고 있다.

http://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C

애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다. 예전에는 애자일 개발 프로세스는 "경량(Lightweight)" 프로세스로 불렸다. 익스트림 프로그래밍 (XP:eXtreme Programming)이 애자일 개발 프로세스의 대표적인 방법이라 볼 수 있다


좀 더 나아가서 Agile software 개발 선언을 보자


[Manifesto for Agile Software Development]

http://agilemanifesto.org/iso/en/
http://agilemanifesto.org/iso/ko/

Manifesto for Agile Software Development

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

공정과 도구보다 개인과 상호작용
포괄적인 문서보다 작동하는 소프트웨어
계약 협상보다 고객과의 협력

계획을 따르기보다 변화에 대응하기를

That is, while there is value in the items on
the right, we value the items on the left more.

Kent Beck, Mike BeedleArie van BennekumAlistair CockburnWard CunninghamMartin FowlerJames GrenningJim HighsmithAndrew HuntRon Jeffries
Jon KernBrian MarickRobert C. MartinSteve MellorKen SchwaberJeff SutherlandDave Thomas

© 2001, the above authors
this declaration may be freely copied in any form, 
but only in its entirety through this notice. 

선언문에서 오른쪽 굵은 글씨로 표시된 "개인과 상호작용", "작동하는 소프트웨어", "고객과의 협력", "변화에 대응" 하는것에 가치를 두고 있음.

[Principles behind the Agile Manifesto]
http://agilemanifesto.org/iso/en/principles.html
http://agilemanifesto.org/iso/ko/principles.html

애자일 선언 이면의 원칙들인데 너무 많아서 옮기는 것은 쉽지 않고 몇개만 옮겨 보면 다음과 같다. 모든 원칙들이 인상이 깊지만 아래 굵은 글씨의 것들이 참 인상적이다.

가치있는 소프트웨어를 전달하여 고객을 만족 시키는 것을 목적을 가지고
요구사항 변경에 수용할 수 있는 탄력적이고 반복적인 프로젝트 진행과
motivated individuals들로 구성된 self-organizing team을 구성하여 신뢰하고
불필요한 프로세스를 줄이고 합리적인 방법으로 프로젝트를 진행하는 원칙을 지키는 것 이게 핵심이 아닐까 생각 함.

우리의 최우선 순위는, 가치 있는 소프트웨어를 일찍 그리고 지속적으로 전달해서 고객을 만족시키는 것이다.
(Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.)

비록 개발의 후반부일지라도 요구사항 변경을 환영하라. 애자일 프로세스들은 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.
(Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.)

동기가 부여된 개인들 중심으로 프로젝트를 구성하라. 그들이 필요로 하는 환경과 지원을 주고 그들이 일을 끝내리라고 신뢰하라.
(Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.)

작동하는 소프트웨어가 진척의 주된 척도이다.
(Working software is the primary measure of progress.)

단순성이 -- 안 하는 일의 양을 최대화하는 기술이 -- 필수적이다.
(Simplicity--the art of maximizing the amount of work not done--is essential.)

최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 창발한다.
(The best architectures, requirements, and designs emerge from self-organizing teams.)



[Agile 철학]
http://en.wikipedia.org/wiki/Agile_software_development#Philosophy

사실 Agile 개발 방법론들이나 간단한 정의는 들어 봤으나 기반 철학에 대해서 궁금했었음. 영문 Wikipedia를 보면 다음과 같은 것들이 있음.


  • Adaptive vs. Predictive
  • Iterative vs. Waterfall
  • Code vs. Documentation


[Adaptive vs, Predictive]

해석은 제대로 못하겠으나 개발 방법론은 Predictive한 것 부터 Adaptive한것들이 존재하며 Agile 방법들은 Adaptive한 축에 속한다. 일정 수립에 있어서도 Rolling Wave 접근법으로 유연한 일정을 수립하여 변경을 수용할 수 있게 한다.
앞서 말한 predictive한 기존 SE 방법론들은 예상치 못한 risk들을 방지하고자 Risk management들을 수행하지만 plan 단계에서 이를 잘못할 경우 project 전개가 산으로 갈 수도 있음.
아래는 개발 방법론들을 비교한 도표..
Home grounds of different development methods
Agile methodsPlan-driven methodsFormal methods
Low criticalityHigh criticalityExtreme criticality
Senior developersJunior developers(?)Senior developers
Requirements change oftenRequirements do not change oftenLimited requirements, limited features see Wirth's law
Small number of developersLarge number of developersRequirements that can be modeled
Culture that responds to changeCulture that demands orderExtreme quality

[Iterative vs. Waterfall]
Waterfall의 단점은 많이 들어서.. Agile 방법론들은 iterative하며 대표적인 예는 Exterme Programming.

[Code vs. Documentation]

Scott Ambler states that documentation should be "Just Barely Good Enough" (JBGE),[21] that too much or comprehensive documentation would usually cause waste, and developers rarely trust detailed documentation because it's usually out of sync with codes,[20] while too little documentation may also cause problems for maintenance, communication, learning and knowledge sharing. 

위에서 말한듯이 documentation은 딱 필요한 만큼만 하는게 맞는 것 같다. 많은면 쓰레기와 다름없고 코드와 sync가 맞지 않은 경우가 다반사고 너무 적은 documentation은 나중에 유지보수나 코드와 관련된 대화, 이해가 어렵기 때문이다.

결과물로는 적당한? documentation과 동작하는 코드가 맞는것 같지만.. 적당함.. 어렵기는 하겠다.


그리고 Agile에서는 Self motivated team에 기반하고 있다는 것도 기본으로 알아야 할 사항이 아닐까 생각한다. 사실상 방법론들이나 회고 자체가 개선을 기반하여 있고 개선의 의지가 있는 팀이어야지만 가능할 것이니..



[Agile methods]

: http://en.wikipedia.org/wiki/Agile_software_development#Agile_methods

[Agile practices]

애자일 회고 : 최고의 팀을 만드는 애자일 기법

애자일 회고 : 최고의 팀을 만드는 애자일 기법
에스더 더비,다이애나 라센 공저/김경수 역 | 인사이트(insight) | 원제 : Agile Retrospectives :Making Good Teams Great
: http://www.yes24.com/24/goods/2813260?scode=032&OzSrank=1


애자일의 '애'자도 모르는 상태에서 이것저것 방법만 하다보니 회고에 대해서 많이 궁금했었음.
단지 스프린트 회고나 릴리즈, 프로젝트 회고에서는 그냥 별 느낌없이 시간만 보낸 듯 했고 관련 참고 글도 없었기에 도서관에서 인사이트의 애자일시리즈를 보자마자 골라서 보게 되었다.

김창준 님의 글(http://agile.egloos.com/4122099)에서도 나와 있듯이 회고의 다양한 방법에 대해서 소개하고 있고 개인적으로도 회고의 목적, 절차 방법들이 잘 정리되어 있어 좋았다.

개인적으로 소장하며 두고 보면 좋을 것 같은 정도로 괜찮은 방법들이 많았음.
아래는 책 보면서 동감하거나 느낀 점에 대해서 대충 적음.

- 다나가 진행한 회고의 구조는 다음과 같다.
1. 사전 준비를 한다.
2. 자료를 모은다.
3. 통찰을 이끌어 낸다.
4. 무엇을 할 지 결정한다.
5. 회고를 마무리한다.


... 그러니 절대로 사전 준비 단계를 건너뀌거나 시간을 줄이지 않기 바란다.

=> 사전 준비를 소흘히 했던것 같다. 단지 현황 정도만 있었고 Feeling, Finding에 대해서는 거의 생각하지 않았던 것 같다..


- 두 시간짜리 회고를 어떤 식을 진행하는지 알아보자.

. 사전 준비를 한다. 5%  6분
. 자료를 모은다. 30-50% 40분
. 통찰을 이끌어낸다. 20-30% 25분
. 무엇을 할지 결정한다. 15-20% 20분
. 회고를 끝낸다. 10% 12분
. 여유 시간 10-15% 17분

=> 일반적으로 한나절을 할 때가 많았던것 같다. 회고에서 다음 스프린트 백로그 도출까지 했으니..

- 활동은 다음과 같은 장점이 있다.
. 동등한 참여를 독려한다.
. 대화에 집중한다.
. 새로운 괌점을 장려한다.
 > 회고에서 유용하게 사용하는 활동으로는 브레인스토밍(Brainstorming), 점 투표(Voting with Dots), 체크인(Check-Ins), 짝 인터뷰(Pair Interviews)등이 있다.
=> 점 투표와 짝 인터뷰.. 팀원이 적당하면 재미있을 것 같다.

- 회고 진행자인 여러분이 가장 큰 책임을 느껴야 할 부분은 내용이 아니라 프로세스다. 프로세스라고 해서 뭔가 어려운 방법론을 이야기하는 것은 아니다. 여기서 말하는 프로세스는 수행할 활동을 꾸리고 집단역학(group dynamics)과 시간을 관리하는 것을 의미한다.
=> 아하! 집단역학 공부해야지..

(TODO) 집단역학 찾아보기..

- 그후 나도 회고를 진행할 때 체크인 활동을 수행했는데 크게 두가지 이점이 있었다. 분위기가 부드러워지는 것과 현재 사람들이 느끼는 감정을 알게 되어 회고를 어떻게 진행해야 할지 감을 잡을 수 있다는 점이다.
=> 나같은 진지남에게는.. 회의 진행 시 꼭 필요할 듯. 1. 질문 제시, 각자 대답, 2. 평가 덧붙이지 않기

- 브레인 스토밍 지침
. 많은 양을 얻으려 노력하라. 최고의 아이디어가 처음부터 나오는 경우는 거의 없다.
. 바보 같은지 아닌지 재단하지 말고 모든 아이디어를 내라.
. 터무니없고, 웃기고, 거칠고, 창의적이 되어라.
. 다른 사람들의 아이디어에 살을 붙여라.
. 판단하거나, 평가하거나, 비판하지 않는다. 거르는 것은 나중에 한다.
. 아이디어를 눈에 보이도록 기록하자.
=> 다아는 것 같으면서도 항상 잊어버리는...

나머지 괜찮은 방법들은 꽤 많아서.. 책 사서 두고 두고 볼것임...