I’m happy to announce that the first installment of my five-part screencast series on the S.O.L.I.D. object-oriented design principles, Refactoring to a S.O.L.I.D. Foundation, has just been posted to the DimeCasts.NET website for download or direct viewing.
In this series of short, 10 minute screencasts I will be applying each of the S.O.L.I.D. principles one by one to an existing sample software application to steadily improve its cohesion, flexibility, extensibility, and design.
The code sample for this installment can be downloaded here.
Why Bother?
In the wake of the recent dust-up between Joel Spolsky / Jeff Attwood and Uncle Bob Martin on the StackOverflow Podcast, a number of people (including, thankfully, Uncle Bob himself) have weighed in on both sides of the argument. My own observation is that many people are staging their criticism from a position of misunderstanding of the intent of the principles and their practical applicability to software engineering.
For the record, I have been a long-time believer in the value of these principles; to me there aren’t so much new ground as a clever repackaging of simple basic OO engineering principles restated in a cute and memorable slogan (no offense intended to Uncle Bob; the observation, recognition, and cataloging of patterns is in itself a tremendous value to the profession ).
Like most patterns that one ‘discovers’, I have trouble understanding how anyone could question the value of such a basic set of observations with a straight face. To me, its rather like when you first read the GOF Patterns book: you just go “Duh! I’ve done that 100 times but I never knew there was a name for it!“. It simply codifies practices that you have already found yourself doing in your own work over and over again. That’s the meaning of the term ‘pattern’ in software engineering — they aren’t invented or discovered, instead they are observed repeatedly and eventually cataloged and documented.
Patterns vs. Principles
I tend to think somehow that if Uncle Bob had called them merely the S.O.L.I.D patterns instead of principles then this latest tempest-in-a-teapot probably never would have even occurred. We as software engineers seem OK acknowledging that the application of patterns is heavily context-sensitive but apparently we somehow see a principle as something suggesting that it should be indiscriminately applied everywhere regardless of applicability to the problem at hand.
Check it out — one installment coming about every week!
So I figured that it might be time to demonstrate some concrete applicability of the these principles to a real-world engineering challenge (albeit a contrived one that somehow fits neatly into a 10-minute screencast ) so that people could start to see how these principles applied correctly can help to steadily improve the design of even a very simple OO software system.
Since it seemed to me that there was a great fit between the DimeCasts.NET format of 10-minutes-per-screencast and the number of these that would be needed to cover an intro to the S.O.L.I.D. principles (five — one for each of the letters of the acronym), I reached out to the founder of the site, Derik Whittaker, and inquired as to whether he was interested in taking some submitted content from me. Happily, he was quite willing to accept the additional content and so over the next month or so he will be releasing my S.O.L.I.D. screencasts at a rate of about one a week as he has time to title them up with appropriate intro and outro content per the DimeCasts.NET standard.
Stay tuned for more announcements on these releases as they become available!
Even if you’re not interested in learning about S.O.L.I.D. OO design principles, long-time viewers of my other screencasts efforts like the Summer of NHibernate and the Autumn of Agile series might be interested to view one or two of them just to see that its indeed possible for me to provide content in a time-limit of under 3 hours
Wow great.. Am downloading as i speak. And by the way what happened with the Autumn of agile series.. I am eagerly waiting for the 2nd iteration 🙁
Autumn of agile casts was really great ! looking forward to see next episode soon 🙂
All:
Autumn of Agile is coming back strong starting with this weekend; the first half of the next installment is already complete and the second half will be completed and rendered this weekend for release.
So its imminent, I promise 🙂 Appreciate you (and everyone else) hanging in there with me as I get distracted by other concerns and have to reign myself back into my original goals by focusing my bandwidth back onto this.
i enjoy watching the screen cast and was very well done, good job Steve 🙂
just curious what makes you put the screen cast on dimecast ? you could have done on agile?, anyway thanks for the video.
@Nisar:
The format (one screencast for each letter in SOLID) seemed to lend itself to a series of shorter screencasts rather than one longer one and so that made them a great fit for the Dimecasts.NET site IMO.
Nice! Good to have screencasts that are short and to the point for isolated areas. Looking forward to see them applied in the Autumn of Agile series.
Too bad they didnt get you name right 🙂
@tab:
Indeed, I have already mentioned that to Derik and he’s both going to re-render the first one with my correct name as well as fix it for the other installments as well. 🙂
[…] For more details on this series, see this post. […]
any updates on the autumnofagile screencast? 🙂