sassy.net: Fall Fashions for .NET Programmers

This fall programmers are going to be a little more sassy. Whereas in the past, trendy branding has involved concepts such as paradigms, patterns and rails, principles such as object-oriented programming, data-driven programming, test-driven programming and model-driven architecture, or tags like web 2.0, web 3.0, e-, i-, xtreme and agile, the new fall line features “alternative” and the prefix of choice: alt-. The point of this is that programmers who work with Microsoft technologies no longer have to do things the Microsoft way. Instead, they can do things the “Alternative” way, rather than the “Mainstream” way. In the concrete, this seems to involve using a lot of open source frameworks like NHibernate that have been ported over from Java … but why quibble when we are on the cusp of a new age.

Personally I think sassy.net is more descriptive, but the alt.net moniker has been cemented by the October 5th alt.net conference. David Laribee is credited with coining the term earlier this year in this blog post, as well as explicating it in the following way:

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.)

This is almost identical to my manifesto for sassy.net, except that I included a fifth item about carbon neutrality and a sixth one about loving puppies. To Dave’s credit, his manifesto is a bit more succinct.

There are a several historical influences on this new fall line. One is the suspicion that new Microsoft technologies have been driven by a desire to sell their programming frameworks rather than to create good tools. An analogy can be drawn with the development of the QWERTY standard for the English-language keyboard. Why are the keys laid out the way the are? One likely possibility is that all the keys required to spell out “t-y-p-e-w-r-i-t-e-r” can be found on the top row, which is very convenient for your typical typewriter salesman. Several of the RAD (Rapid Application Development — an older fall line that is treated with a level of contempt some people reserve for Capri pants) tools that have come out of Microsoft over the past few years have tended to have a similar quality. They are good for sales presentations but are not particularly useful for real world development. Examples that come to mind are the call-back event model for .NET Remoting (the official Microsoft code samples didn’t actually work) and the MSDataSetGenerator, which is great for quickly building a data layer for an existing database, and is almost impossible to tweak or customize for even mildly complex business scenarios.

A second influence is java-envy. Whereas the java development tools have always emphasized complex architectures and a low-level knowledge of the language, Microsoft development tools have always emphasized fast results and abstracting the low-level details of their language so the developer can get on with his job. This has meant that while Java projects can take up to two years, after which you are lucky if you have a working code base, Microsoft-based projects are typically up and running in under six months. You would think that this would make the Microsoft solution the one people want to work with, but in fact, among developers, it has created Java-envy. The Java developers are doing a lot of denken work, making them a sort of aristocracy in the coding world, whereas the Microsoft programmers are more or less laborers for whom Microsoft has done much of the thinking.

Within the Microsoft world, itself, this class distinction has created a sort of mass-migration from VB to C#; these are for the most part equivalent languages, yet VB still has the lingering scent of earth and toil about it. There are in fact even developers who refuse to use C#, which they see as a still bit prole, and instead prefer to use managed C++. Whatever, right?

In 2005, this class distinction became codified with the coining of the term Mort, used by Java developers to describe Microsoft developers, and C# developers to describe VB developers, and by VB.NET developers to describe their atavistic VB6 cousins. You can think of the Morts as Eloi, happily pumping out applications for their businesses, while the much more clever Morlocks plan out coding architectures and frameworks for the next hundred years. The alt.net movement grows out of the Morlocks, rather than the Morts, and can in turn be sub-divided between those who simply want to distinguish themselves from the mid-level developers, and those who want to work on betterment projects using coding standards and code reviews to bring the Morts up to their own level. (To be fair, most of the alt.net crowd are of the latter variety, rather than the former.) The alt.net movement sees following Microsoft standards as a sort of serfdom, and would prefer to come up with their own best-practices, and in some cases tools, for building Microsoft-based software.

The third influence on the formation of the alt.net movement is the trend in off-shoring software development. Off-shoring is based on the philosophy that one piece of software development work is equivalent to another, and implicitly that for a given software requirement, one developer is equivalent to another, given that they know the same technology. The only difference worth considering, then, is how much money one must spend in order to realize that software requirement.

This has generated a certain amount of soul-searching among developers. Previously, they had subscribed to the same philosophy, since their usefulness was based on the notion that a piece of software, and implicitly a developer, could do the same work that a roomful of filers (or any other white-collar employee) could do more quickly, more efficiently and hence more cheaply.

Off-shoring challenged this self-justification for software developer, and created in its place a new identity politics for developers. A good developer, now, is not to be judged on what he knows at a given moment in time — that is he should not be judged on his current productivity — but rather on his potential productivity — his ability to generate better architectures, more elegant solutions, and other better things over the long that cannot be easily measured, run. In other words, third-world developers will always be Morts. If you want high-end software, you need first-world solutions architects and senior developers.

To solidify this distinction, however, it is necessary to have some sort of certifying mechanism that will clearly distinguish elite developers from mere Mort wannabes. At this point, the distinction is only self-selecting, and depends on true alt.net developers being able to talk the talk (as well as determining what the talk is going to be). Who knows, however, what the future may hold.

Some mention should also be made concerning the new fall fashions. Fifties skirts are back in, and the Grace Kelly look will be prevalent. Whereas last year saw narrow bottom jeans displacing bell bottoms, for this fall anything goes. This fall we can once again start mixing colors and patterns, rather than stick to a uniform color for an outfit. This will make accessorizing much more interesting, though you may find yourself spending more time picking out clothes in the morning, since there are now so many more options. Finally, V-necks are back. Scoop-necks are out.

In men’s fashion, making this the fifteenth year in a row, golf shirts and khakis are in.