What are the Alt.Net principles? – my answer

I’ll be attending the AltNetConf.  Convenient for me that it’s in Austin, TX.  It’s an open space conference, and I consider it the founding conference of a conversation that is “Alt.Net”.  I’ll be proposing the topic: What are the Alt.Net principles?.

The definition of Alt.Net isn’t defined yet.  It’s not even at a point where I can explain what it is and actually have other agree with me.  

Since I know the guy who originally coined the term, I have some insight into what David meant, but I’m going to propose some principles that, together, should be the definition of Alt.Net.

First, Alt.Net inherits Agile, and IS Agile.  Therefore:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan 

Extended principles:

  • Excellence and quality
    In a world of wizard-generated, disposable software (disposed 2 years later by necessity, not choice), Alt.Net focuses us on excellence in the software we create.  While the world may pay for and accept software that lives for 2 years before becoming utterly unmaintainable, we don’t accept shoddy work.  We know that we can deliver high quality software faster than others can deliver low quality software, so we accept no less than the highest in quality.  We strive for excellence through solid engineering practices and a high level of software education.  Coincidentally, Extreme Programming helps in this area, but Alt.Net does not specifically _mean_ XP.
  • Alternative Vendors
    A  common theme in many .Net shops is they are “Microsoft” shops.  In other words, if it doesn’t come from Microsoft, they won’t use it.  This makes no sense.  Microsoft is not a large enough company to be the vendor to the whole world.  .Net is a great platform, and we as a community have chosen the platform and choose to participate in this segment of the industry.  We strongly believe that 3rd party vendors complement the .Net platform in a way that can contribute to excellent working software.  In fact, some 3rd party offerings are superior to Microsoft’s offering.  For instance, in a strive for excellence in an e-commerce website, a team may choose a mature O/R Mapper like NHibernate to accelerate team speed and produce a flexible data layer; however, Alt.Net does not _mean_ ORM.  Open source software is a source of excellent 3rd party alternatives built on the .Net platform, and it should be used over Microsoft alternatives when they contribute to excellence; however, Alt.Net does not _mean_ open source.
  • Joy in our work
    We know that we will produce better software if a team is motivated and morale is high; therefore, we use libraries, tools, and practices that add joy to the working environment.  We abandon or correct libraries, tools, and practices that make it a drag to work on the software.  For instance, many find that Visual Studio is a bit slow to work with and that adding Resharper to the IDE adds a high level of joy while working with .Net code; however, Alt.Net does not _mean_ Resharper.
  • Knowledge
    We know that we will never know everything there is to know.  We strive for a greater understanding of software through studying successes and failures of the past as well as the present.  We educate ourselves through many sources in order to bring the most value to our clients.  We keep up with other platforms, such as Java and Ruby, so that we can apply their good ideas to .Net development and increase the quality of our .Net software.  The technology is always changing, but the knowledge accumulates.  We know that the knowledge applies no matter how the technology changes.  With knowledge comes humility because without humility, knowledge would pass us by.

The above are principles, so they are intentionally abstract.  Below, I’ll list some items that are concrete.  These items apply the principles but are more directly applicable:

  • Read more than just MSDN magazine and MS Press.  Authors like Feathers, Fowler, Martin, Evans, etc have a lot to give (Knowledge)
  • Use Resharper.  It makes working with Visual Studio a (Joy).  But if another vendor comes along that does even better than JetBrains, consider switching
  • Use NUnit  over MSTest,  Subversion over TFS SCC,  Infragistics/Telerik over in-the-box controls,  RedGate over in-the-box SQL tools.  Each of these is a better alternative to that which Microsoft provides (Alternative Vendors).  Use NHibernate over hand-rolled stored procedures and especially over DataAdapter/DataSet, but if EntityFramework proves to actually be superior to NHibernate in a meaningful way, consider using it.
  • Use a responsible application architecture.  Don’t put everything in Page_Load like you see demonstrated at MSDN Events.  Use knowledge to create an application that can stand the test of time and not be rewritten every 2 years.  Deliver (high quality and excellence). 
  • Automate every repetitive task; builds, tests, deployments, etc – excellence and joy

The concrete examples could go on and on, and I hope AltNetConf produces a long list.  I’ll be interested in having my proposed principles accepted by the community there or revised into something better.  Either way, I’d like to get to a point where there is an accepted definition of Alt.Net.

This entry was posted in Agile, Build Automation, Coding Principles, Data Access, Developer Community, Featured, Learning, Tips & Tricks, Tools. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

21 Responses to What are the Alt.Net principles? – my answer

  1. Mike Moore says:

    To me, ALT.NET is “alternate” because it is designed to challenge the mainstream. I kinda like the name and I think it fits the here and now. It may not fit once the movement has “won”, but worrying about that now seems a tad premature.

  2. dru says:

    Man, I don’t understand what the angst is all about and Frans what is up. Maybe I need to go read your blog. -d

  3. I know of only an insignificant number of folks who are down with the alternatives who have also washed out and ended up on the shores of Lake Sammamish.

  4. Jeremy, I have a few things to point out:

    FIRST

    ALT.NET shouldn’t have anything to do with Agile. if they intersect somewhere (and they do), fine, but I wouldn’t make “ALT.NET : Agile”.
    I will admit: there’s a lot of intersection between Agile and ALT.NET, but they’re not the same. Basically, I’m saying you should CTRL+H replace your sentence about XP, replacing “XP” with “Agile”. It’s a small change from what you’re already saying.

    Maybe you’re saying that the “agile principles” (lowercase a) are by definition, an integral part of ALT.NET. Fine. But acknowledge that Agile (capital A) is a political movement, and should remain separate from ALT.NET.

    SECOND

    Your bottom set of “abstract->concrete” bullet points should be further broken down. I don’t know how exactly, but put a set of…let’s say, “concrete goals” that go in between your “abstract principles” and “concrete tasks”. This way people don’t get so mad when you say “use Resharper”–because hopefully you explain it a bit by saying:

    -JOY
    .+-Eliminate Visual Studio frustrations
    …+-Use Resharper (just one example!)
    …+-or CodeRush + Refactor!

    I don’t have much else to say about ALT.NET itself. -Peter

  5. GuyIncognito says:

    Shouldn’t it be ALT.MSFT.NET, cause isn’t ALT.NET = Java, ROR, PHP, etc?

  6. Dave Laribee says:

    @frans – why are you always so contrarian? why?

    @scott – it’s alternative because it’s not mainstream. it might be mainstream in your sample which isn’t a representative one. the .net community lags behind the java community, the rails community, the agile community. if that’s going to be the case, i’m out. make things change, eh?

    @jeffery – the alt part isn’t what i reject it’s the .net part more like it. agile is just one dimension. why the frack do we have ws-deathstar (for example) being shoved down our throats every 10 seconds? why is microsoft’s rest story tied up in live? i know it’s hard to imagine but there will be something after agile, and something after that, and something after that. i for one am interested in riding the edge and not limiting myself. ugh.

  7. @Scott,
    I shake my head in disappointment that this stuff is alternative. This _should_ be normal, but it’s not, and that’s the problem. I don’t really care for the name, Alt.Net, but when the message is widespread, the term will die, that’s for sure. It will have served its purpose.

    I want disciplined development to BE normal.

  8. “It was fun until everyone joined it. Then it was just Normal.”

    That basically the criteria of success for our little club. I don’t want to be the cool guy. I wanna be the guy who has a pool of candidates that can work the way my shop wants to work.

  9. I’m still left wondering why this is “Alternative.”

    When I was in high school some folks started the “Don’t Be Normal Club.” (Hey, it was high school.) It was fun until everyone joined it. Then it was just Normal.

  10. Greg,

    I don’t want to be in your vicinity when Bellware finds out you called him a Rednoser.

  11. @Greg,
    >>The purpose of most ALT.NET types is to get a blue badge at Microsoft

    Please name names because I have spoken (with voice) to many folks who share these values, and I don’t think you are correct.

    Please back up this claim because it seems way out in left field. You did say “most”, so you have to back it up with more than just a few names. Most is a pretty bold claim.

  12. Greg Hughes says:

    Warning: The next statement can be contrived as flame-bait. Please look away if of a sensitive disposition. It’s kinda true though – sorry.

    The purpose of most ALT.NET types is to get a blue badge at Microsoft. There is a huge list of people that ‘did their dues’ of sucking to the Redmond teat before taking the blue pill. There are a bunch of ‘big ALT names’ that now have settled for the safe harbor of ‘helping influence millions of developers’ from the inside, despite all that unsavory business practices / StevieB stuff that they manage to wipe from their ethics-o-meter.

    Microsoft doesn’t have a ‘community’ – it has people on the waiting list to a full-time job that it can pick and choose when it needs – usually when the H1B quota for that year is ran out.

    Greg

  13. Damon Carr says:

    I propose that for a professional consultant working in the Microsoft.NET world YOU ARE FUNDAMENTALLY AND ETHICALLY FAILING if you are not working in these areas where appropriate.

    To me this is an imperative, not simply an ‘alternative’.
    I cannot tell you how nice it is to find a group that so exactly embodies the set of principles and practices that have consumed my work life now for many years as the CTO of a global software product company and now as a consultant (100% Agile focus, ORM with NHibernate, ReSharper, Continuous Integration focus, etc.). I am actually the individual quoted on the ReSharper product page.

    The pushback from the general Microsoft developer community and their all to frequent acceptance of mediocrity is astounding. Often it is a ‘we don’t know what we don’t know’ situation so you really cannot argue these principles as they are near dogma in the minds of the masses.

    This is not something our Java compatriots suffer, who are far more likely to question their ‘Sun’ god (grin).

    Of course (!) there will be nimble vendors offering best practices in Software Engineering that we can leverage before Microsoft (who now seems to be improving I must say) can possibly release something to their far more rigorous ‘superset’ of people.

    To wait for one vendor to provide all your tools is not only damaging, it is ethically not serving your customers and reflected poorly on anyone who plants their head in the sand to wait for marching orders from Redmond.

    Every point you have made here I have been making, and typically have to fight for. It is often not even the well-meaning consultants, but indeed the CUSTOMERS who make ill-fated pronouncements like ‘no open source allowed’. I now turn down more work then presented to me and I am only interested in working with organizations who will ALLOW me to help them be as excellent as they can. That means the use of non-Microsoft produced code, full stop, in addition to the core Microsoft platform.

    Thanks!
    Damon Wilder Carr
    http://damon.agilefactor.com

  14. @Frans,
    There is nothing isolating about “being an agilist”. Agile is a set of values, that’s it, so I propose that Alt.Net includes the four values. Also see above that “Alt.Net does not _mean_ Resharper.”

    It is difficult talking about principles and then giving examples because you could have a completely different set of tools that allow you to create excellent and high quality software with joy. No problem with that. Alt.Net is definitely not about tools.

    >’Open your eyes: there’s more out there than the window MS provides will show you”.

    That’s a very good point. Perhaps the principles could be distilled down to that one-liner. Wow. You actually might have something there. I’m going to think on that long and hard. You may have just summed up the value system.

    I knew if I posted, someone could do better.

  15. FransBouma says:

    “ALT.NET is freedom”
    What a bunch of BS. You’re working WITH vs.net on a MS platform. There’s no ‘freedom’, you are bound to the boundaries MS draws upon you. If you want freedom, use a language, platform and IDE that are created by a community who don’t care if they make money out of it or not. Hint: it’s not .NET

    That said, about ‘alt’ in ‘alt.net’ :
    I think the core reason this ‘movement’ started is because MS thinks in one direction and the platform + tools they provide are aligned with that and some developers think in another direction and this gives friction. However, what I find odd is that the communication towards the outside world about what this movement is all about is focussed on solely applications and ‘agile’.

    What if I’m not an agilist and hate resharper? Am I then not ‘alternative’ ? Perhaps I use more alternative tools and resources than most of the ‘alt.net’ wonderboys do. You see, the alternative in alt.net shouldn’t be about agile and shouldn’t be about use resharper or use nunit or use nhibernate. It should be about ‘Open your eyes: there’s more out there than the window MS provides will show you”.

    Just focussing on a bunch of tools starting with an ‘n’ + resharper and ‘agile’ doesn’t make you ‘alternative’. It just makes you a user group of a bunch of tools.

  16. How does an accepted definition enable us? What actions could we take with that definition in-hand?

  17. @Lorenzo,
    You are correct. What I meant was TFS SCC.

  18. “Subversion vs TFS” is like “Apple vs Orange”.
    Perhaps you could say “Subversion vs TFVC”, but TFS is much much more than just Version Control.
    It’s like saying “TFS vs Subversion+bug tracking system+CruiseControl.NET+NANT+NUnit+NCover+NCoverExplorer+a lot of other things…”

  19. @Phil,
    I intentionally didn’t want to say “use this tool” because the best tool for the job is entirely contextual, but thanks for the clarification.

    Perhaps you can help Microsoft make Alt.Net Mainstream.Net

  20. Haacked says:

    So am I “Alt.Alt.NET” if I push for MbUnit over NUnit? I thought we were picking the best tool for the job! ;)

Leave a Reply