Doing TDD Well, Page 3
Never Be Blocked!
Bob Martin repeated this mantra at Agile2007, in his talk about professionalism in software development. Agile and TDD promote the notion that you can build solutions incrementally, without complete details in place before you can start. Per Uncle Bob, you can use abstractions and decoupling to avoid having to wait for complete definition. It's important to initiate the process and feedback loops.
Techniques are changing constantly, and new tools arise on a weekly basis. Keeping up is difficult, but a true professional does what he or she can to stay current. There are wonderful books, magazines, web-zines, pod casts, Yahoo! groups, and of course Internet searches at your disposal.
Work as Part of a Team
Good teams learn how to get on the same page and understand each other. Developers on such a team look for standards that can help remove barriers to understanding, and that can minimize masked problems. Tactics such as pairing and other forms of review can help. The best teams learn about each other and the systems through frequent communication.
TDD challenges experienced developers who have coded in a less effective fashion for their entire career. Learning requires an open mind, one willing to accept that there might be a better way to do things. In fact, the emphasis on feedback means that there will be continual learning and improvement. TDD masters use failures as opportunities to learn. They don't fret over throwing away bits of code that represent failed approaches.
Practice, Practice, Pratice
How do you get good at TDD? Build a firm understanding of the basics of TDD. Do it, and practice it. Repeat.
About the Author
Jeff Langr is a veteran software developer celebrating his 25th year of professional software development. He's authored two books and dozens of published articles on software development, including Agile Java: Crafting Code With Test-Driven Development (Prentice Hall) in 2005. You can find out more about Jeff at his site, http://langrsoft.com, or you can contact him via email at jeff at langrsoft dot com.