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.