“My dream is that the next evolutionary leap in software development, on the magnitude of continuous integration, comes from the .NET world.” John Kordyback – Alt.NET Leadership Summit 2007. This is a huge challenge that he laid out at the summit meeting this past weekend.
I’m actually sitting on the plane on the way home from this same Alt.NET Leadership Summit and collecting my thoughts. I’ll be honest and say that it was a very interesting ride throughout the day. I came in with very few real expectations as to what was going to happen or what was going to be talked about. I knew that one of the core missions of the weekend was to decide on how much “leadership” this movement needed. Secondarily, and part of the reason I was there, everyone wanted to figure out how Microsoft can be involved or if it should be. Lastly, there’s been a lot of criticism lately around a negative vibe that some people are getting out of Alt.NET.
Who was there:
I came on the invitation of David Laribee. I know that the other guys that were invited from Microsoft were guys like Scott Guthrie, Scott Hanselman, Peter Provost and John Lam. I’m honored to be included on that fantastic short list.
I already knew David, Scott Bellware, Ray Lewallen, Don (XML) Demsak and Rod Paddock (Who didn’t make it). I also knew Peter Laudati (Developer Evangelist out of NY) and Dani Diaz (Developer Evangelist out of Philly). I had met Martin Fowler once or twice but we had never really had a chance to sit down and talk.
I didn’t know but got to meet Mike Roberts (who created CruiseControl.NET), Brian Donahue (who’s starting the first Alt.NET User Group in Philadelphia), John Kordyback (Currently working for Thoughtworks and one of the key guys for the relationship between Thoughtworks and Microsoft), Luke Melia (Who is actually going to work at a new startup on a completely Ruby on Rails application), Wendy Friedlander (token female – :), frequent speaker and Agile pairing expert), Jeremy Miller and Stephen “Doc” List (Open spaces facilitator and dubiously Scott Bellware‘s boss). I also didn’t know the other Microsoft guy, Glenn Block (Working currently on the Smart Client Software Factory for Patterns and Practices). It was amazing to be sitting in the room with all of that brain power.
Summary thoughts on Alt.NET
The first thing that I need to put out there is my thoughts on what Alt.NET is. David Laribee wrote the original 4 points. Martin Fowler said it really well when he said that “Alt.NET is about strengthening the .NET Ecosystem and therefore the .NET platform”.
Alt.NET, to sum of the discussion this weekend in a gross and barbaric way, is about Alternatives In .NET not Alternatives To .NET.
What it’s not:
Alt.NET is not anti-Microsoft. The whole crew, by and large, was very pro-Microsoft and supportive of .NET and Windows. Not necessarily Vista, but Windows in general.
Alt.NET is not about a particular toolset even though it happens that many of the members use the same exact toolset. It’s a philosophy grounded in many of the things that Agile community embrace. The tools that they choose are tools that either really help them follow that philosophy or at a minimum don’t get in the way.
Alt.NET is not a group. It’s a movement of which there are many members in many different circumstances.
What is is:
First and foremost, it’s about raising the bar in development shops in the .NET world. That’s desperately needed. There’s a lack of knowledge of how to and/or desire to build truly great software by the majority of developers in the world. I’m not the first person to say this nor will I be the last. Jeff Atwood recently posted about the “80/20” rule where 80% of developers are 9-5 clock punchers and the other 20% are trying to better themselves through many different educational means, like reading blogs, magazines, books, attending conferences, training classes and so on. But across the board there is a lack of knowledge of the fundamentals. Recently I was talking to a developer who had deep knowledge about specific technologies but it started to become apparent that they lacked the fundamentals like Object Oriented (OO) programming. This is one of the points that I think that I brought to the table this weekend that resonated with people. Many of the Alt.NET guys are concerned about teaching Agile, TDD, Object Relational Mappers such as NHibernate and so on but we really need to start even more basic than that and make sure that there’s a true grounding in the fundamentals before the rest of it matters.
Second, the way to raise the bar in development shops is to raise the capabilities/skill/knowledge of the developer through a grounding in Agile practices such as TDD and best practices such as continuous integration. This is counter to adding slicker tools that drag and drop and perform magic that not all users understand and nobody can automatically test.
So back to this weekend’s summit.
One of the key take-aways for me was the crew that was present are really the passionate about getting this movement off the ground and jump started more than they are being dictatorial leaders. It’s great that the everyone there got that. This movement is larger than they are it’s it’s larger than the sum of the parts. There was discussion in the first session that I sat in on about the fact that this person or that person was “on the sidelines” and so they shouldn’t be allowed to talk about Alt.NET because they weren’t in the “club”. This was very quickly quashed by a 8-1 margin (9 people in the room) voted by everyone virtually dog piling on the 1 and consensus was reached. It’s far more important that people are starting conversations around the philosophies that Alt.NET hold near and dear than it is to be involved in the group. It was also discussed that it’s important to get that right and that you shouldn’t be talking about XYZ topic unless you really and completely get it. Mock objects were one of the examples of this – unless you truly understand mock objects, you shouldn’t talk about it. I personally disagree a little bit on this. I think it’s more important that people are starting to have those conversations than it is that they get it right first shot out the ga
te. The more people that are aware of it and are attempting to leverage the tools the more likely we as an industry are to get it right. For example, I’ll be honest and say that I’ve not done a lot of pure agile development and I’ve never done a production system with a pure TDD approach. However, I’ve had an epiphany when I finally caught on that it’s not about the tests. It’s about designing the code. Once I got that the lights came on and I became a believer. The tests are important, but they are almost a side effect of going through the process of designing your code right. This does form a great body of executable documentation that can serve as a safety net to you and the developers around you. This is fantastic and I think I should be able to speak about it. And the more I speak about it, the more awareness I’m raising and the more likely a given shop is to try it. Now, that being said – I always toss out the appropriate caveats that I’m not the expert. I’m just a guy who things this is right and wants to get that discussion off the ground. Hopefully through that process, we can all grow and learn and in so doing continually evolve our expertise as a whole.
We also talked quite a bit about the negative vibes that have been the focus of a lot of the of the discussions lately. “Crank.NET” and so. For this discussion, it was invaluable to have Martin Fowler and his experience with the Agile movement at the meeting. He talked about how there were a lot of the same issues in the early days leading up to and shortly following the creation and signing of the Agile Manifesto. In short, there were several of the core guys that were particularly avid about the rigidly of principles of the movement and were not overly diplomatic in their delivery of said message. This is what the Alt.NET movement is going through right now. Many of the solutions to the problem were fairly lo-tech, like getting peer reviews on content that’s going to be publicly consumed. He actually talked quite extensively about the fact that on discussion lists, mailing lists and so on that you should always realize that the person you are writing the note to is only a small percentage of the actual audience so context, you have to choose your words well for the wider audience.
Lastly we talked a lot about how Microsoft can help. The interesting part is that early on the discussions it seemed that it was very much an us verses them discussion. As the day moved along, it became clearer and clearer to everyone present that it was in both Microsoft and the movements best interest for Alt.NET and Microsoft to work together in this. If we jointly focus on challenging and strengthening the eco-system within the .NET community to raise it’s bar to the level of the bar in the Ruby community, for example, everybody wins.
In the last session, we went around the room and talked about what we had gotten out of the meeting and what we were taking forward. The same themes were resounding from everyone around the room. And there was a bullet list of goals to pursue over the next year or so. The most contentious of the goals is to put together a manifesto. Like a lot of people, I didn’t get the real reasoning behind it until Martin Fowler said that the reason was to keep anyone, especially vendors, from taking the term and morphing it to fit their individual needs/desires. The movement as a whole is larger than a single person/group.
I second John Kordyback – I too want the next evolution in software development to come from .NET. Alt.NET is attempting to raise the bar high enough that this becomes reality.