Shaking out the Innovation

There's been a lot of talk going on in the Microsoft community (here, here, here, and here) lately about agile development and whether or not Microsoft "gets it".  Some of this was triggered by a recent post from Martin Fowler on Ruby and Microsoft.  After speculating on what direction Microsoft might take with its upcoming IronRuby implementation, Fowler raised some potentially controversial points suggesting that Microsoft is catering to lower-skilled developers vs. "alpha geeks" with its platform.  He quotes Scott Hanselman in suggesting that there is a concern that "alpha geeks" may be moving away from the Microsoft platform because of this.

This is not the first time I've encountered this type of discussion in the community before.  It seems almost like a repeating cycle where there are highly skilled developers moaning about the lesser skilled developers around them.  I think it's a fact of life that there will always be people with different skill sets in the technology field.  We'd all like to think of ourselves as 'alpha-geeks', but at the end of the day the reality is that the majority of folks in the world are not.  Those so-called 'alphas' need to get over themselves.

When you work at a software company, it is typical to find yourself surrounded by experts.  If developing software is the company's business, the folks who work there are likely to be expert software developers.  Many of the folks who fit into this category are the type of experts who write blogs and help improve the skill sets of those around them by sharing their knowledge and experience.  They are also the creative people usually working on the next big thing or seeking out better solutions for the problems they face.

Software and IT are essential to most businesses today.  This means that at most companies (large or small) you will find an IT department that probably has developers working in it.  Depending on the company's size or software requirements, these development shops may be pretty large.  For many of these companies, software is tool that helps their business run better.  Software is not the company's core competency.  They may have a few experts on hand to lead projects, but most of their staff are developers who struggle just to figure out how it all works.  They need to get their jobs done, but have little time or interest to try new things.  This is a key thing that may be lost on some.

I know from my experiences as a consultant, I have run into far more folks in the second category than the first.  When I see developer tools coming out of Microsoft that support this group, I get excited because it makes my former job as a 'shepherd' easier.  I know that the tools will guide the folks who may not be experts and keep them on the path that has been outlined for them.  Wizards, software factories, source control with check-in policies, etc, I jump for joy!  Give me more!  I know many of the large enterprise companies I consulted for could benefit greatly from all of these.

At the same time, I know the average 'alpha-geek' (<-- is that an oxymoron?) probably cringes at the thought of things like wizards and data adapters.  I like learning things from the ground up so I understand what's going on.  Give me the tools later to handle the tedious grunt work and I'll use them if it makes my life easier.  But to start with code generated from a tool that I don't know what it does... that scares me.  I think most experts feel the same way.  The great thing about Visual Studio is that if you don't want all the hand-holding of wizards, you just don't use them.

That being said, I think that Microsoft has always tried to support all developers types, whether they be novices, experts, or somewhere in between.  It's a tough line to balance.  I can see how some might claim Microsoft's developer tools cater toward the wizard loving crowd.  It has to, because that's a significant segment of the market.  But I'm a firm believer that the Microsoft platform can support whatever creative things you want to do with it.  The .NET Framework is powerful platform, and I think most, if not all, Microsoft developers would agree with that claim.

Enter the discussion of tools and frameworks being built that enhance .NET.  A growing number of these tools have been coming out lately (NHibernate, RhinoMocks, NAnt, etc).  You've probably heard of many of them, but if you haven't, I'll link to them later.  Many of them are open-source projects, built by folks in the community.  Not only do these tools help plug gaps in the platform as Fowler describes them, they help foster a stronger community of users.  When a platform has a healthy community that builds things on it, the ecosystem around that platform grows, and that usually leads to wider adoption of the platform.  (<--- Yes, this is a business, and growing platform adoption helps Microsoft's bottom line.)

Many of these tools have great appeal to the so-called 'alpha-geek' who develops on the Microsoft platform because they help support agile development.  At the last NYC Code Camp in February, the Agile development track was "hot"!  I've heard from several local folks I know in the community who use these tools, and they love them.  It seems there's even a moniker, created by NY's own David Laribee, that is starting to spread to describe the people who use them:  "ALT.NET".  Roy Oshervove compiled a listing of ALT.NET 'concepts' here.  Sam Gentile, from Jersey, adds his modifications to the list here.

When I hear feedback from the Microsoft community that it is concerned that Microsoft is not embracing these tools, it concerns me too.  The recent TestDriven.NET/Visual Studio Express licensing dust up probably don't help enforce the perception that Microsoft is in touch with its developer community.  The reality is, Microsoft has entire teams of people (mine included) that focus on supporting the developer community.  Feedback, good and bad, is always welcome.  While I can't predict how the product teams will respond to it, I can tell you that they are listening.  When it comes to Microsoft and its interactions with open source, the company still has a lot of learning to do.  Hopefully, your feedback will help guide that learning.

At the end of the day, I hope the evolution of the 'ALT.NET' lifestyle will help drive the features of the tools Microsoft releases in the future.  At the same time, maybe Microsoft can learn the proper balance of building their own tools and working well with others'.  In the meantime (to borrow Laribee's words) I say to the community let's shake out the innovation!