Extreme training
Archive - Originally posted on "The Horse's Mouth" - 2005-03-16 04:22:13 - Graham EllisExtreme programming methodology is becoming quite popular - we've got a user of the techniques with us on a course at present - and there's quite a bit to be said for many of the techniques involved.
Set a series of short studies / cases up and work through each with testing and frequent re-integration along the way. Modify the design frequently and early in the light of experiences gained while coding. Work in a team (of two) so that more than one person understands and that you have the power of two trains of thought together (yes, this does mean two people huddled over the same screen). Use "spike solutions" from time to time, where you look ways ahead and try out coding ideas to see if your development ideas will work, before coming back to implement the same scheme in a more thorough and robust manner.
We were musing over a coffee yesterday that many aspects of our training techniques are similar to extreme programming - so perhaps we should entitle it Extreme training. Concepts and subjects are covered interactively here - with new sample programs written from scratch on a projected screen, and with inputs and questions from the whole little group (it's a group of 4 on this week's public course where at the time of the discussion we were covering inheritance and more advanced object handling in Perl. Spike examples are generated from time to time, where a class member asks a question and we head off to explore a subject in more depth. And then we refactor towards the end of the session. The net result is a set of clean and clear samples, written with the trainee's help and clear understanding, which they can use further in their own work down the road.
It really works. I'm chuffed to see how our training is encouraging trainees not only in the mechanisms of the languages, but also in the direction of using the language well in an easy to develop and maintain and robust manner. Whether it's the framework for a generic base class in Perl (view here), or for a web based application in Python (view here) ... it really works.