Couple of weeks (October 11th - October 15th) ago I had the opportunity to attend JP Boodhoo's Nothing But Dot Net remote course. I was very interested to learn more about TDD and getting myself comfortable with some of the advanced concepts in C#.
I wouldn't classify this course as advanced course in C#, rather it was advanced basics in C#. The first day JP gave us a simple task of filtering/sorting sample, JP had created test cases for each of the filtering/sorting scenario and we were writing code to make the test case pass. We went from creating a simple for loop to all the way of creating generic delegates to handle most of the collection related activities, we learnt how we could use delegates and generics effectively.
The next couple of days we created a the fictitious web application that has a shopping catalog and JP taught us about using FrontController architecture for building the application.
The final day JP discussed about the Inversion of Control Container and showed us how to create a container from scratch. I always understood the concept of dependency injection but didn't have a good idea of containers, after this session I was not only able to clearly understand the need of containers but understand the inner workings of container since we created one from scratch.
JP's style of teaching is awesome, he starts by giving us a simple code piece and takes the code of the team that completes the task first and starts refactoring the code from there. His inspirational talks all along the course was an added bonus.
A cool added knowledge I got from the course was the knowledge of DVCS (usage of git and github) for coding purpose, I understand how effective DVCS is over the traditional source control repository and how to use it effectively in the current projects where we do quite a lot of branching.
I would seriously recommend this course to anybody who has been doing OOPS development (not necessarily c#) for atleast 5-6 years to take this course and understand what the real OOPS development is all about. I don't think anybody would walk out of the course and say that they are an TDD expert or anything of that sort (and JP doesn't expect you to say that as well), the course makes you understand where you stand and gives pointers on where to go from here and how to achieve your goals. I certainly think the course would have profound impact in my professional as well as personnel life. Since I was from India and JP has never been to India for taking NBDN courses, I had no choice but to take NBDN remote course, given a choice I would advice people to take NBDN direct course rather than remote course since you would be interacting with JP and your fellow developers directly which would be even more awesome. JP has promised to come down to India some time soon and I am looking forward to attending the NBDN direct course once again.
The only difficult part for me was I was attending the course from Chennai, India the course timing for my time zone was from 9 PM to 9 AM India time. I tried to get as much sleep possible during my day time, but it was not possible to get good amount of sleep and I was mentally exhausted by the end of the week.
Even though I paid for the course myself, it was money well spent. Now I am off to read through the books suggested by JP. I have successfully completed my first objective of reading through "Refactor with Wetware" by Andy Hunt. Now comes the difficult part, applying it in real life :)