A recurring theme that keeps cropping up in various forums of discussion is the question…
What is ALT.NET?
Heck, I even blogged a little about it back in September of 2008 when I experienced my first (not the first I’m sure, just my first) explosion of discussion about it on the ALT.NET Yahoo discussion group.
Personally, I’m torn trying to decide between whether a vigorous debate about the group’s identity, mission statement, values, etc. is a healthy recurring introspection exercise or a pointless waste of energy where everyone tries to apply one’s own expectations to a poorly-defined amorphous blob that continuously rebuffs all attempts at trying to shape it.
But having now sat through (and participated in) this discussion several times on the Yahoo discussion group and also on Twitter and in other mediums, I think I can safely try to catalog the various axes across which most of the different opinions seem to fall. In no particular order of importance, they seem to me to be…
AXIS 1: Introversion vs. Extroversion
The essence of this axis of opinion is about whether ALT.NET should be about like-minded software developers getting together and learning from each other or about trying to evangelize, proselytize, teach, share, train (or whatever verb you’d like to substitute here) other non-ALT.NET participants in the patterns, practices, technologies, beliefs, values , etc. (again, insert your noun of choice here) that recur within ALT.NET in order to grow the size of the group, movement, revolution, or whatever term suits you.
On one far end of this spectrum, you have people who say…
ALT.NET isn’t interested in reaching out to anyone; if people come by and see us then that’s great but if they don’t then that’s great too.
On the other end of the spectrum we have people who say…
The whole point of ALT.NET was to help spread the ALT.NET ‘goodness’ to others in a (slightly) more structured way than if individuals did the same without the ‘banner’ of ALT.NET in an effort to grow the size of ALT.NET and increase its reach, effectiveness, whatever.
AXIS 2: Change Microsoft vs. Coexist Peacefully
The core of this axis is about whether ALT.NET should be trying to use its influence, power, clout, size (insert your noun-of-choice here) to influence, cajole, beg, push (insert verb-of-choice-here) Microsoft to change its products, process, openness, methodology, tools, focus, emphasis, values, etc. (insert noun-of-choice again) to more closely match ALT.NET’s espoused principles, practices, etc. (your-noun-goes-here).
One the one hand this manifests itself in statements like…
We don’t need Microsoft to make MSTest so it’s feature-competitive with other .NET unit test frameworks. Who cares what Microsoft is offering — so long as my tools/technologies of choice can plug into their ecosystem and I can continue to use them, I’m good with that. Besides, introducing MSTest got all kinds of people who never considered unit testing at all to at least consider it and this increase in awareness of things like unit testing among .NET developers can only be a good thing for the ecosystem.
And on the other hand you get things along the lines of…
Entity Framework is an affront to everything we hold dear and its very existence is a threat to my way of life so we must do everything within our power (whatever that is!) to ensure that all Microsoft product offerings are exactly aligned with all ALT.NET principles and values at all times.
AXIS 3: Engage Microsoft vs. Attack It
This axis is a line between those on one end who believe that constructive change, impact, etc. can best be affected by engaging Microsoft in a positive, collaborative, conversational discussion and those on the other end who believe that Microsoft is evil, has ulterior motives, has only been seen to move when embarrassed, challenged by the justice department, etc. and it is only possible to affect change in Microsoft by shrill invective about everything it might do that ALT.NET feels isn’t in line with its own values, goals, principles, whatever.
In a sense this is the ‘affect change from within’ vs ‘affect change from without’ axis and either end of this axis is characterized by statements like…
You cannot punch at Microsoft from the outside-in, its just too damn big and shapeless a target and input from outside just bounces off!
Anyone who talks to Microsoft or participates in anything sponsored by Microsoft (or, god forbid, is an MVP) is a traitor to the ‘movement’, has sold their soul, been co-opted by fame and recognition for their work by Microsoft, and has immediately lost all credibility among ‘true ALT.NET believers’ (whomever that is!)
AXIS 4: Help the Noob vs. The Next Big Thing
This axis is somewhat similar to the first, but its also subtly different in my mind. This axis is about people on the one hand who aren’t interested in revisiting old issues because they are running full-tilt-boogie onto the next big thing. They don’t want to tolerate ‘interruptions’ from others who are at different stages in their progression through adoption of ALT.NET principles, practices, values, etc. vs. those who are willing to take the time to look back and remember that there was a point in their own career when SPROCS and datasets seemed like a great way to build complex business apps to them too.
On the one end of this axis you get things like…
What kind of idiot are you to ask about binding your Domain Model directly to your UI controls? We answered that question like 2 years ago! Where were you when we all discussed and resolved this way back then????? Writing VB4 apps???? Jeez, somebody get this guy off the damned mailing list, he’s clogging up my inbox with stupid questions and I have real work to do!
And on the other end of this axis you get statements like…
It looks like your problem might best be addressed by your adopting an IoC container in place of all those hard-coded factory methods in your code sample. For some details on different IoC containers’ features and functions, take a look at this blog post: http://….blah-blah and make sure that you read up on Dependency Injection patterns at this post: http://blah-blah-blah.
AXIS 5: Run, We’re Late! vs. Patience, changing the World Takes persistence!
This last axis of opinion runs from the gamut from one end where people evidence impatience with the pace of change (whatever that might be and however that might be measured) and the other end where people feel that there isn’t a deadline around ALT.NET’s goal attainment (even if there could be agreement on what those goals even were) and so its OK if things progress more slowly.
On the one hand you get…
After two years, ALT.NET should be holding 1000-person conferences and over 50% of .NET developers should be using O/RMs, working in Agile shops, doing TDD, BDD, <insert-your-own-letter-here>DD, or whatever by now. To have failed to achieve any of this in this timeline is an abject failure of ALT.NET and indicates that the whole promise of ALT.NET is irrevocably lost…its just a matter of time before everyone realizes it, folds up their tents, and goes home.
And on the other hand, you get…
After two years, its perfectly fine for ah ad-hoc group of developers with nothing in common for certain but identification with a name (ALT.NET) of a thing that cannot agree on its principles, values, goals, objectives, strengths, weaknesses, mission, purpose, or anything else to be slowly growing in impact, reach, size, strength, recognition, and other outward-facing success metrics. What’s the rush, dude, you got some place to be by 4pm or something?
Can you plot your position along a 5-axis graph?
If one were to more closely examine past discussions about this issue (‘what is ALT.NET?’) I’m sure that one could identify even more axes of forces along which we could plot the opinions of all participants, but these are the several that stick out in my mind as recurring themes. In the end I think its fair to say that very few people are always (or even ever!) all the way at one extreme or the other of these axes. I know where I fall along them and if you consider yourself closely aligned with ALT.NET then you can probably imagine where you fall along them too.
But the thing that I find to be both maddeningly frustrating and at the same time incredibly empowering about ALT.NET is that no matter where you fall along any of these axes, you can quite legitimately identify yourself with ALT.NET!
‘A House Divided Against Itself Cannot Stand!’
But its a truism of group dynamics that a group with NO identifying characteristics in common cannot really claim to be a group at all and certainly cannot remain cohesive (even to the extremely low level of cohesion that ALT.NET currently evidences almost despite itself).
So I know where *I* stand along each one of those ALT.NET axes and the best thing that I can do about it is to gather together, collaborate with, reinforce the efforts of, and otherwise support others who lie at least in close proximity to my position on each of these ALT.NET opinion axes.
For those of you who know me well, there shouldn’t be much doubt about where I stand along each of these axes of opposing forces and opinions. I invite like-minded individuals (note that I didn’t say people who 100% agree with me but just people near me on these axes!) to come stand with me and define by your actions, your beliefs, and your goals at least a part of ALT.NET that we can all work hard to ensure more closely looks like the place along these axes that we strongly believe in.
And to those who don’t occupy a similar position to me along these multiple axes, I say that ALT.NET is still big enough for all of us and I can respect your opinions and values in the same way that I would really prefer that you respect mine. There’s room in this tent for all of us but it rather seems to me that an essential tenet of any (successful) group is going to have to be mutual respect and that needs to extend to people with whom you might find yourself disagreeing on a regular basis.
And with luck, this will be the last I have to say on the question of ‘what is ALT.NET?’