How do you know nowadays that something in developer technology has been perverted completely beyond its initial intent into something horribly disfigured and unrecognizable to its original authors?
When people start to feel the need to put the phrase "Plain-Old-" in front of it.
Whether POJO (Plain-Old-Java-Objects), POCO (Plain-Old-C#-Objects or Plain-Old-CLR-Objects for the VB-heads out there), or even POX (Plain-Old-XML), there is a steady stream of these references to the Plain-Old-this and Plain-Old-that that seems to be needed nowadays to inject simplicity into what are now considered by many to be concepts bloated beyond all recognition.
What is ALT.NET (really)?
At what is about the 1-year anniversary of ALT.NET, there still seems to be some challenges around the community’s definition of itself. The definition from http://www.altnetpedia.com is…
We are a group of people who are passionate about improving the way we develop software. We recognise [sic] there is no single solution, but instead there are multitudes of alternatives that can be applied to different situations. Our community is a place for sharing these alternatives, so that together we can learn, teach, and encourage new ideas.
From http://www.altdotnet.org we get the following statement of purpose and goals…
We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.
David Laribee has attempted to further distill it down to just two…
- Do you write software or otherwise work in a team using the .NET Framework?
- Are you interested in learning and improvement?
That’s you? Great! Welcome; you meet the criteria.
In a recent blog post, Glenn Block had this to say…
- Separation of Concerns
- Single Responsibility Principle
- Law of Demeter (LOD)
- Not doing BDUF
- Favoring Composition over Inheritance
These principles are orthogonal to language, technology and platform. Applying each of these principles leads to software that is easier to test, easier to maintain, and easier to extend.
While I think Glenn is right about his observations as to the value of these design approaches, I am troubled by these principles being somehow ALT.NET-related since to me they are really about coherent OO software design principles rather than ALT-anything.
Some time ago, there was an effort by the Los Techies blogging crew to suggest that perhaps the S.O.L.I.D. acronym described the design principles that drive ALT.NET values even though these are really just good object-oriented software engineering principles at their core.
While I both consider myself ALT.NET and consider the S.O.L.I.D. principles to be very valuable OO guidance, I think its a stretch to say that one necessarily flows from the other. It seems to me that I could follow S.O.L.I.D. design principles and not be ALT.NET…but I wonder if the converse is indeed true: could I consider myself ALT.NET and not follow the S.O.L.I.D. design principles?
ALT.NET = POSE (?)
It seems to me that there are two parallel threads going on in these attempts to catalog ALT.NET principles and values: one is about free-thinking members of the .NET developer community gathering to better themselves and their profession by the open discussion of software engineering and architecture practices and the other is about core OO software engineering principles.
It would be a sad statement indeed if we conclude after a year into it that ALT.NET is just about what I consider to be ‘POSE’ (Plain-Old-Software-Engineering) and that we had to form an odd counter-culture movement just to have a basis for saying that these POSE principles are valuable to the practice of our profession.
By wrapping POSE principles up into a bag of ALT.NET tricks, we are necessarily positioning these things as being ALTernative, non-mainstrream principles and I wonder if this is actually detrimental to the health of the overall .NET software development community.
Surely ALT.NET has to be about more than just POSE principles.