Archive for the ‘ALT.NET’ Category

Thus the backlash begins. Colin Ramsay writes:

…the ALT.NET mob organise an enormous desert circle-jerk, and I call bullshit. If they really wanted to change things then they should be writing about their techniques in detail, coming up with introductory guides to DDD, TDD, mocking, creating screencasts, or giving talks at mainstream conferences, or producing tools to make the level of entry to these technologies lower than it is.

Ayende has a response, which is so concise I can’t add anything more.

Reading Colin’s post makes me think there’s two problems at work here.

First, I think way too much time, effort and discussion has been wasted on a simple moniker. It’s not the name that matters, it’s what’s behind it that counts. One of the topics that received a lot of attention this past weekend at ALT.NET was, “What is ALT.NET?” and how to define what it is. Various people (Dave Laribee, Raymond Lewallen ) have blogged about what ALT.NET means. And yet still some folks keep attempting to redefine it as some elitist movement, or anti-Microsoft sentiment.

It is none of those things, and if you can’t see past that then you’ve turned off your ability to use logic and reason.

The truth about ALT.NET is actually a lot more simple than anyone has said. You want a concise definition? Here’s mine:

ALT.NET is a group of developers trying to find the best tools and practices available to help them build software in the Microsoft/.NET domain and bring business value to their customers.

That’s it. That’s all there is to it. It’s not any more complicated than that. It’s not about Morts and Einsteins, it’s not about tools and paradigms. It’s simply about developers trying to discover the best ways to get the job done. If you are a developer who has a pain point and says, “I think there’s a better way to do this and I’m going to figure out what that is, whether it’s a tool or technique,” then you’re ALT.NET.

During the conference a whiteboard was devoted to renaming ALT.NET so that the name reflects the ideals more accurately. Someone suggested Pragmatic.NET, and I hope that’s the one that sticks, because it’s the best single word summary of what this was all about.

The second problem at work in Colin’s post is that for whatever reason he (and others) thinks this is an elitist thing. He writes:

…I find it pointless that you’d go to a conference to discuss the stuff that everyone there already knows. DDD, BDD, MVC – these aren’t things that will be unknown to people attending the ALT.NET conference.

During the closing comments of the conference everyone (and I mean everyone) got a chance to talk for a moment about anything that they liked/disliked about the conference. Many people voiced the same concern Colin had and were wary when they arrived that this would be nothing more than a bunch of people agreeing with each other. Those same people then went on to say how pleased they were that it did not happen that way.

ALT.NET saw a wide variety of developers with a wide variety of skill sets. It was not developers preaching to the choir. It was a very healthy exchange of ideas, and a lot of very spirited debate. Part of the reason for that is because ALT.NET is not about one “class” of developers getting together – it was about a group of developers with the same “mindset” getting together (namely the desire to use the best tools and practices to deliver business value). Because it is the mindset that is important, class becomes irrelevant.

What was interesting to experience at the conference – what was interesting to learn – was that it’s not the techniques and tools that everyone was in agreement on. It was something else: it was the pain points. One of the most amazing things that we all discovered at the conference was that we’re all experiencing the same problems in the domain of .NET development. But the solutions are not universal – not everyone is in agreement about the best tools and techniques, in large part because everyone’s needs and situations are different.

I wish Colin, and other developers like him, could have been there. And hopefully next time we can have the conference in a bigger space that will accommodate more people.

Because ALT.NET was not divisive. What it was is limited by physical space. That’s unfortunate, but a reality.

Can the community of ALT.NET do more to spread the word on the tools, techniques and ideas? You bet! And I think everyone wants to do more. One of the themes of the conference was the idea that we have to take these things out to other conferences and user groups and spread this stuff around. We have to get the rest of the .NET community involved. We have to find the developers who want to do things better for their customers and get them involved.

Colin asks:

But wouldn’t that conversation have been a whole lot more interesting if the second developer hadn’t heard of those ideas?

You bet! But this all has to start somewhere, doesn’t it? That’s what this conference was – it was the starting point. But what we can’t do now is get mired in a bloodbath of words. That won’t help these ideas grow.

Some quick background: The Boo Build Server (Boobs) has really picked up steam at this conference in terms of joke productivity.

While chatting with Jay Flowers tonight at the sports bar, a young, blonde hottie waitress walked by. Jay turns to me and asks, “Did you get a look at that build server?”

Scott Guthrie gave a presentation today about Microsoft’s new MVC framework for ASP.NET. Jefferey Palermo has the technical lowdown here, and Roy Osherove gives his reaction, mostly from the standpoint of TDD. It’s a great reaction, though, and I think he speaks for a lot of people here at the conference when he says, “finally they get it.”

The “it” he’s referring to is a lot of things: the community around .NET, specifically the open source community, the tools, and the idea that there are a lot of developers who are building pieces of functionality that fit into the .NET puzzle. But Microsoft has had an an unfortunate history of not working in concert with this community, and choosing to do their own thing instead.

Scott’s presentation today was awesome, not just from a technical standpoint (the MVC framework is very cool, however), but also from a philosophical standpoint. While Scott was explaining the features of the framework (which got a lot of people excited all by itself) the really exciting bits were the things that pointed to a mind shift within Microsoft: the fact that all methods were virtual, for instance, thus easing testability. Or the fact that it was pluggable, so you could use whatever dependency injection choice you wanted.

These features and design choices represent a huge paradigm shift for Microsoft. They say to the open source .NET community: “We recognize your contributions, and we’re not going to try and reinvent what you’ve done. Instead, we’re going to make it pluggable, so you can use whatever technology you favor.”

The importance of that philosophy and that mindset change cannot be understated. As Jay Flowers said tonight when I was chatting with him, it sends a message to open source developers that “there is a space for you.” It plays directly into the ALT.NET philosophy, which is: “We’re going to use whatever tools we think are best to get the job done.” Scott’s presentation couldn’t have been more appropriate or well received at any other conference.

The exciting part of all of this, at least to me, is the idea that this could be just the tip of the iceberg. There’s hope now for the future. Scott Guthrie can’t be the only developer at Microsoft who thinks this way and has the influence to navigate Microsoft into this Brave New World.

As I told Jay tonight: This is an exciting time to be a .NET developer.

A year ago I attended the Patterns & Practices Summit in Redmond, WA. It was a pretty typical conference: keynote speakers, 450+ attendees, bad lunches. But one of the really cool things that happened during the conference was getting to chat with Brad Wilson in the hallway along with about ten other folks on subjects like CAB, MVP/MVC, unit testing and how to map data for display purposes.

The hallway conversations were great; the best part of the conference. And now I’m at ALT.NET, where the entire conference is one big hallway conversation. It is a really cool way to hold a conference.

The Open Spaces format is quite different from a typical conference. Instead of planned speakers, the attendees get together and determine the content and then they gather together in various conference rooms and have those “hallway conversations”. It’s incredibly cool – very organic and free flowing – the conversations can cover a lot of ground in a short amount of time and tend to bleed over into other areas. For instance, I ended up in a really cool impromptu session with Scott Guthrie discussing language features of .NET 3.0 (and some stuff that is somewhat unknown in .NET 2.0). It was a great session.

The great part about this format is that novices in an area can ask questions and experts can answer. There’s not one authority on anything trying to preach a single viewpoint, but instead a collection of people with varying degrees of expertise sharing ideas. Everyone learns, everyone benefits. It’s one of the best environments I’ve ever been in.

Starstuck

I’ve been starstruck with the sheer amount of talent and knowledge that is here. As I overheard at one table, if a bomb went off in Austin, a whole lot of great .NET minds would be lost. Some of the people in attendance: Scott Hansleman, Jeremy Miller, Scott Bellware, Scott Guthrie, Peter Provost, Brad Wilson, Jean-Paul Boodhoo and Martin Fowler. Yes, even Martin Freaking Fowler showed up! It has been great to meet many of the people whose blogs I read. What’s really cool: everyone here has passion for development, and no one is afraid to speak their mind. It’s infectious being around this many people who have a real desire to find the best tools and practices for .NET development, and then to bring those discoveries to the rest of the .NET development world.

It’s just the beginning… More to come.

Ayende poses the question: How do you sell maintainability? Evan adds his $.02 to the discussion.

I’m going to open by saying you don’t sell maintainability. Selling is about getting people to buy what they already want, and Stakeholders don’t want maintainability. What they want is a finished product. And therein lies the rub.

Stakeholders don’t understand maintainability because to them, software is like buying a car. They expect a finished product. They expect a finite amount of work and a finished good. But that sort of mentality doesn’t mesh with the reality of software development.

It is unfortunate that software came into the industrial age so late in the game. People have been conditioned to expect a finished product. But software is soft: it can be changed, updated, improved and fixed. Unlike a child car seat, for instance, which has to be recalled when a flaw is discovered, a software program can be patched with code that fixes the problem. Unlike a Barcalounger, which cannot be upgraded with cup holders, a software program can be improved with new features without you having to replace the old version.

Software that is worth keeping and using is worth maintaining. But how do you convince a stakeholder to invest in maintainability? I don’t think you do. I think you have to start somewhere else. You have to start with something they already want.

Stakeholders want software that does exactly what they wish of it. They also want software that can adapt to changing requirements. These are things that you can sell. Maintainability then becomes a requirement to make the other things reality; it becomes something you don’t have to sell.

To get them sold on the things they already want, I think the first thing you have to do is convince them to invest in the concept of software as a living entity, like a garden. You have to engage them in a paradigm shift. You have to get them to understand that software that does what they want will never be “finished”; it will continue to grow and mature; it will never be “done”. Sure, it will have an initial period of development that looks an awful lot like landscape construction, but that is just one phase of a much longer lifespan; a lifespan that can go on for as long as the software is deemed useful.

Software has the advantage of being soft. This becomes part of the selling strategy. If the stakeholder wants the software to (a) do what they wish and (b) be adaptable to changes, then the malleability of software becomes a key feature. It is this malleability that you must use to force the paradigm shift; to get them to understand that software is not like building a bridge, or skyscraper, or car. Software is not like purchasing a yacht, it is like growing (and maintaining) a beautiful garden.

Once the stakeholders understand that software development is not finite, but a long term commitment, then they will understand what it takes to make it successful: people. People are necessary to grow the garden, and people are necessary to maintain it. And that is when you can enforce maintainability. Because by then you should have sold them on the things they already wanted. Maintainability then becomes a requirement, not an option. And you don’t have to sell requirements; those things are mandatory.

As for .NET and RAD-like tools: I don’t think stakeholders can understand or appreciate the differences until the paradigm shift happens. Until they see software as a living entity that requires maintenance, they will never appreciate the difference between maintainable code and flashy RAD prototypes. As long as software is like buying a car to them, then the RAD applications will continue to impress. So from my point of view, this is about educating the stakeholders.