Today was the day that we have training at the DotNet Solutions. Dr. Neil Roodyn has presented eXtreme Programming techniques and technologies that we can simply implement in our day to day development tasks.
The most interesting thing that the belief to "Zero Defect Software Product" which I believe was impossible. At the end of the training I actually had to change my decision on this. Also the courses that I am taking this semester "Requirements Elicitation & Analysis Techniques and Verification and Validation Techniques" at ANU is also taking this belief into account and introducing tools to accomplish this.
Test driven development (or test first development) plus Continues Integration makes us (SW developers) more agile in a sense that we can deliver a software product which will fulfil the customer's requirements from the zero iteration of our product. Dr. Neil Roodyn's book is starting from chapter 0 so the first iteration in your software development effort becomes "Iteration 0". Iteration 0 is where you get all your tests are passed and you are fulfilling the most important features for the customer.
Design Patterns also mentioned in the training. The result is; you should not squeeze your code into design patterns but the patterns should come out of your code. If there is an emerging design pattern at some part of your code then you may think of it getting done as a pattern more accurately.
Pair Programming was the fun part. We sit down as pairs, one is the coder the other is the observer. After coder finished his/her work, observer gave a grading out of 10 and told what he/she liked and what he/she didn't like about it. Based on the comments the code has been fixed. The result is a better code which will result in a quality product later on. This is also called perfection game. Pair Programming is an issue for most of the developers as everybody's personality and psychology is different. You can get a greater view about Pair Programming from Laurie Williams' book "Pair Programming Illuminated"
Planning game was also another fun part. We have written down the customer requirements on cards and spread them on the floor in front of the customer and asked him to prioritize most important features. Based on this you are defining what is actually required or what are the features that you need to deliver in your first release or iteration.
Test first development has raised some questions like "Why do you write test first?" the answer is because tests are becoming your specifications to write the code. The other question was "Why is it costing more?" the answer was because you are lowering the maintenance cost while you
are raising the development cost.
Re-factoring was the last thing that we have done. It is restructuring the code while maintaining the behaviour to understand the code more, making it more robust, making it easy to add new features and lowering the cost of change.
I think it was an informational training but I was expecting more hard core XP rather than introductory things on eXtreme programming.
Thanks to DotNet Solutions and Dr. Neil Roodyn to provide us this training. Ah also MSDN Connection for the discount.

Dr. Neil Roodyn
[Listening to: ForThoseAboutToRock - AC-DC - ACDC Live (7:08)]