Hello February! Kicking off today with a fun preparation for the weekend. The announcement of the schedule and agenda will follow on Monday. My content here, on LinkedIn and on OTJ will be devoted to Test-driven Development and TDD-related topics for the entire month.
To make it fun, here’s something you can do on your own.
The Most Comprehensive Kata for learning TDDthat I know of
This is the Kata I use most of the time on 1-on-1 sessions with TDD students and team workshops. It’s called the Transport Tycoon DDD/ES Kata by Trustbit (formerly Softwarepark). Season 1: Tasks one and two are what you are looking for.
Here is the github repo with the kata instructions 🔗
For Leaders
Write down testable acceptance criteria for Task #1 in a manner that allows someone less experienced than you to use your acceptance criteria as proof and sign of progress.
Write the list of acceptance criteria for the algorithm in task 1 to be used as larger outside in tests
Add a list of test cases for the finished solution run through to give you confidence it works
What hints would you give your engineers on what lower-level tests to write for incremental progress
Sort all tests in order of progress (ie. how you’d ideally wish it to be released if it had to be sliced into smaller pieces).
For Engineers
Solve task 1. TDD, Event-sourcing or without. Doesn’t matter. You can skip the tests too. Solve the problem once without tests. Give yourself a time limit (45mins is good, 2 hours is generous).
Take a break of at least an hour afterwards. Commit your results in a private or public repo (your choice)
Solve it again, this time starting with TDD.
Write a list of tests, then incrementally implement them.
Commit each test once it’s passing so we have a nice log.
Share your experience and questions (and/or work if comfortable)
For Try-hards
Solve the ‘For Leaders’ section
Implement Task 1 following your “Leader instructions” in a language you do not use primarily using TDD
Give yourself a time limit and share what you get done.
If you gave up or stopped unfinished, go ahead and solve it in your preferred language. Share your findings—what’s different?
Bonus: If you did manage to solve everything quickly using TDD, congrats! You’ve built a working prototype very quickly. Now on to Task 2!
💭 Share your results with others, comment on this post.
Those of you who are knee's deep in the Kata. How's it going?