Amen to that, Brother Haack

Phil Haack has a great post that’s near and dear to my heart, Better Developers Through Diversity.


He makes a hugely important point that we should never look at Microsoft as the ultimate source of software development knowledge.  I work in a .Net shop, but if you look at how we approach development and the tools we use, you’ll spot much more influence from the Agile Java community than Redmond or the VB6/ASP community.  Something that Haack mentions in passing is the number of open source tools that often provide a better or more appropriate alternative to Microsoft’s solutions (though my team is about *this* close to ditching log4net because of the versioning problems).  Frequently an open source tool simply plugs a gap in Microsoft’s tooling.  For example, Microsoft still does not have any true equivalent to CruiseControl.Net for continuous integration.  If you want to do CI you’re still better off using an open source tool, but you’ll never know that if you only read and follow MSDN.


I’m going to channel Scott Bellware here and say that a lot of the advice Microsoft has given out through the years has been harmful.  The closed loop conversations between Mort and the parental oversight at Microsoft has certainly resulted in reams of unsupportable code.  Other development communities have multiple web framework choices that encourage a good separation of concerns in their web applications.  We have drag n’ drop tools to create one tier web applications.  Microsoft has a great story for doing RAD development, but not for creating larger, maintainable code bases.


Microsoft’s .Net, VS, and Team System teams aren’t conspiring against us to turn us into RAD zombies.  They’re giving us what they think we want and need.  It’s our responsibility in the community to reflect the need and desire for sustainable development tools and techniques.  Even though I’m bypassing Team System and VS2005 (not touching it until ReSharper 2 is released) for now, they’re definitely a step in the right direction, the unfortunate TDD misinformation aside.


I think this might be changing a little bit in our favor, but overall the intellectual center of software development is rarely in Microsoft development circles.  It might just reflect my development interests, but I can’t think of a single canonical book on software development that contains anything more than cursory attention to the .Net platform.  Most of the example code I see in books is written in Java, with C++ a distant second, and C# trailing even farther behind.  The meaty software design books written for  a .Net audience are usually derivative works of the original Java-centric works.  My point here isn’t to say the Java, Ruby, or Python communities are superior to ours (because I seriously doubt it is), but rather to second Haack’s plea to pay attention to other development communities.


 


One last thing, in the year 2006 it’s almost irresponsible to be using Visual Source UnSafe.

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Ranting. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Eric Kinateder

    Robert C Martin appears to be (re?)writing a book on Agile Principles.

    The original was decent, but I’m not sure it needed to be translated to C#, as most of the examples are in Java (and possibly even C# — I can’t remember!).

    Maybe it’s new content?

    http://www.amazon.com/gp/product/0131857258/sr=8-2/qid=1140660137/ref=pd_bbs_2/102-0182762-5516132?%5Fencoding=UTF8

  • Jeremy D. Miller

    That’s one of many reasons I like Martin’s writing. Craig Larman had a few C# examples in his patterns book, too.

  • http://haacked.com/ Haacked

    Thanks for the glowing review! ;)

    By the way, there is one “canonical” book I can think of that does feature some C# code. Patterns of Enterprise Application Architecture by Martin Fowler.

  • http://www.trason.net Weston M. Binford III

    Jeremy,

    I have to agree with you about five years being a long time.

    I just started reading the Ruby on Rails book and I am amazed at the depth of technical content relative to the Microsoft Press books that I have been reading. Ruby is a more recent language than .NET.

    That is not to say that Microsoft Press does not have some great books. I would consider Jeffrey Richter’s Applied .NET Framework Programming book to be a canonical programming book especially if you want to understand how the CLR runtime really works.

    However, most of the Microsoft Press books seem to be geared towards explaining how to use Microsoft tools instead of how to program. That is necessary, but not sufficient.

    -Weston

  • Jeremy D. Miller

    Alex,

    True, but 5 years is a long time in our industry and I was thinking of several books from the last couple of years. It’ll be interesting to see if the GoF version 2 book has some .Net examples.

  • Alex Lowe

    Considering that .NET has only existed for ~5 years, it’s not that surprising that most canonical books on software development contain example code using languages that have existed 10+ years.