I had the opportunity to be part of an open spaces session at the Philly.NET Code Camp this past weekend. Part of the conversation centered around defining what ALT.NET really means or more specifically, what does it mean to be an ALT.NET developer. It’s pretty clear that as ubiquitous as the term is, its definition is still largely subjective. Though I’m hardly the authority on this bit of lexicography, I’ll take a stab…
Grunge.NET
I’m a huge fan of early 90s Seattle grunge rock. Though most of these acts had clear roots in acts such as Led Zeppelin and Jimmy Hendrix, they were often simply labeled “Alternative Rock.” I think the whole ALT.NET label is pretty similar. After all, techniques and technologies such as DDD and ORMs have deep roots in late 90′s OOPD patterns. Yet, the ALT.NET label gets applied, probably because most .NET devs grew up in the Microsoft space, where data-centric, procedural patterns were commonplace
ALT.NET is Elitist
This is a charge I hear often in podcasts, blogs and even in the open spaces event. Though I disagree that ALT.NET is fundamentally elitist, there is merit to this notion. In some ways, ALT.NET is a reaction to the often thoughtless ways .NET developers work. I’ve interviewed hundreds of developers over the past few years and I’m generally shocked at how many .NET devs work in drag and drop shops. I’ve also found that most .NET devs don’t worry about things like open source, patterns or OOPD.
In no way am I trying to put down the community at large nor am I attempting to be elitist myself. The point is that there are a lot of devs, particularly in the .NET space, who don’t think out of the toolbox. The ALT.NET movement evolved in part as a reaction to this behavior. ALT.NET developers learned from other platforms and languages and sought to use tools that didn’t come from Redmond. ALT.NET developers don’t typically like drag and drop. So by virtue of being a reaction against the way people work, I believe a lot people feel they are the target of some dev angst.
Another reason I think devs feel ALT.NET is elitist has to do with the fact that many popular ALT.NET bloggers are quite opinionated. Let’s face it, a lot proponents of ALT.NET techniques and technologies often speak as if they have discovered nirvana (the metaphysical state, not the grunge band). I mean, even the language of DDD feels a bit elitist if not weird (ubiquitous language, really?). Even worse, are developers who treat ALT.NET as if it were some sort of scripture, blindly applying patterns to problems they don’t understand. Being preachy only works in church. When I interviewed those candidates who knew nothing of common architectural patterns or OOP idioms, I took the opportunity to share what I’ve learned to give them another perspective. But, I hope, I never made them feel stupid for not knowing how to configure Spring.NET’s XML files.
What Makes an ALT.NET Developer an ALT.NET Developer?
Contrary to popular belief, there is no ALT.NET stack to know. We have no secret handshake to join our society. ALT.NET developers are (ideally) first and foremost pragmatists. ALT.NET is about the right tool for the job. That said, there is a sort of checklist of things to be aware of in this community. The list below is hardly exhaustive, but I think it covers a lot of what you might want to know or be familiar with if you want to call yourself an ALT.NET developer.
- Version control systems other than TFS and VSS. Most ALT.NET types work with Subversion, though Git and Mercurial have gained ground.
- Exposure to other languages and platforms. Most of the technology in the ALT.NET space started in other languages. Check out Python, Java and Ruby. Until recently, these guys owned innovation in enterprise software development. A lot of what I know of ALT.NET came from my work with Java and experimentation with Ruby and Python.
-
Become familiar with patterns and practices such as inversion of control, DDD and unit testing. Even if you’re not a TDD zealot, you’ll still benefit from some unit test coverage.
ASP.NET MVC is not going away, learn it. I started with Castle’s MonoRail in 2006 and was ready for MVC. WebForms are not great tools for web developers (different argument). The point is that most ALT.NET work is being made with MVC.
Check out an ORM like NHibernate or the Entity Framework. ALT.NET development is typically not data-centric. ORMs are the preferred way of working with the database in most ALT.NET projects. - Open source. In case it’s not obvious, ALT.NET types love open source.
So that list still doesn’t answer what an ALT.NET developer is, but it hopefully introduces some of the common themes ALT.NET developers gravitate towards. So what makes an ALT.NET developer and ALT.NET developer? I think the answer is actually pretty simple.
ALT.NET developers believe that Microsoft has created best-of-breed development tools and languages. But they recognize that the developer community at-large contributes ideas and technologies that a product vendor could not and perhaps should not concern itself with. As such, ALT.NET developers look to gain perspective from the collective learning of not just the Microsoft dev community, but all those who regularly solve the same problems.
In other words, we’re all solving the same problems (within our own domains of course). The language and platform shouldn’t dictate your broader solutions. ALT.NET developers don’t care where a pattern or technology originated. If it gets the job done, show us that Python code and we’ll port it to C#!
Well, I don’t know if that answered anything. I’m almost at my train stop, so I’ll cop out and call this part 1…