Agile Practices

4,773 views

Published on

Agile Software Development :
case of small team and small software project

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,773
On SlideShare
0
From Embeds
0
Number of Embeds
1,571
Actions
Shares
0
Downloads
126
Comments
0
Likes
7
Embeds 0
No embeds

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

    1. Agile Practices : case of small teamand small software project<br />ThatchapholSaranurak<br />11 August 2009<br />
    2. What is ‘Agility’ ?<br />
    3. What is ‘Agility’ ?<br />Coined in 2001<br />&quot;The ability to move faster than those things that can harm your project…&quot; <br />
    4. Agility matters (in our lives) because of<br />CHANGES<br />
    5. Agility matters (in our lives) because of<br />CHANGES<br />Frequently<br />
    6. Agility matters (in our lives) because of<br />CHANGES<br />Frequently&Simultaneously<br />
    7. CHANGES<br />
    8. Begin --&gt;<br />
    9. Before that…<br />Tune team’s mindset<br /><ul><li> To work for outcome
    10. To be open-minded
    11. To be courageous</li></li></ul><li> 5 Practices (for small team and small project)<br />Release frequently<br />Design for ideas<br />Test!<br />Code for future<br />Communicate agilely<br />
    12. Practice : Release frequently<br />Release MonthlyAnd you will…<br />
    13. Practice : Release frequently<br />#1Assure aboutintegration and deployment issues early<br />
    14. Practice : Release frequently<br />You project is alwaysready to submit<br />
    15. Practice : Release frequently<br />Use automated installer(Setup Projectis extremely easy in VS.NET 2008 )<br />
    16. Practice : Release frequently<br />#2Be Productive<br />
    17. Practice : Release frequently<br />Timebox forces you to implement only themostimportant<br />
    18. Practice : Release frequently<br />Reachable goal boosts<br />
    19. Practice : Release frequently<br />#3Get Feedback<br />
    20. Practice : Release frequently<br />Evaluate trade-offs, actively(More memory-efficient, less performance ?)<br />
    21. Practice : Release frequently<br /> Design is gradually more accurate direction<br />
    22. 5 Practices (for small team and small project)<br />Release frequently<br />Design for ideas<br />Test!<br />Code for future<br />Communicate agilely<br />
    23. Practice : Design for ideas<br /> Design idea will be evolving during development(Especially when using unfamiliar technology)<br />
    24. Practice : Design for ideas<br /> If you design it too specifically… (Method details, datatypes, parameters)<br />
    25. Practice : Design for ideas<br /> and even document it<br />
    26. Practice : Design for ideas<br />You will surely REDO it againor else…GET STUCK with your bad design<br />
    27. Suggestion 1<br />Design in Paper or whiteboard<br />Take a photo for sharing<br />Practice : Design for ideas<br />
    28. Suggestion 2<br />Practice : Design for ideas<br />CRC design method<br />Class name<br />Responsibility<br />What it is supposed to do ?<br />Collaborator <br />what other objects it works with ?<br />
    29. Suggestion 3 <br />Practice : Design for ideas<br />Make it easy for test<br />
    30. Suggestion 4 <br />Practice : Design for ideas<br />As simple as possible<br />KISS Principle<br />
    31. 5 Practices (for small team and small project)<br />Release frequently<br />Design for ideas<br />Test!<br />Code for future<br />Communicate agilely<br />
    32. Practice : Test!<br />Test it!programmatically<br />
    33. Practice : Test!<br />Fewer Bugs & Faster DebugKnow problem early and specifically<br />
    34. Practice : Test!<br />Comfortably RefactorNo need to check if it still really works<br />
    35. Practice : Test!<br />Simple DesignTest Before (TDD): design will be never over complicatedTest After: method that hard to test is need to simplify<br />
    36. Practice : Test!<br />Good DocumentationGood test covers use cases<br />
    37. Practice : Test!<br />Unit Testing Framework(Nunit for .NET, Junit for Java, HttpUnitofr testing web,…)<br />
    38. Practice : Test!<br />Use Mock when method touches another class<br />More Reason for test ? Where to start ?<br />
    39. 5 Practices (for small team and small project)<br />Release frequently<br />Design for ideas<br />Test!<br />Code for future<br />Communicate agilely<br />
    40. Practice : Code for future<br />Your code is used many many more times than it is written<br />
    41. Practice : Code for future<br />Make code EASY to<br />
    42. Practice : Code for future<br />Make code EASY to<br />Read<br />
    43. Practice : Code for future<br />Make code EASY to<br />Read<br />Test<br />
    44. Practice : Code for future<br />Make code EASY to<br />Read<br />Test<br />& Debug<br />
    45. #1 EASY to Read<br />Reader get what code does without reading comment<br />Expressive naming<br />Comment why code does it<br />Use enum<br />Don’t quick hack <br />Insert +1 or -1 and it just works!<br />Don’t concern performance too much<br />&lt;&lt;1 instead of *2<br />Practice : Code for future<br />
    46. #2 EASY to Test<br />Query – command separation<br />Make query code has no side-effect (it’s easy to test now)<br />Small class<br />One method one purpose<br />Practice : Code for future<br />
    47. #3 EASY to Debug<br />Always handle or throw all exception<br />No empty catch block<br />Provide useful error messages<br />Categorize them<br />Program defects<br />Environment problems<br />User Error<br />Practice : Code for future<br />
    48. 5 Practices (for small team and small project)<br />Release frequently<br />Design for ideas<br />Test!<br />Code for future<br />Communicate agilely<br />
    49. Practice : Communicate agilely<br />Documents that dictateall of what to do<br />
    50. Practice : Communicate agilely<br />Documents that dictateall of what to do<br />
    51. Practice : Communicate agilely<br />Need more dynamic communication techniques<br />
    52. Practice : Communicate agilely<br />Complete but Flexible<br />
    53. Stand up Meeting<br />Twice a week<br />Everybody answers in 3 minutes<br />What did I do?<br />What will I do?<br />What problems I face?<br />Everybody Stands Up<br />And you ain’tgonna waste time :)<br />
    54. PivotalTracker(Project Management Software)<br />
    55. PivotalTracker(Project Management Software)<br />User story<br />Focus on features<br />Measure velocity<br />Can generate charts<br />
    56. Mailing List<br />For Sharing Ideas<br />New design ?<br />Problem’s solution ?<br />Important Issue ?<br />
    57. Message in Version Control<br />You know<br />
    58. Practice : Communicate agilely<br />Stand up MeetingPivotalTrackerMailing ListMessage in Version Control<br />
    59. Conclusion<br />This concludes Agile practicesI suggest <br />for small team and small project<br />
    60. Conclusion<br />However, there are…<br />Many Other Practices<br />
    61. Conclusion<br />And Many Ways to Apply<br />How?<br />Image fromhttp://www.flickr.com/photos/legojeff/1296661311/<br />
    62. Let’s go Agile :)<br />

    ×