As a Professional Programmer, how do you learn new skills?
In my experience, there are some skills that are hard to learn as a professional programmer. You learn a lot on the job, via trial and error, and coaching from your peers. Occasionally you go on a training course and learn the basics of a new framework or language. Neither of those ways is particularly effective when it comes to a skill like Test Driven Development. There are several reasons for this. It’s hard to change the habits of a whole career in a two day class. Then when you get back to work you discover your system is not designed with testability in mind, and adding tests later is really difficult. Alternatively you may find yourself working on some kind of greenfield development where it should be easier. The trouble is you find writing tests slows you down so much, you have to abandon them as deadlines loom. In the best case, adding tests afterwards becomes the norm, and in the worst case they are not written at all.
I've found that having a regular forum for learning, called a "coding dojo", can make all the difference to professionals who want to learn skills like Test Driven Development.
When you step into the coding dojo, you leave your daily coding environment, with all the associated complexities and problems, and enter a safe environment where you can try stuff out, make mistakes and learn with others. It's a breathing space where the focus is not on delivering solutions, but rather on being aware of what you actually do when you produce code, and how to improve that process. The benefits multiply if you can arrange to bring your whole team with you into the dojo. Through discussion and practicing on exercises, you can make a lasting impact on the way you work together.