We are, as software developers, in various states of alone-ness.
A company I worked at once had been operating for years under the assumption that it was OK for software to take months to integrate and deploy; they had never heard of continuous integration. They thought it was normal to rewrite your application from scratch every 2 years; they had never heard of Test Driven Development or iterative development. These techniques have been proven to significantly raise the bar on quality, cost of development, cost of maintenance and general morale. Turns out you can still find, in this day and age, software practitioners who haven’t even heard the terms.
I have also seen on numerous occasions developers build their own libraries and frameworks to solve well understood problems in curiously terrible ways. The endless rebuilding of data mappers, logging code, object resolution mechanisms, messaging systems and web frameworks adds up to a massive waste of time, effort and potential. I’m not talking about public collaborative efforts, I’m talking about in house “Not invented here” syndrome. This is what happens when you have a community cut off from the world. A community that doesn’t talk to each other and work together. This is what the .net community is.
Last year Microsoft released a new web framework called MVC. It’s not new by web standards, it’s not even new by .net standards as the Monorail project had been alive for years before. Yet people were waiting for it. People were waiting for Microsoft to deliver it to them. There were already open source MVC web frameworks and an army of .net developers who could have collaborated to make them great but nothing much happened. It took a handful of developers at Microsoft to make their own framework and now MVC is the hot new thing.
Something is very wrong with this picture.
This new web framework is better than the previous one and is quickly becoming the de-facto. Microsoft released the source. Someone created a github repository. This repository is being watched by 30 people and 5 commits have been made to it. 5 commits! Why is this number so horrendously low? Because Microsoft don’t take patches. They’ll release a new version of MVC without anyone’s commits. Worse than that, everyone will start using their new version and the github repo will just start again.
There’s also Paul Cowan and the horn project. They’re trying to solve dependency management in .net. It’s a really hard problem and probably the largest barrier to real collaboration right now. They are also getting little to no help on this project. If I were sticking around this is where my energy would be going.
The .net community operates in a non-collaborative vacuum.
The community is sick, poisoned by the component vendors with closed source software “solutions” and stymied by Microsoft themselves who are so cleverly changing just fast enough to keep developers from solving problems themselves.
Third party vendor support forums are swamped with questions like “I put a GridView onto my CallBack control and now I get a ViewState is corrupt error”. The real answer to this question is not the one supplied: “this is fixed in the next version”. The real answer is of course “STOP USING SO MANY ILL-CONCEIVED ABSTRACTIONS AND LEARN FROM YOUR PEERS HOW THE #@$#@% WEB WORKS!”.
Also stop using codeplex it’s not real open source! Real open source isn’t submitting a patch and waiting/hoping that one day it might be accepted and merged into the main line.
Anyway enough complaining, I’m out! I did my time and tried my best but at the end of the day, if you really enjoy building software you should surround yourself with others who do too.
Tomorrow I start a new project in Ruby. I will have access to a massive and diverse array of talented passionate people who are genuinely interested in collaboration and advancing the craft for everyone. Every part of my stack including the operating system, database, framework, web server and even the language is fully open source and represents a consensus of a large number of people
To the .net community people who inspired me over the years: Oren Eini, Jeremy Miller, Hamilton Verissimo, Rob Conery, Scott Bellware, Scott Hanselman and everyone else trying to build a community I’d like to say a huge thanks to your efforts and I wish you guys the best of luck!
To those who want to be part of a vibrant community of passionate developers crafting new and innovative solutions, start hanging out with people who aren’t tied to a particular language or framework. Get to your local user groups. All of them. Get a github account and start forking the hell out of everything!
As Tyler Durden once said: You are not your programming language. You are not the web stack you’ve learned. You are not your text editor you write your code in. You are the all crafting, multilingual developer of the world!
Or something like that….
UPDATE 1: Comments on Hacker News
UPDATE 2: Comments on Reddit
UPDATE 3: My follow up post
UPDATE 4: hit hacker news again