Scott Hanselman

ALT.NET Geek Code: Should you care about these ALT.NET guys?

April 23, '08 Comments [19] Posted in Programming
Sponsored By

I was at the ALT.NET Open Spaces Conference in Seattle last week. I LOVE Open Spaces conferences, my first was Foo Camp, and I've been to two ALT.NET Conferences. When Open Spaces is done right, it's a brilliant self-organizing thing of beauty. If you want to hire an Open Spaces Facilitator for your own conference, you might consider Steven "Doc" List. He did a fantastic job keeping us on track and keeping the energy level both high and positive.

These are the four Open Spaces principles:

  • Whoever comes are the right people
  • Whatever happens is the only thing that could have
  • Whenever it starts is the right time
  • When it's over, it's over

if it sounds a little meta-physical, it is, but it works. Anyone can convene a space/talk and anyone can participate. It's less about personality and power and more about people and discussion and it matches the ALT.NET way of thinking perfectly.

Dave Laribee coined the term ALT.NET last year. I did a podcast on ALT.NET with Dave last month. A few weeks before this year's conference even began, Jeremy Miller blogged about the need for ALT.NET. In a nutshell he said:

Specifically, I’d like to see ALT.NET start to fill what I see as a void for information and leadership on:

  • OOP fundamentals. I think we as a community would achieve far more benefits on our projects from a stronger base of OOP design knowledge than we do for learning new API’s like WCF or LINQ. Learning the fundamentals will make us far better able to choose and use these new API’s.
  • Development processes and practices. Microsoft builds and sells tools, and they naturally see tools as the solution to most problems. We the community should be completely in charge of determining our best practices because we are the ones out there building software. Go to a .Net centric development conference. Outside of some token Agile track, you will not see very much about configuration management, project management, requirements, testing, or the all important people issues. A lot of Linq to XYZ talks, but not much about running successful software projects.
  • Alternative tools. Some of the tools Microsoft makes are great, but some are inferior to non-Microsoft options. Some of these alternative tools open up entirely new possibilities in how we can work.  I’d like to see the entire .Net community to simply broaden its horizons to be more accepting of tools originating from outside of Redmond.

I think he’s right on. Not everything MSFT does is the “last word,” Microsoft can do better on prescriptive guidance and process, and many .NET programmers could do to refresh their knowledge of Computer Science 101 Fundamentals, myself included.

Also, ALT.NET isn't about Microsoft vs. The World, as Ayende pointed out last year:

Saying things like "An ALT.NET developer would be using Castle Windsor before Enterprise Libraries ObjectBuilder.", or "An ALT.NET developer was using NHibernate before the Entity Framework." is giving the wrong impression. It gives the impression of you are either with us (good) and against us (bad). And you must follow Our (notice the royality speak) way and no other.

The other objection is that it is focusing on tools and not on a mind set. The way I see it, this is much more about keeping your head open to new approach and ideas, regardless of where they come from. In short, I really like the ideas and concepts that Dave presents, I don't want the idea to turn into "A .NET developers that seeks to use non Microsoft technologies." I would much rather it be "A developer that seeks to find the best tools and practices, and judge them on merit."

I think some folks at Microsoft perceive the ALT.NET crowd as being loud, small, divisive, or all of the above. Deep passion and belief can sometimes be perceived as loud or argumentative. I think a better way to put it would be "pragmatic." More and more MSFTies, ScottGu included, get this. I enjoy being a part of this group.

ALT.NET is about picking processes and tools that work for you and make you happy, picking the best one or a number of them, and using them all together, so I took a moment this afternoon and whipped up an idea that a bunch of us at the conference had late one night: The ALT.NET Geek Code.

Here's mine (note the DIV tag and CLASS in the source. Any designers want to whip up a nice CSS box, with a small ALT.NET Logo? Thanks to Simone for the nice CSS and layout and Adam Kinney for the Silverlight Badge!)

Get Microsoft Silverlight

What's it mean? Well, it's a code that describes the processes and tools that I like to use to develop (as of this moment...these things tend to evolve.) You can get your own ALT.NET Geek Code and post it on your blog if you like. Perhaps we'll be able to use Google to scrape the Interwebs and do a distributed ALT.NET Tools Survey someday. ;)

Should you care about ALT.NET? Even if you aren't into the cult of personality, you can definitely learn something from getting involved in the conversation.

UPDATE: I also want to point out that I'm intending to use the term "Guys" in this post's title in the gender-neutral usage. I am acutely aware of the need for more women in this field, so much so that I convened a talk at this year's ALT.NET Open Spaces Conference called "What's with all these White Guys" which was attended by the both the women who came to the conference this year.

Related Links

Technorati Tags: ,

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Wednesday, April 23, 2008 1:58:00 AM UTC
Love the geek code generator: What about Continuous Integration?
--

* CruiseControl.NET

* Draco

* TeamCity

* TFS Build

* Wrote My Own!

* I remember to run my unit tests before I check in.
David Miller
Wednesday, April 23, 2008 2:12:38 AM UTC
Don't forget the goal of changing not only .NET development but development in general.
Wednesday, April 23, 2008 2:32:23 AM UTC
Sounds freakin' awesome. Doesn't sound "alt" to me at all, sounds like what I do every day.

Why is everyone wearing their jackets in these pictures?
Dave P
Wednesday, April 23, 2008 2:45:30 AM UTC
I thought the most insightful comment on your ALT.NET podcast was that Micsoft tools implicitly assume database-first development while some of the ALT.NET folks are committed to objects first.
Wednesday, April 23, 2008 3:25:15 AM UTC
I think "pragmatic" is one of my favorite words. It's one of the few that can mean "quick" and "effective" without meaning "wrong".

I also love the new melting pot mindset that's starting to show on the Microsoft surface. Like building the new MVC libraries with such engagement and transparency from the outset. Brilliant!

@John, agreed on the database-first issue. I was shocked with the dbml designed I still needed to manually add and configure all of the properties of a primary key, and a foreign key field, *and* select them both manually from drop lists.

I'm pulling for Microsoft too, but compared to "[BelongsTo] public Yadda Yadda {get; set;}" I'm just not quite feeling the love on that one. (Castle ActiveRecord, btw)
Wednesday, April 23, 2008 7:34:27 AM UTC
Hi Scott,

Well, passion for technology in general, with a particular interest in .NET world are the way I tend to explain alt.NET, we've had a long debate here in Italy about the term "alt", alternative, but alternative to what ?

We're part of a .NET user group here in Italy in which we always talked about NH, Dependency injection and tools and practices adoptable to ignite development phase and I think there's a lot of confusion due to the term "alt".

Ayende says well, it's not alternative to microsoft way to do things, it's, in my personal opinion, a way to endorse those practices for analysis, design, development and deploy in a sugar flavored manner, useful and beautiful, well using also non microsoft tool and libraries ;)

These years shows us a particular effort from microsoft guys to adopt those principles and try to listen to communities requests, you, Phil, and ScottGu are those guys that are trying to push more !

Thanks Scott (and other people that attended the alt.net conf) for trying to improve communications between MS and communities world.

Hope to be able to attend one of the next conf, seeing people like you, ayende, martin fowler and many other is quite an honour for people who spend their life developing and trying to do it as better as possible !

Gianluca
Wednesday, April 23, 2008 10:20:30 AM UTC
Why don't you put some whitespace between the groups of the altnetcode?
There is no way to make it wrap in firefox otherwise
Wednesday, April 23, 2008 11:11:45 AM UTC
Scott, I made a quick formatting of the code here: http://codeclimber.net.nz/archive/2008/04/23/My-ALT.NET-code.aspx
Wednesday, April 23, 2008 12:45:13 PM UTC
Awww, that list reminds me of a few things I planned to take a look at... months ago :(
Wednesday, April 23, 2008 3:45:57 PM UTC
You need an opt-out option for many of the categories for those familiar with the process/tool who choose to do without it. Maybe change "What's that?" options to be represented by a single question mark ("?") to indicate something not familiar and represent familiarity with opt-out by using "!". Take my own attitude with IoC, for example. I know the options but I neither wrote my own, nor am I ignorant enough to choose "what's that?".
Wednesday, April 23, 2008 4:42:31 PM UTC
Just a heads up: The "alt.net" link you made in Jeremy Miller's quote goes to http://alt.net which is definitely NOT an alt.net site. You probably meant it to go to http://altdotnet.org :-)
Wednesday, April 23, 2008 5:18:01 PM UTC
Wow, I must be a greener developer than I thought, because that list is about twice as long as I thought it would be.

I completely agree with the notion that focus should be on the mind-set and not the tools. As a recent grad I find that my peers and I often get caught up in the scramble to the learn the tool du jour. That doesn't make good developers, it makes good users of those tools. Instead developers (especially new ones) should be focusing on why those tools were created in the first place and if there is a better way to achieve its objective.
Kevin Babcock
Wednesday, April 23, 2008 5:48:26 PM UTC
The development principles and practices promoted by ALT.NET are great in part or in whole, according to ones individual needs, but the challenge ALT.NET faces is one of image. It's nice for Ayende to say it's not a "with us or against us" proposition, but unfortunately in less premeditated commentary many of ALT.Net's audible voices are far more susceptible to the innate nerd tendency to be tactless. Witness the recent public execution of Rob Conery, along with the frequency of comment spank, apparently just for saying the wrong thing. Rob made lemonade, and good came out of it, but the same good could have come by tactfully opening the resulting dialog in the first place.

For me, watching ALT.NET from the outside, it's not that I'm thin-skinned. It's about discomfort with savants, and about preferring brands whose proponents have the interpersonal skills to not damage it. I've been thinking recently that it's kind of like Linux "advocacy", wherein the advocacy, while attracting the smaller community, is in itself an impediment to attracting the larger community. Thinking it over, however, that's not entirely accurate. The off-putting barbs that emanate from ALT.NET are moments of individual poor form, whereas the off-putting aspect seems to have become ingrained in the very philosophy of Linux advocacy.

Still, it doesn't hurt to learn from examples of bad advocacy. ALT.NET has turned me on to some good ideas; I hope its actuators keep the brand healthy.
I Have the Hat
Wednesday, April 23, 2008 8:02:05 PM UTC
There were four women at this alt.net conference. Including one who came on her birthday! We all sang Happy Birthday to her and she won a copy of Brad Abrams Framework design book.
Thursday, April 24, 2008 4:00:24 AM UTC
Excellent treatment of the topic! As always, you were able to distill things down to a concentrated, digestible chunk without diluting anything. The geek code generator was also cool. I learned about several new options that I need to check out. Thanks.
Thursday, April 24, 2008 6:01:14 AM UTC
I'm a fan of measuring against effectiveness -- principles, patterns and practices all the way -- from the school of what works. I think Bruce Lee's "absorb what is useful -- throw the rest away" is a good approach for both software engineering and personal effectiveness. I'm also a fan of staying adaptable over being overly adapted and I have tools that enable smart people over smart tools that get in the way.

JD
Thursday, April 24, 2008 1:11:29 PM UTC
I just had a "wow" moment there Scott.

It's was like the first time you look at a BIOS screen after Computer Org & Design and suddenly say: "Wait a second, I know what all of that means". Your tag is nothing but a series of letters, parentheses and semi-colons, but it meant something to me... it has been groked.

But as I look at all of these tools, I start coming to some stark realizations. We don't just need better tools, we need better "frameworking" for these tools. The software world is filled with religious zealots and I can already see the shifting tides in the .NET world, but there's another divide that we need to cross.

There's a hubris in this space, likely because it's filled with alpha developers. Yelling at each other is actually a great starting point, but I think that we need to go a step further and start documenting and profiling the solutions that we're coming up with. I think that we need to engage the wide community, but we need to do it in a much more caring way.

Personally, I'd like to see two things from ALT.NET:
1. A more centralized approach to organizing these tools and frameworks.
2. Less BS and more understanding. Alphas like to complain about the quality of work delivered by the "non-alphas", but they can't even agree on the work that they're doing. There are obviously tons of solutions, so just tell us where yours fits. And tell us with acceptance and understanding

Rocky Lhotka says that under CSLA 3.5 and WPF, he can write basic maintenance screens with zero code. But listen to the podcast and he'll tell you that he's going a different direction than MS as he's tying much of the business logic into the "Entities" that he's created. Zero code, but no separate layer for business logic. Zero code, but you still have to write your test cases right?

Is this bad or good? (it's neither, that was just a bad question)

So let's be honest with ourselves. How many "joe programmers" actually understand how to make a good business layer or understand the implications of the various spots they can put the business logic? You see, most programmers I've met don't know, they just follow whatever guidance they happened upon first and then pretend it's the "one true way". And they don't listen to podcasts or download RhinoMocks or SyncLINQ, they heard something good once and that was it.

"Joes" don't know all of the available tools and even if they do, they don't know the differences. They can't explain to their manager why they should be using Cruise Control or how long it takes to roll out or why it's not an MS-offered tools (if it's so good) or what type of license this tool may impose on them, etc.

So why don't we <i<start</i> by creating a centralized site for these tools? Break them out by phases of development, where do they fit in the process. Start answering the "which one should I use" question in a fair and friendly matter. Accept that some people roll out production code without running unit tests or code coverage tests. Accept that some people roll out production code with SQL in the UI layer. Understand that you Alphas have been engaging in these "best practices" for years. That's years of practice(s) on concepts that even veteran developers may be hearing for the first time. Help us through the learning process, help us understand the tools that we're using so that we can someday know enough to contribute back. Accept that there are many different scopes of development and start by providing at least 3 good answers to every problem: Small, Medium & Large.

Too many programmers are trapped in their own little world where every solution must be infinitely performant and infinitely scalable and infinitely configurable and capable of basically writing itself. Let's get over ourselves and start sizing our solution to fit. The MS Enterprise application blocks were cool, but completely unsuitable for anything but Enterprises. Yeah, I figured that out (Enterprise = Large), but it should have been in the first two paragraphs: "We do this.... if you develop solutions that don't fall into one of these scopes, then Enterprise Application blocks are not for you..." This is about understanding where it fits and accepting its limitations.

All I want is for the ALT.NET world to provide Acceptance and Understanding as they deliver their solutions unto us.
Gates VP
Thursday, April 24, 2008 2:20:22 PM UTC
I just don't like the "running with scissors" logo. It's elitist, and arrogant.

Running with scissors is DANGEROUS. You don't do it because you might get hurt. But if I claim that I can do it, I'm saying I'm better than you. It's not very inclusive, is it? Do as I say, not as I do.

It's a little thing, but it sends the wrong message.
Monday, April 28, 2008 6:09:42 PM UTC
When I read between the lines between alt.net blogs and people commenting what I really hear is, "we want real-world best (or at least better practices) out of the box with a focus on structure and methodology vs. tooling". In a way people really want what Rails gives us, a known, agreed upon convention that makes the hard choices for us and gives very clear guidance on how to create applications.

MIcrosoft has always been very big on having a lot of ways to skin a cat, trying hard never to dictate just how you should craft you application but that's exactly what most people really want. I have my own problems to solve, I don't want to waste time thinking about my folder structure, which ORM to use, which test framework to pick or the automated tasks I need to create. To me the alt idea is a group of people willing to state a strong opinion, say that right now this is the cleanest way to create certain types of applications and here are the tools that will help you do just that and here are the conventions that help you get there.

@Matt - To me the scissors is ironic and funny and I really doubt anyone is trying to be elitist or arrogant. Seriously, sometimes a cigar is just a cigar. Given enough time and people everything is offensive to someone in some context somewhere, that's why people in general need to lighten up.
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.