the heart of agile
DESCRIPTION
TRANSCRIPT
What do you think the heart of Agile is?What do you think the heart of Agile is?
• Iteration?• User Story?• Test Driven Development?• Pair Programming?• Planning Poker?• Embracing Change?
In early 2001, a group of industry experts in light-weight process like XP, Scrum, FDD, Crystal, DSDM, and etc, formed the Agile Alliance and created
The Manifesto of the Agile Alliance.
We are uncovering better ways of developingsoftware 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.
agilemanifesto.org
Responding to change over following a planResponding to change over following a plan
The following events takes place in the middle of the last iteration between 3pm and 4pm
• The Boss : I already promised to the customer that we will have these features too. They are really small. We can add them right?
• Dev Lead : What? Umm … Probably but it has to be next iteration.• The Boss : What are you talking about? This is the last iteration! Aren’t
you guys supposed to embrace changes?• Dev Lead : Errr … If you want to add more stories now, we have to move
some stories out of this iteration. • The Boss : That is not acceptable. We are professional! Move your lazy
asses and just get them all done in before this Friday!
Commitment does not come from the ones who actually do the work
Estimate does not come from the ones who actually do the work
Velocity of the team now become higher than normal
Freeze your iteration scope!Context Switching is expensive.
Many little things do add up.
The team eventually working late hours for the rest of the iteration to get them all done. However, since then, adding stories in the middle of iterations has become the norm.
13 51 1
31 2
2155
Iteration 1 Iteration 2 Iteration 3Velocity=10 Velocity=10 Velocity=10
HIGH PRIORITY LOW PRIORITYRelease
I really need these 2 new reports
Have flexible Release Plan butfreeze Iteration Plan before it starts Have flexible Release Plan butfreeze Iteration Plan before it starts
Freeze! Freeze!
Working software over comprehensive documentation Customer collaboration over contract negotiationWorking software over comprehensive documentation Customer collaboration over contract negotiation
The following events takes place in a conference call between two dev teams. One provides web services and the other one write consume them (e.g. customer). Their time zones are 12 hours differences.
• Consumer Dev : Let’s spec out all the interfaces in the detailed design spec• Provider Dev : Sure. That would definitely be helpful.• Consumer Dev : After you sing off the spec to commit that this is the final spec. It should
takes us about 3 months to finish all the work.• Provider Dev : Sign off?• Consumer Dev : Yes. That is normal process, right? Then if you need to change, you have
to submit a change request.• Provider Dev : Err.. Can’t we drop you our code each iteration instead? Then you can work
with the real interface and we would know right away if the integration works.• Consumer Dev : No we can’t. We have our own internal process. Well it should be fine as
long as we do our spec right at the beginning.
Provider Team keeps producing drops in each iteration but cannot integrate with the consumer until 3 months later. They found all kinds of problems during the integration and spends 2 more months to fix them.
Communicate with highest bandwidth possible
Integrate As Early As Possible with the Working Software
Have documents only when they are needed
Individuals and interactions over processes and toolsIndividuals and interactions over processes and tools
• Agile values Individuals and Interactions over process and tools therefore Agile is not just a process
• IMO, Individuals and Interactions is the heart of Agile. It is all about people.
• Individuals (with “s”) = Team• It may be not too difficult to learn how to
– use User Story for requirement and estimate in Story Point
– plan the work in Iteration with Velocity
• It is NEVER easy to build a team
ที�มคุ�ณเป็นอย่ างน��บ้�างไหม – Your team is like this?ที�มคุ�ณเป็นอย่ างน��บ้�างไหม – Your team is like this?
• “ เป็ลี่��ย่นอ�กแลี่�ว เป็ลี่��ย่นที�กว�น ว�นน��น จะเอาอย่ างง�� ว�นน��จะเอาอย่ างง��น จะ
เอาย่�งไงก�นแน (วะ)”
• “class น��ผมไม ได้�ที า เลี่ย่ไม กลี่�าแตะ ผมเลี่ย่เขี�ย่นใหม เลี่ย่ ด้�กว าอ�กนะ”
• “ ผมไม กลี่�าแก�อ ะ เด้�$ย่วม�นพั�งหมด้เสี่��ย่งเป็ลี่ า”
• “ ถ้�าจะเอาต�องแก�เย่อะนะ รื้)�อใหม หมด้ เลี่ย่ ป็ะผ�ไป็ก อนลี่ะก�น เว*รื้+คุเหม)อนก�น”
• “ ก,รื้- �นะว าม�นผ*ด้ แต ผมไม อย่ากไป็ว าไป็ แก� code เขีาหรื้อก เด้�$ย่วม�นงอน”
• “When will they stop changing their minds?”
• “I didn’t write this class so I do not want to touch it. I’d rather rewrite the whole thing.”
• “I am afraid I might break something if I change that code.”
• “It will take time to fix it properly. Let’s bandage it for now.”
• “I know his code is wrong but I do not want him to be mad at me for fixing his code.”
So what do we need to build an agile team?So what do we need to build an agile team?
Ownership
Commitment
TeamCollective
CodeOwnership
PlanningPokers
with
Whole Team
(Rotating)Pair
Programming
Simplicity
DailyStand-UpMeeting
Retrospective
ContinuousIntegration
TestDriven
Development
Refactor
CodingStandard
The CollectiveThe Collective
• Collective Code Ownership• You can just throw a new
staff into the collective• CMM retains knowledge
with documentation while Agile retains knowledge within the collective
• It is the team building, making people happy, people is retained, so is knowledge
Resistance is Futile… You will be Assimilated!
Team vs SuperstarsTeam vs Superstars
Team= Ant Army
Superstar= Egomaniac
The Key is Letting Go of Your Ego!The Key is Letting Go of Your Ego!
• อน�ตตา – ไม่�ม่�อั�ตตา หาเจ�าขีองม*ได้�
• เป็.า : code เป็�นขอังที�ม่ ไม ใช่ ขีองสี่ วนต�ว
• ใคุรื้จะแก� code ตรงไหนก็�ได้�• Individual Code Ownership คุ)อ
ม�นรื้- �ขีองม�นอย่- คุนเด้�ย่ว, bug เธอัไม่�ใช่� bug ฉั�น,
• Pair ที าให� feature เก*ด้ใหม จากน��นก,ฝาก็ให�ที�ม่เลี้��ยงด้� ให�เต*บ้โตแลี่ะแขี,งแกรื้ ง
• อั�ตตาคื!อัศั�ตร�ขีองคุวามสี่ าเรื้,จในการื้ที า Pair
• Code is owned by team, not each individual
• Anyone is free (and comfortable) to change any line of code at any time
• It is not your bugs, or my bugs, it is ours bugs
• Pair gives birth to a new feature and then it is nurtured by the collective
• Ego is the enemy of pair programming
If you are going to read one Agile bookIf you are going to read one Agile book
Special thanks my Agile evangelists@proteusguy@korn4d