Coding Dojo: Test Driven Development

Do you work on a team where not everyone is enthusiastic about good design and writing automated tests? A Coding Dojo is a good way to promote good practices and improve your skills, learning in a group.
Course info
Rating
(187)
Level
Intermediate
Updated
Jun 25, 2013
Duration
2h 4m
Table of contents
What is a Coding Dojo and why would I want to hold one?
Teaching and Learning Test Driven Development
Collaborative Games for Programmers
Sample Series of Coding Dojos
Organizing and Facilitating a Coding Dojo
A Tool for the Coding Dojo: Cyber-Dojo
Description
Course info
Rating
(187)
Level
Intermediate
Updated
Jun 25, 2013
Duration
2h 4m
Description

Do you work on a team where not everyone is enthusiastic about good design and writing automated tests? How can you promote good practices amongst your colleagues? If you've been working as a programmer for a few years, and perhaps have become the team lead, I expect you've thought about these questions. This course is about how you could hold regular "Coding Dojo" meetings where you and your team can focus on improving your practical coding skills together. You'll be practicing in a safe, collaborative environment, using simple "Code Kata" examples. It becomes a space away from your normal work, where you can discuss coding practices like Test Driven Development and Refactoring, then later bring your new skills to bear in your production code. This course should give you; the coding dojo organizer, the supporting materials you need to start a Coding Dojo, and get everyone who attends to practice better software development techniques. It should also allow you to improve your communication and facilitation skills, and help your team to gel. Kent Beck once said "I'm not a great programmer, I'm just a good programmer with great habits". What are you doing to improve your coding habits? This is the course with the advice and encouragement you need: get together with your team and hold a coding dojo! It's fun!

About the author
About the author

Emily is an experienced software developer specializing in Test Driven Development, agile methods, and automated testing in general. She is a well known speaker, coding dojo facilitator, blogger, and author of "The Coding Dojo Handbook".

More from the author
Unit Testing with Python
Intermediate
2h 58m
1 Nov 2013
Section Introduction Transcripts
Section Introduction Transcripts

Teaching and Learning Test Driven Development
In this module we'll be taking a closer look at the practical coding skill of test driven development, and how you can go about learning it in the Coding Dojo. First, we'll be going through a worked example of test driven development on a simple Code Kata. And then we'll discuss how you can learn the skills of test driven development through Code Katas. This is the classic diagram that's usually used to explain test driven development. You start by writing a fading test that runs red. And then you make it pass run green. And once you've done that, you can refactor and the code, and prove the design. And then write a new failing test and go round the loop again. I think this picture may be a little bit too simplistic, and I usually introduce a fourth stage to this diagram. The overview stage. I won't explain exactly what I mean by that now. I'd like to show you through a worked example of doing a whole Code Kata, and showing you the steps that I go thorough to move between these states.

Collaborative Games for Programmers
This module, is about Collaborative Games for Programmers. We'll be talking about prepared Kata, Randori, Randori in pairs and various constraint games. So what is a collaborative game? Well, it's a game, where you aim to beat the game itself, not the other players. All the players in the game are helping one another, collaborating to beat the game. There are rules and activities and goals which you're trying to achieve, just like in any other game. As an example, you may have played a card game called solitaire. In that game, you have to skillfully move cards around, in order to get them into a particular order. Normally, you'd play that game by yourself, but there are other, similar games where you'd have several players collaborating, each contributing their individual skills to help the whole group to win. So, why wouldn't we play a competitive game in the coding dojo? It can be fun to play competitive games too. Well, I showed this picture before when I talked about deliberate practice. For you to do that kind of practice, you need to feel safe. Able to make mistakes. Learning just happens more easily, when you are feeling safe and relaxed. If you are in a competition of some kind, you could feel that making a mistake would let the whole team down. Of course a small element of competition could be fun but just keep the emphasis. On collaboration, learning together. People should feel valued and respected, encouraged to be in the dojo. Not like they're about to lose.

Sample Series of Coding Dojos
In this module I'd like to talk you through the first five or so Coding Dojos that you might want to hold with your team. I'll tell you about some activities and Code Katas that I found to work well, and give you some suggestions of how to tailor the content to your group. So, in this module I'll outline what your first Coding Dojo could be like. And then some other sessions focusing on each of the component skills in 'test room development. I talked about the component skills for 'test room development before. And I said one of the strategies you 'could use when learning a complex skill like' test room development, is to break it up and practice the parts separately. So I break it down like this. You need to be able to design test cases, design clean code, drive development forward incrementally with tests and re-factor safely. When you're doing testing and development you'll be flipping between each of these skills. But, in the Dojo, we can zoom in on one or more of them. What I suggest you do is book a series of meetings, invite a group of five to 15 programmers, people you work with maybe, and initially book a series of two hour meetings, about five of them. Choose, perhaps, the end of iteration or the same day each week. In this module, I'll go through in some detail what you can do at each of those sessions with some ideas about how to follow it up with further meetings.

A Tool for the Coding Dojo: Cyber-Dojo
This module, we'll be looking at tools for the coding dojo. We'll talk about what a tool could contribute to your coding dojo and then I'll give you a demo of Cyber-Dojo, which is a tool that I've used quite a lot in my coding dojos. Normally, it's good to practice with your usual tools so you get more proficient at using them. It becomes more fluent. It can be useful to augmentable your toolset with some tools that are specific for the Coding Dojo. As a participant, you can use a tool to give you extra feedback on how well you're doing a test dojo development. For the facilitator, it can make the whole experience managing a Coding Dojo a lot easier. A tool can help you to set up a Code Kata. And then, during the session, direct your help to the pairs that really need it. And, then, during the retrospective, they can help you to share the code with a group. So a Coding Dojo Tool is most often useful when you're doing Randorian pairs, actually.