KEMBAR78
Agile Practices | PPTX
Agile Practices : case of small teamand small software projectThatchapholSaranurak11 August 2009
What is ‘Agility’ ?
What is ‘Agility’ ?Coined in 2001"The ability to move faster than those things that can harm your project…"
Agility matters (in our lives) because ofCHANGES
Agility matters (in our lives) because ofCHANGESFrequently
Agility matters (in our lives) because ofCHANGESFrequently&Simultaneously
CHANGES
Begin -->
Before that…Tune team’s mindset To work for outcome
 To be open-minded
 To be courageous 5 Practices (for small team and small project)Release frequentlyDesign for ideasTest!Code for futureCommunicate agilely
Practice : Release frequentlyRelease MonthlyAnd you will…
Practice : Release frequently#1Assure aboutintegration and deployment issues early
Practice : Release frequentlyYou project is alwaysready to submit
Practice : Release frequentlyUse automated installer(Setup Projectis extremely easy in VS.NET 2008 )
Practice : Release frequently#2Be Productive
Practice : Release frequentlyTimebox forces you to implement only themostimportant
Practice : Release frequentlyReachable goal boosts
Practice : Release frequently#3Get Feedback
Practice : Release frequentlyEvaluate trade-offs, actively(More memory-efficient, less performance ?)
Practice : Release frequently Design is gradually more accurate direction
 5 Practices (for small team and small project)Release frequentlyDesign for ideasTest!Code for futureCommunicate agilely
Practice : Design for ideas Design idea will be evolving during development(Especially when using unfamiliar technology)
Practice : Design for ideas If you design it too specifically… (Method details, datatypes, parameters)
Practice : Design for ideas and even document it
Practice : Design for ideasYou will surely REDO it againor else…GET STUCK with your bad design
Suggestion 1Design in Paper or whiteboardTake a photo for sharingPractice : Design for ideas
Suggestion 2Practice : Design for ideasCRC design methodClass nameResponsibilityWhat it is supposed to do ?Collaborator what other objects it works with ?
Suggestion 3 Practice : Design for ideasMake it easy for test
Suggestion 4 Practice : Design for ideasAs simple as possibleKISS Principle
 5 Practices (for small team and small project)Release frequentlyDesign for ideasTest!Code for futureCommunicate agilely
Practice : Test!Test it!programmatically
Practice : Test!Fewer Bugs & Faster DebugKnow problem early and specifically
Practice : Test!Comfortably RefactorNo need to check if it still really works
Practice : Test!Simple DesignTest Before (TDD): design will be never  over complicatedTest After: method that hard to test is need to simplify
Practice : Test!Good DocumentationGood test covers use cases
Practice : Test!Unit Testing Framework(Nunit for .NET, Junit for Java, HttpUnitofr testing web,…)
Practice : Test!Use Mock when method touches another classMore Reason for test ? Where to start ?
 5 Practices (for small team and small project)Release frequentlyDesign for ideasTest!Code for futureCommunicate agilely
Practice : Code for futureYour code is used many many more times than it is written
Practice : Code for futureMake code EASY to
Practice : Code for futureMake code EASY toRead
Practice : Code for futureMake code EASY toReadTest
Practice : Code for futureMake code EASY toReadTest& Debug
#1 EASY to ReadReader get what code does without reading commentExpressive namingComment why code does itUse enumDon’t quick hack Insert +1 or -1  and it just works!Don’t concern performance too much<<1 instead of *2Practice : Code for future
#2 EASY to TestQuery – command separationMake query code has no side-effect (it’s easy to test now)Small classOne method one purposePractice : Code for future
#3 EASY to DebugAlways handle or throw all exceptionNo empty catch blockProvide useful error messagesCategorize themProgram defectsEnvironment problemsUser ErrorPractice : Code for future
 5 Practices (for small team and small project)Release frequentlyDesign for ideasTest!Code for futureCommunicate agilely
Practice : Communicate agilelyDocuments that dictateall of what to do
Practice : Communicate agilelyDocuments that dictateall of what to do
Practice : Communicate agilelyNeed more dynamic communication techniques
Practice : Communicate agilelyComplete but Flexible
Stand up MeetingTwice a weekEverybody answers in 3 minutesWhat did I do?What will I do?What problems I  face?Everybody Stands UpAnd you ain’tgonna waste time :)
PivotalTracker(Project Management Software)
PivotalTracker(Project Management Software)User storyFocus on featuresMeasure velocityCan generate charts
Mailing ListFor Sharing IdeasNew design ?Problem’s solution ?Important Issue ?
Message in Version ControlYou know
Practice : Communicate agilelyStand up MeetingPivotalTrackerMailing ListMessage in Version Control
ConclusionThis concludes Agile practicesI suggest for small  team and small project
ConclusionHowever, there are…Many Other Practices
ConclusionAnd Many Ways to ApplyHow?Image fromhttp://www.flickr.com/photos/legojeff/1296661311/

Agile Practices

Editor's Notes

  • #14 You will not face “die at the end” event because of Integration or Deployment problems.
  • #20 More memory-efficient, less performance ?Evaluate trade-offsDesign
  • #60 How to build agile atmospherePair programmingHow to deal with customer ….