Rage, rage against the dying of the light
The lack of visibility for the idea of "Alt.Net" of late has led me to ask myself the question whither Alt.Net. Or perhaps is alt.net withering? A couple of years ago the alt.net meme had real traction in blogs and events. It had become a cri de coeur for the disaffected members of the .NET community. For many who felt there was a 'better' way, that solid principles and practices that alleviate the pain of some software developers ills were available if you looked up and far enough around, the knowledge that like-minded people were out there gave a sense of strength and purpose. We were not alone in the dark, others like us were out there. At the first altnetconf we ran in the UK, inspired by those in the US, what was overwhelming was the feeling of 'community' between like-minded people who suddenly found others they could communicate with about the ideas that burnt so very brightly within them.
At the time there were warnings and criticisms of the new community. Some reasoned it would become an 'echo chamber'. Other critics suggested that it could be ignored as those involved would just burn out leaving only silence.
Today as I ponder the state we are in I wonder if the critics have not triumphed in there soothsaying over the enthusiasm that once fired our souls. Blogs wane in fire and passion. We seem tired from the fight.
I for one say "Do not go gently into that good night, rage, rage against the dying of the light".
What is in a name?
First I want to step aside from the question about name. David Laribee's original manifesto set out the stall of ideas clearly whatever you want to call it.I think that all these remain true, but perhaps the heart of the movement for me is that "You’re not content with the status quo. Things can always be better
expressed, more elegant and simple, more mutable, higher quality, etc."
Call it what you will. The point is not the name, but the passion for better software development. Objecting to the tag should not blind you to agreement on the ideals. I accept people might not like some of the baggage associated with alt.net. But let's move on and accept that we all agree on the need for a movement that expresses the desire to be ill-content with the status quo, to rebel against the orthodoxy, to rage against the machine.
"There's a time
when the operation of the machine becomes so odious, makes you so sick
at heart, that you can't take part, you can't even passively take part,
and you've got to put your bodies on the gears and upon the wheels,
upon the levers, upon all the apparatus, and you've got to make it
stop! And you've got to indicate to the people who run it, to the
people who own it, that unless you're free, the machine will be
prevented from working at all!" - Mario Savio
Is the movement needed any more, and should we just declare victory and bring the troops home?
Scott Bellware recently bemoaned on Twitter that .NET developers doing
web development should be using MVC and not webforms. He pointed out
that attempts to pander to some developers by suggesting that WebForms
and ASP.Net MVC were separate but equal were disingenuous "As more good
web devs move to MVC, the WebForms camp looks ever more like
paint-by-numbers web development. The shifting demographics of web
development in .Net should be a clarion call for everyone to go back
into learning mode. The paint-by-numbers crowd is feeling the heat of
all the learning that Microsoft told them they didn't have to pay
attention to. The amazing thing: rather that pour on the learning,
ungodly efforts are being spent on perpetuating uninformed
justifications. Dumb. No. Squarely. Definitively. ASP MVC and WebForms
are not equals. Here, I'll say it: better web developers use MVC. The
ultimate destructive force in .Net development: Microsoft convincing
developers not to worry about deepening their skills".
This is not academic. I regularly meet people through London .NET user group that tell me this or that senior developer has blocked use of ASP.NET MVC at this or that company because it would require learning something new. People are still struggling with this issue at development shops all around us. The 'senior' developer invested in maintaing his position through better knowledge of a framework or tool over transferrable skills like patterns & practices shuts down introduction of new technologies by junior developers out of fear that it might level the playing field and bring their authority into question. I hear from junior developers that entrenched senior developers unwilling to learn try to kill attempts to adopt TDD/BDD because they
do not understand and worry it will undermine their authority. Further
hint, your authority has already been undermined with those junior
developers who have long ago worked out that your fear and ignorance is
keeping you from implementing. They already understand that it is not genuine judgment that it is not
needed in a given circumstance or you have adopted and alternative like
Design By Contract.
I still hear people suggest that TDD is too expensive, and yet complain that developers are not producing quality code and they have too much re-work. Hint the cost of re-work is greater than the cost of doing TDD to prevent re-work (or the cost of manual testing to prevent defects exceeds the cost of TDD by a large margin). I still hear people object to story tests but complain about developers building software that does not match customer expectation. HInt, the cost of adopting a BDD approach to building the right thing is less than the cost of re-work from incorrectly fulfilled requirements.
People talk about having adopted agile at an organization but are often practicing cargo-cult agile, scrumerfall or waterscrum or worse agile as no-process at all.
We have by no means won this struggle. It is still being played out every day, despite the fact that the solutions may seem obvious to us.In some ways we have only reached the point of witnessing the creation of evasions, half-truths,and lies as to why such practices are inappropriate to an organization or covering up incorrect adoption.
Alt.Net was always about challenging these 'comfortable lies'. As a community we cannot become content to live with
the 'comfortable lies'.
Sometimes effecting change can seem like a war. There are a lot of
people who have established comfortable positions for themselves as
prophets of a technology and do not want that comfortable home
disrupted. Unfortunately we cannot accept the lure of that comfortable
position without our skills eroding and failing to keep pace with the
wider industry. This necessitates conflict between the prohets of the
new and the saints of the old: "The tree of liberty must from time to time be refreshed with the blood of patriots and tyrants. It is its natural manure." If you have not engaged with ASP.NET MVC you need to be, now. If you have you need to be exploring the new alternatives to understand their implicit criticism.
I don't think we can declare victory in any sense. We may be tired of
the casualties, but walking away from the fight right now just lets the
other side know that they can outwait us. Someone told me a story recently of an IT department that went agile and became extremely productive. But when the thought leadership behind the change, the nay-sayers moved in to crush the agile practices and return to their old safe comfortable world. There is a group that reckons it can outlast the adherents of change and return to mediocrity when those agents tire or move on. You just can't quit the fight if you don't want that to happen.
Did the movement simply become the new orthodoxy
One criticism raised against alt.net is that it would simply become
the new orthodoxy. It could be suggested that the decline inalt.net activity is because people have simply become comfortable with a new set of orthodoxies: Scrum, TDD, NHibernate etc, that they will not challenge.
However, nothing stands still. The orthodoxies of Agile development Scrum, XP, and Crystal amongst others, are being challenged. Kanban grows rapidly as an alternative to agile storyboards sometimes provoking debate. The notion that we ahve adopted Scrum or XP and can rest on our laurels is to fall into the trap.
Many find
limitations with
ASP.NET MVC's implementation, which has led to projects like FubuMVC and OpenRasta let alone MonoRail.
Source control seems to be leaving behind the centralized model of CVS and SVN for the distributed model from GiT.
Many of the people involved in championing these alternatives, championed thier predecessors. So I don't think the movement is doomed to become the new orthodoxy provided it continues to embrace investigating and adopting these alternatives as they emerge. The goal is to do the best we can, and what is 'best' will keep changing. Sure alt.net might pause for a period, absorbing one revolution before seeing its shortcomings and starting another, but I don't believe the community incapable of moving forward, mired in some new orthodoxy.
Did we scratch the itch of 'people like us' and just move on to Twitter?
There is a danger that the biggest need we had was to feel less alone, and once we found people who thought like us moved into an echo chamber where we could moan about everyone else. In some ways Twitter is the ultimate example of this echo chamber. We can follow like minded people and hold conversations with them, ignoring everyone else.
I like Twitter, please don't get me wrong. It has enabled the kind of informal social activity for altnetuk and the London .NET user group that I found difficult to support through mailing lists. But a lot of the discussion around practices, tools, ideas seems to have moved there. Twitter has become a great radar for seeing what folks think is important and interesting out there that merits further research. However, I think there is a danger for the community here for two reasons.
First Twitter is a passable medium for conversation, but not a good vehicle for a comprehensive discussion of ideas. The length of tweets is too limiting, the ability to construct argument too limited. I am as bad as anyone for having spread a reply or opinion across a half-dozen tweets. But we should recognize that Twitter is ineffective at explaining complex ideas. It's great that snapshot comments have somewhere to go and don't crowd the blogosphere, but we need to continue to blog or write articles about the ideas for clarity.
Second Twitter relies much more on you knowing about the person with the key ideas and following them. Blogs are easier to find by searching, or by following links. They have far more discoverability. The rise of blogs represented a phenomenal democratization of software development knowledge. Previously such knowledge had often been hoarded by cliques as an exploitable resource through books, training, or consultancy. Blogs shared knowledge in a way that meant best practice ideas were widely available. The danger is a drift back to cliques as bloggers, tired of criticism, return to narrow cliques to disseminate knowledge and practice. Ultimately this becomes self-defeating and prevents wider acceptance of standards and practices.
The danger of Twitter becoming an echo chamber is far greater than the danger of blogs becoming such. So I believe alt.net needs to continue to blog to reach out beyond the echo chamber. But more than this, alt.net represents confort and support to other people making the journey. All those developers looking for someone to say 'I believe in being the best developer that I can' too'. That moral support can mean a lot to people struggling with obstinate colleagues and managers. It can mean a lot to point to a group and say "but I'm not the only one that thinks this way".
Was struggle replaced with co-operation
We might be hopeful and consider that it is possible we moved from opposition and rebellion to cooperation and inclusion. Did we achieve its goals and simply become incorporated in the mainstream. Is the rise of ASP.NET MVC, MSTest, POCO options for EF just a sign that the movement has been incorporated in the mainstream? Whilst I think engagement is positive, after all it is the only way to succeed and driving change, I don't think that engagment means there is no need fo alt.net any more, because I think the movement was about more than just a few "poster-child" issues. I also don't think it is about rebellion against co-operation with MS or anyone else. I think it is about driving forward the quality of our own practice.
Software Craftsmanship
Many of the ideals of Alt.NET seem to be shared with the Software Craftsmanship movement. In some ways Software Craftsmanship seems to be the generic form of the alt.net movement. For me key texts in Software Craftsmanship are those like The Pragmatic
Programmer, Software Craftsmanship the New Imperative, Clean Code, Agile Principles, Patterns and Practices in C#, Test Driven Development By Example to name just a few. Indeed the XP
movement could be seen as a call to craftsmanship.
I talked about the asset of looking back to craftsmanship for models when talking about master builders instead of architects back at the beginning of 2008. One quote from Goldthwaite is worth repeating
"a mason could operate as an architect only if he became head of a
works staff. ...he had to prove himself also as an administrator and
supervisor who could be responsible for procuring materials and
equipment, hiring and supervising workers, and, in general, directing
all the technical operations of the construction enterprise".
This idea that a journeyman becomes a master by understanding the
whole enterprise is particularly appealing as an ideal. You cannot just
focus on code, you need to understand the whole enterprise of
construction.
I think that the manifesto is something that many who consider themselves alt.net would agree with. It is also an indication that the passion to improve on a community's existing practices does not reflect unique problems in the .NET community but is parter of a wider agenda in the software development community to improve the standards of our industry.
I'm not proposing dropping the alt.net moniker in favor or Software Craftsmanship. The Software Craftsmanship movement has specific goals and practices which align with alt.net, but it is not alt.net. What I am suggesting is that the alt.net movement intersect with broader movements like software crafstmanship. I think that engagement with broad movements like Software Craftsmanship would help many of us to broaden our horizons to the initiatives within the wider software community to improvement. Attending dojos or katas for different languages would help us all. I don't think alt.net engagement needs to be replaced by Software Craftsmanship engagment, I think membership of both communities should not be orthogonal or exclusive in our minds at all.
Wither ALt.NET?
So I don't think Alt.Net needs wither or be replaced by something else. I think its spirit ou’re not content with the status quo. Things can always be better
expressed, more elegant and simple, more mutable, higher quality, etc." remains alive. I think the value in a community that supports those who practice that within the .NET community remains, even if needs to re-invent its passions on a regular basis.
Posted
Tue, Jan 19 2010 1:00 PM
by
Ian Cooper