I have always appreciated articles and blogs that challenge the groupthink that can so easily pervade our industry. Even if I don't agree with everything stated, I believe that it is good to have my opinions challenged. I don't care for whining or negative comments without any constructive feedback or useful alternatives, but I do like contrarian points of view that are well articulated and challenge truly bad ideas that get easily adopted.
Some examples of these types of articles and blogs that have definitely left an impression on me or otherwise influenced my thinking include 101 EJB Damnations [PDF] (and several other SoftwareReality articles), Why Getter and Setter Methods Are Evil (and Are Getters and Setters Evil?), Why Extends is Evil (and a partial rebuttal Why Extends is Not Evil [PDF]), Hybridizing Java, the book J2EE Design and Development, the book J2EE Without EJB, Five Reasons I Think I Will Not Use Spring, The Problems with JSP, and so forth. While I agree with the sentiments expressed in these articles to differing degrees and even disagree with some of the points in the some of the articles, I found them all to be useful for a little introspection and for either changing the way I thought about something or helping me to realize even more why I liked the approach I was using.
As I stated in my blog posting on Motivations and Explanations for Poor Software Decisions, there have been many cases in the history of our industry where an effect similar to that told in the Emperor's New Clothes occurs. The prevalence of blog postings have helped mitigate this to some degree because more people have been able to point out when a new technology has its significant flaws or is just flat-out poor. However, reactionary and defensive postings are rarely helpful. I prefer the postings that are more thought-out and are based on real-world experience.
With all of the above in mind, I appreciated seeing Jordan Zimmerman's new 2009 blog called The Programmer Has No Clothes. In his first six posts, Zimmerman takes on dependency injection, Maven (and Ant), Test-Driven Development, XML, and code comments. While these have all been praised heavily and criticized (in some cases to a lesser degree), the thing I like about this blog is its focus on exposing things that Zimmerman sees as being similar to the emperor without any real clothes.
I look forward to seeing more posts on this blog dedicated to Zimmerman's stated goal. While it is almost certain that I will not agree with everything stated there, I appreciate a somewhat contrarian point of view. Some of the things Zimmerman discusses (XML and code comments) have been largely criticized and debated (many positive and negative reviews). However, taking on test-driven development and dependency injection seems less common. Whether we agree with each others' opinions or not, I believe it is useful to have our preconceived notions challenged as long as the challenges are experience-based and fact-based rather than driven by emotion and defensiveness.
I find myself torn on many issues. It is useful to see the debates on some of these issues to help me make up my own mind. When opinions are exchanged in a professional and constructive way, we all benefit.