As I said in my Microsoft at the Crossroads post, I don't believe that Microsoft and many "mainstream" .NET developers understand the way many of us choose to work and the tools we use. For a long time, I generically refered to this as "Agile" developers or "Agile .NET developers" but it is a lot more than that. True, many of the ideas and tools favored by this community suggest Agile, it is really a way of life, a way of being a .NET developer on top of the CLR and favoring simplicity, testability, continous improvement, and tools that enable agility. To that end, this "thing" needs a name. For a while, I agreed with some that said "ALT.NET" was a dividing name and that eventually all .NET developers might adopt all these traits, some of the responses to Martin's post have swayed me more to acceptance of the ALT.NET term. So, I'm ALT.NET! As Dave said there:
What does it mean to be to be ALT.NET? In short it signifies:
- You’re the type of developer who uses what works while keeping an eye out for a better way.
- You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
- You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
- You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)
Also, Roy has a great list of what we tend to use and believe in the form of "hot" vs. "Not" (Note: I don't agree with all these choices). I think if Microsoft wants to understand us, and comments on my blog say they do, in creating tools that would serve our needs they could do a lot of good in understanding these choices and why. There are very good reasons. I've taken the liberty of replicating Roy's table and making my mods in brown
NHibernate, some Application Blocks, Repositories
|DataSets, Dataset Designer, Entity Framework, MS
|MVC,NUnit,MonoRail, MBUnit, SCSF||Web Forms,
|XP, TDD, Scrum||MSF Agile, MSF For CMMI|
|Evolutionary Design and Development||Big Design Up Front|
|Ruby + IronRuby, Python + IronPyton, DLR, Silverlight(?)||?|
|OR\M (NHibernate, LLBLGen Wilson OR/M, etc..), LINQ to SQL||DLinq, Data Access Block, DataSets, Plain ADO. NET|
|Open Source (Mono, SourceForge), CodePlex + Subversion||Application Blocks,
|MVC and MVP (RoR, MonoRail..), MVP/MVC in CAB + SCSF||Web Forms,
|VSS, VSTS Source Control|
|Build Automation and CI
(CI Factory, NAnt, FinalBuilder, FB Server, CruiseControl..)
|TDD and Unit Testing
NUnit, MbUnit, RhinoMocks, NMock, TypeMock
|MSTest for unit testing, VSTS|
|Subtext, DasBlog, WordPress, TypePad, Blogger, FeedBurner||Microsoft MSN Spaces, Community Server(?)|
|Simplicity in Design, YAGNI, Do the Simplest Thing||P&P|
|Working at MS|
|Google Gears, Occasionallly Connected Smart Clients|
|.NET 3.X (WF, WPF. Silverlight)||.NET 2.0|
|DI, IoC, StructureMap, Windsor/MicroKernel, Spring for .NET||Object Builder|
OSCon, RubyCon, Code Camps, DevTeach..
|VSLive, TechEd, DevConnections|