The title of this post may sound like the catchphrase from a really cheesy movie, but I think it sums up quite nicely the plan that I had in my mind for where I wanted this course offering to go. In a development world where we seem to be caught up in learning tools vs solid practices, Nothin But .Net is about getting back to basics, building a solid core, and having the foundation with which to be able to evaluate and leverage new technologies, toolset, practices very quickly. Helping devs to chart the course for the rest of their dev career, and not feel so overwhelmed at the rate of change that is currently prevalent in the industry.
Let me state clearly that I am first and foremost a developer, honing my craft daily by working on projects using pragmatic agile practices that I have morphed to work best to my development style. I don’t post a public schedule for this class, and have been blessed to have received a lot of interest over the last couple of months that has allowed us (my family and I) to travel once a week each month for the last several months to deliver this targeted training session. My plan is to do 3 weeks of regular consulting, and 1 week of the course, for the next couple of months.
It would better be described as a week of heads down, crazy mentoring. I show up with no powerpoint, the skeleton of a web UI done (which serves as our stories generator) with no code behind. Over the course of the week, I teach people how to apply domain driven design, behaviour driven development, solid OO principles and design patterns to incrementally build up the functionality of the web application.
The reason the class is called Nothin But .Net, is that I feel the need to help people understand at a fundamentally core level, the patterns and practices underpinning a lot of the frameworks that they may choose to utilize in the future. By giving them the knowledge to use these frameworks will intelligence, they are much better prepared to know how to fix/work around the frameworks when they do not work for them. More importantly, they get to see how tdd plays out over the course of the week to build the application under question. They also get to see how building an app in a loosely coupled way allows easy transition if they decide to suddenly move the mapping layer to something like NHibernate, or the dependency container to something like Castle.
Having delivered this course 3 times this year so far, each iteration of the course has been a wildly different experience. And the code that comes out of each iteration is remarkably different from the prior iteration. I have to say that I think I have as much fun , if not more, than the people that attend. The days can be pretty long though, this last iteration consisted of 1 10 hour day followed by 4 14 hour days!!
I had promised my attendees that I would be posting to my website, the comments (good or bad) that I have received from each iteration of the course. I am currently working on revamping my web site to include all of the feedback from each iteration of the course. In the meantime, I thought I would post some of the (good) comments that I have received from attendees so far:
Edmonton,AB – February 2007
I really got a lot out of the course. The course was one of a kind and I would definitely recommend it to anyone who wishes to take his/her architectural/development skills to the next level. The course was a paradigm shift for me and it exposed all of the bad programming habits that I had picked up over the last few years. The paradigm shift for me was mainly that I was thinking that I was doing previously was object oriented programming but realized that I was actually only doing precedural programming. I am definitely leaving with a sence that attending this course was definitely the best thing I have done for my career and I will look back and remember this as a turning point for me. Thanks JP !!
Prerequisites for this course should include experience with .Net 2.0 along with familiarity with Unit testing. I think some familiarity with design patterns would also benefit the student.
I realize that I this course was a little beyond my current skill level and so don’t think that I could say anything that would be constructive to help better plan this course in the future. But I definitely think there is benefit in seeing tdd in action and think that you should keep some element of this in the course (seeing how elegant solutions were composed and how they evolved definitely helped with the comprehension of the material).
I enjoyed the course and would recommend it to anyone who has already started down the path of agile development. This course is not for beginners or the faint of heart.
This is most certainly a training course for experienced .NET developers who are looking to expand their skills and knowledge in design and development techniques. Although intense and draining, the concepts are presented in a fashion that allows for the students to progressively apply the teachings as the course moves forward.
If you are expecting to hone your basic software development skills, this is not the course for you. If you’re looking to extend and enhance your current skillset, you will be in for a mental treat.
You can tell JP has a lot of real world developing experience, he is constantly referencing it and that is important for less experienced people to understand that this stuff will help you when you get back to your job. Some teachers loose their touch with real world situations if they spend all their time in a classroom, it is nice to hear real examples.
I thought the course was quite good. The course filled in quickly a lot of the things I had heard about but never got a chance to use or did not want to go through the grief of learning them without mentoring. It was great to learn so much from someone in the field that works with this stuff everyday. It was also great that we never used anything pre-canned so that we got to be involved with a ground up build and see how easy things were when doing an application from a TDD perspective.
I found that the pace of the course fluctuated too much. The first two days were quite fast paced and a bit overwhelming. The last three days seemed to drag out a bit and it felt like not many new concepts were being introduced. This was due the disparate level of developers in the class though.
I felt that the course has really put me ahead of the curve. The course has shown me the tools, methodologies, and practices that I can use right away to make my applications better, more testable, and less complex.
The course was a fantastic experience, and a great opportunity to get some in depth exposure to a well thought out and understood development process. The instructor was more than happy to share his knowledge, however, sometimes that was a bit of a drawback just because of how how much he had to share.
I would definitely recommend this course to anyone who is comfortable working in C# 2.0, and doesn’t need Visual Studio to walk them through every step (I wasn’t quite there when I started, but am a lot better now).
This is the BEST course that I have been on. JP was an excellent instructor, learned a lot in the five days. Design patterns, domain driven design, application layering, etc… Covered it all! If there was another opportunity for me to take this course I would definitely do it again.
This is the first computer course in which I’ve learned from a knowledgeable instructor. Showing how to use abstract patterns for solving real problems is refreshing compared to books and articles I’ve read that deal with only the concept or give examples that do not use patterns and is applicable to more than just the DotNet framework. I liked the varied manner in which the class was taught through overview of design principles, talking out problems, personal coding, and review of some potential alternatives and consequences of those alternatives. While one afternoon was painful due to so many concepts being introduced that I was personally not familiar with, I still feel I improved a great deal in at least gaining a basic understanding of those concepts and how they could be applied.
Personally I received alot of value from this course. I have a much better understanding of what I know and more importantly what I don’t know. I’ve learnt numerous techniques that will help me in my daily job as a software developer. I expect to be much more proficient and efficient. I also am really excited about taking what I have learnt and using it to learn more stuff on my own. I’ve put in place a plan with my wife to allow me personal time to expand my personal skill level.
The one negative thing I would point out is that you have a tendency to talk without providing space for people to get a word in. In fact at one point you asked us all to answer a question but never gave us a chance to answer it.
This course was good because I have been trying to do proper design and testing on a new project at work. I also think that having seen some of your presentations I was able to pick up on the concepts easier because I had tried them on apps at home and at work.
I liked being able to try the exercises/labs after learning the theory and having to think on my feet. After trying the lab it was very valuable to see ways that code could be further refactored using small steps if it was warranted.
I think having read some of the book refactoring to patterns I was able to understand concepts like chaining constructors, introducing factories to create objects and decorating new functionality on top of existing objects without modifying them.
Richmond, VA – March 2007
I think I probably said everything I had to say under some area or another. Perhaps on a personal note, JP had to go through a lot of logistical difficulties to make this course happen, and I think a lot of trainers in his position would have either pushed the training further out or just called it quits and given a refund. He showed a lot of heart even getting the training off the ground, took personal ownership of whatever difficulties there were, and was clearly committed to the students and making the class successful for everyone.<o:p></o:p>
I was an IT trainer for four years, and to be honest with you, I think the fact that JP is not a ‘professional trainer’ contributed a lot to the overall success of the training in general.
What an awesome week of hardcore OO, Patterns and .NET madness. Every MS, data-centric developer should take this course to truly understand better ways of building software. From some of the things I learned this week (technical and non-technical), I see attending this class as the biggest turning point in my career as a software developer/consultant since I got test-infected a few years ago.</o:p>
Perhaps some exercises on some of the ‘review’ topics or OOAD/DP examples to work through before the class to get folks ready for what is to come. Would also be a way to gauge skill level before someone signs up/shows up.<o:p></o:p>
Overall this was a GREAT experience for me. I learned so much and also have a path on where to expand that knowledge. I am taking pieces of what I’ve learned and trying to implement them on current projects as well as trying to put into place some of the process and principles.<o:p></o:p>
Had a great time. Learned tons. Money well spent (by my employer lol). Looking forward to future courses and/or presentations.</o:p>
I really learned a lot. I don’t think I have even begun to digest everything I learned. It was even difficult to begin to talk about it when some of my developer friends asked. I am really glad I will have the recording so I can go back and rewind again and again. My learning style is very tasked based (I find out what I need to solve the problem at hand) and I often remember where to look up information more than trying to remember the information itself, so I think having the screen casts of the class will be extremely valuable to me. I already mentioned the concept of a more communal boot camp idea. I think also a more 2-4 hour/week traditional class structure might work well also. On the concept of getting off track, I really liked the idea in day one that we would be working with an online shopping cart. I thought this would allow us to walk through all the layers and see almost a complete cycle, however we were really racing on the last day to get the list of items on the screen.
It will take a few months I think until I completely ‘grok’ everything so I can sit down with a blank solution and make my next killer app. ;–)
You mentioned this whole concept of training trainers as part of a long term vision and I would be interested in learning more about that. As a lone developer in my company its hard to keep on top of things and get important outside experience and ideas . A part time training/teaching project might really help me keep my sword sharp!</o:p>
This course exceeded my expectations in every way. It’s given me a good understanding of how I need to improve my skillset so I can become significantly more productive in a reasonable timeframe. J</o:p><o:p>P is totally outrageous and one of the best developers that I’ve had an opportunity to learn from.</o:p>
<o:p>Regina, SK – March 2007</o:p>
JP – you are a phenomenal teacher. It was awesome to be in a class where things were actually taught, and not in a class that consisted of PowerPoint slides and a droning voice putting everyone to sleep.</o:p>
This was an outstanding course. Not the traditional classroom style of instruction, but far more effective in my opinion. I learned so much from watching how JP attacks a problem and works through to the solution using TDD. One of the most important things I personally gained out of the course was the reminder of how truly important it is to have a solid understanding of OO Analysis and Design techniques before jumping into any of the multitude of frameworks that are out in the market today.
Although this course was outside of my comfort zone, I believe this is one of the reasons that I learned as much as I did. Thanks JP – great course!</o:p>
<o:p>Comments are still coming in from the Regina course (it just finished last week). As soon as my site work is finished; I am going to be posting the comments in their entirety (good and bad) so that anyone who may be interested in contacting me to deliver the course in their area (yes I do travel to run the course) can have a better idea of what to expect. </o:p>