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!
> 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.
That's NOT at all what we are saying.
@ Sam – My suggestion that ‘alphas’ need to get over themselves may have been a bit over the top. :) You’re right. I don’t think anyone is outright complaining about the people. The comments are directed at Microsoft. However, when I read something like:
>"There's a growing sense that Microsoft's vision is armies of Morts in command-and-control organizations. There often seems to be outright discouragement of tools to enable talented enterprise developers, or of agile development processes."
I can’t help but think it goes along with the theme of what I said on some level. However, I do realize that Martin’s commentary was directed at Microsoft itself, not actual developers.
My point with the post is that I acknowledge that Microsoft’s tools cater to novices. But novices make up a much greater percentage of the user base. In defense of Microsoft, I think it’s to be expected that the tools cater to those folks.
However, that being said, my interpretation of the community’s feedback is that Microsoft ought to incorporate agile functionality into its tools (or learn to work well alongside of the community tools) so that it benefits all of the users, including the novices. And I agree with that too. I’m just saying it’s going to take time and feedback to steer the ship. And for that feedback, I say thanks to you and the others in the community!
I like Martin Fowler. As a veritable lighthouse of the patterns and agile communities, he's both a resource
I like (respect) Martin Fowler as well, but... There isn't a Fowler, a Hanselman, a Gunderloy, or a Gentile that is going to convince me that there is a "better place" than where I am today.
.NET, including and especially ASP.NET, have been and will continue to be my platform of choice, most likely until MS moves on.
I don't use wizards. I don't even use the designers in most cases. I'm a code/framework kind of guy. And yes I use MBunit, TestDriven.NET, and other "ALT.NET" things every day. But those are complimentary to my main tool: Visual Studio.NET.
I've said it before, and I'll say it again - the worst part of .NET is Visual Studio. But it's getting better.
I may not be an alpha-geek, but I am an alpha-dad. And I build great software that my employer and clients love. And I do it with MS technology, and it pays the bills quite nicely.
I've seen Ruby. I've seen Ruby on Rails. I'm honestly not all that impressed. My sole reason for supporting IronRuby is that it helps strengthen the work going on with the DLR.
As far as novices go, I don't think Microsoft caters to them -- there are technologies in .NET that are definitely *not* for the weak at heart, and which provide substantial power. But frankly, I did my time with hard code, and have been working in arguably harder code. What I want is stuff to make my hard problems much easier to solve -- and that's what Microsoft's been producing.
I'd be happy if the Open Sores fascists would get over the delusion that just because some guy wrote some unittest framework, or some persistence engine, or some scripting library, that it *must* be embraced by Microsoft. What's there to lose aside from an ego?
The discussion over whether Microsoft "gets" agile development in the Microsoft community has carried
> I don't use wizards. I don't even use the designers in most cases. I'm a code/framework kind of guy. And yes I use MBunit, TestDriven.NET, and other "ALT.NET" things every day. But those are complimentary to my main tool: Visual Studio.NET.
Then we are in perfect alignment. I am talking about the people that use wizards exculsively and have no idea of the code thety produce, that write that is neither tested or maitainable and who drag together an app with no thought. You have not a single thing to change. I also use Visual Studio every day plus all the tools you list. That is NOT a Mort, unlike what Nick Mallik wrote in his last post which totally shows he doesn't understand