ALT.NET Geek Code: Should you care about these ALT.NET guys?
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!)
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
- ALT.NET on Flickr : http://flickr.com/photos/tags/altdotnet
- ALT.NET on Twitter: http://hashtags.org/tag/altdotnet/
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Why is everyone wearing their jackets in these pictures?
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)
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
There is no way to make it wrap in firefox otherwise
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.
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.
JD
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.
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.
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.
--
* CruiseControl.NET
* Draco
* TeamCity
* TFS Build
* Wrote My Own!
* I remember to run my unit tests before I check in.