2 Comments Thoughts about the Design Master Class - 10/13/09
So, after a lot of impatient waiting, last week my colleagues and me attended Dino Esposito’s Design Master Class, which was organized by Pieter’s new company: Sparkles.
First of all, we had a lot of fun! We had a great group and I also bumped into some ex-colleagues from Compuware which is also always amusing to say the least
. The food was great, each day a different experience
. Personally, the location was a bit too far away, but all in all I didn’t spend too much time in traffic jams so that turned out OK to.
Now let me share my thoughts about this class with you…
I don’t know if you know what topics this class covered, but you should certainly look at the table of contents before you continue reading, which you can find here.
As you’ve seen, the table of contents looks very promising and interesting, it covers all the “hot topics” on which everybody is reading and writing lately: OO design principles and patterns, unit testing and design for testability, IoC, Domain-centric design versus procedural patterns, persistance ignorance, ORM, presentation patterns, and so on…
It was a 5 day class, during which every one of these concepts was covered in depth, but in a rather theoretical context. Dino provided us with lots of examples and demo’s, but every example and/or demo only covered the specific subject we we’re handling at the moment. This provided me with a more detailed knowledge (in isolation) about these topics, but in my opinion, I missed a more practical approach.
Now, to be honest, my expectations for this class were a bit different than what we actually did (and maybe that’s just my mistake). I’ve been reading a lot about these subjects the last months (for about a year and a half now I think) and I also applied them whenever I could and the best I could. The problem with these concepts, is that they are quite “easy” to understand in isolation and to apply to simple problems, however it tends to get difficult once you’re writing a big enterprise application. That’s were the the use of all these concepts shines, but that’s also when it’s hard to apply them. You have to always keep your both eyes open in order to keep your model clean. So, in that sense, I expected we’d briefly cover these topics in theory, to finally walk through a full enterprise application, and see how these concepts are finally integrated into a complete solution. I was hoping for some pair-analysis and pair-programming sessions to compare and discuss our results in group afterwards and gain a greater insight while doing so. A little more the agile way I guess…
So what’s my final thought about this class: if your team needs to write complex enterprise solutions that require a domain-centric and object-oriented approach, this is the material you need to master to succeed. But generally speaking, I’d recommend this class to a junior developer who needs introduction to all these topics rather than to developers or architects that already have the basic knowledge and need to gain insight on how to apply them in the real-world. Gaining this insight is very hard, and I don’t doubt that it’s very hard to explain them to someone. Still I’m convinced that theory only helps to introduce the concepts, and practice is how we gain insight and refine our knowledge. There’s no silver bullet for knowing when to apply certain principles/patterns or not, there are cases in which it would be crazy to even try to apply them. That’s why I’m convinced that the only thing that can help you here is practice…
Now what’s next? I know a bunch of people who attended the Architect’s Master Class, brought by Juval Lowy last year… Pieter dit it again and will probably be organizing this class next year. I’m already subscribed to the Sparkles blog to keep an eye on this course and go whining to my boss the day registration is opened
!