Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Convincing Others To Do Test-Driven Development


Published on

Convincing Others To Do Test-Driven Development

  1. 1. by Jon Kruger
  2. 2.  People are resistant to change People don’t know about TDD TDD takes a lot of practice TDD takes too much time It will take too long to learn how to do TDD We don’t know where to start We can’t test our codebase Egos
  3. 3.  Check your own ego – you are helping people tomake their lives better Know how to teach TDD
  4. 4.  Never put other people’s code down Win the respect of your team members Be encouraging Find allies
  5. 5.  People need a reason to change People are worried that they will fail People are worried that getting up to speed withsomething new will affect their performance Looming deadlines
  6. 6.  Encourage the success of the team, not the successof individuals Your process should reward team success, notindividual success Create a learning culture Pair programming Practice
  7. 7.  Bring in experienced TDD developers to helpmentor your team Know who to ask when you need help
  8. 8.  Test-drive a new feature Refactor a small piece of functionality and writetests for it Don’t try and rewrite the entire app!
  9. 9.  Have the boss let the team know that TDD will be apriority Make sure that the team has the tools they need tosucceed Training time Get help
  10. 10. We don’t know what code is supposed to do “The Legacy Codebase”
  11. 11. We can’t prove that our code is working without someonemanually verifying that it works “The Last Minute Change”
  12. 12. Bugs are a waste of time“The Infinite Loop of Bugs”
  13. 13. Low standards of quality“Throwing It Over the Wall”
  14. 14. Bugs can be really expensive to fix “Explosions and Blackouts”
  15. 15. Over time, code bases tend to become more chaotic and painful to work with“The Maintenance Nightmare”
  16. 16. Measure the right things “Used Car Salesmen”
  17. 17. ProductivityTime
  18. 18.  We need a way to ensure that our code is working We need a way to ensure that our code willcontinue to work after someone changes it We need a way to figure out what code is supposedto do We need to make software development lessstressful
  19. 19. Source:
  20. 20. “If I dont need to make itwork, I can go a lot faster.” -- Kent Beck
  21. 21. Source:
  22. 22.  More regression testing Too expensive to make changes to software Software rewrites
  23. 23.  A software development technique where you writeautomated unit tests before you write yourimplementation code A technique for ensuring good quality and gooddesign Awesome!
  24. 24.  Concentrate on what the code is supposed to do(without worrying about implementation) We don’t write more code than we need to write We have a goal to shoot for We know when we are done We will write fewer bugs You can’t cheat and blow off the tests TDD helps design our code We will write testable code If you’re going to write tests, why not write themfirst?
  25. 25.  Proof that your code works Fewer bugs (both now and in the future) Freedom to refactor without fear of breaking things Prevent code from becoming legacy code Peace of mind
  26. 26.  Microsoft Research – “Realizing quality improvementthrough test driven development: results and experiences offour industrial teams”  Cost of Testing, by Misko Hevery (Agile Coach/Javadeveloper at Google)  TDD Derangement Syndrome, by Uncle Bob Martin  syndrome
  27. 27.  Behavior Driven Development  So How do You Introduce TDD into an Organization orTeam?, by Jeremy Miller  How to get started with TDD, by Misko Hevery (Javaexamples)  TDD Starter Kit – Sample Projects and Links (C# examples)  Pair Programming Bot 
  28. 28.  String Calculator kata  Bowling Game kata  Prime Factors kata  Katacasts (watch screencasts of people doing variouskatas) 
  29. 29.  Email: Twitter: @JonKruger Blog: .NET TDD Training: