I was recently asked to give a presentation to a team, introducing them to Test Driven Development (TDD). I was first introduced to TDD 3 or 4 years ago and have enjoyed relaying my experiences and sharing my new passion with my fellow developers.
When I first started with TDD I was working for a small startup. The entire team decided the tackle the task of learning TDD with support from the whole organization up through the CEO. With one developer with some experience with TDD it was a rather rough time in the beginning.
From start to some level of comfort took about 3 months. That was 3 months at each other’s throats and full of frustration. In the end the team pulled through and everyone was easily practicing the new discipline. That is, everyone save for one lone developer that instead chose to leave for another opportunity.
Below are some of the resources I’ve used in the past and/or can recommend today to those looking to gain a better understanding of Test Driven Development.
The Bowling Game – http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
String Calculator – http://osherove.com/tdd-kata-1/
Interactions – http://osherove.com/tdd-kata-2/
Test Driven Development: By Example by Kent Beck
Growing Object-Oriented Software Guided by Tests by Nat Pryce and Steve Freeman
Professional Test Driven Development with C# by James Bender
Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
The Art of Unit Testing: with examples in C# by Roy Osherove
TDD Part 2 – https://cleancoders.com/videos#clean-code-episode-6-p2
Advanced TDD – https://cleancoders.com/videos/clean-code/advanced-tdd
TDD Part 1 – https://cleancoders.com/videos#clean-code-episode-6-p1
NCrunch – http://www.ncrunch.net/
Moq – https://github.com/moq/moq4
Karma – https://karma-runner.github.io/1.0/index.html
Jasmine – http://jasmine.github.io/
Mocha – https://mochajs.org/
An International Speaker, Author, and Microsoft MVP, John has been a professional developer since 1999. He has focused primarily on web technologies and currently focuses on C# and .NET Core in Azure. Clean code and professionalism are particularly important to him, as well as mentoring and teaching others what he has learned along the way.