jmcd's Stuff -> Now at http://jmcd.nu/blog

Feb 10
Permalink

Microsoft and Developer Duality

There are two different Microsofts.  On the one hand there is the Microsoft that everyone knows.  They make Office, try to lock people into proprietary formats, butterfly around technologies that other companies are already successful in (MSN Search, Zune) and twice a decade release a new version of the leviathan that is Windows.  This is the Microsoft that everyone knows.  They are a fact of life that office workers, school kids and parents endure everyday.  An office worker puts up with this Microsoft in the same way that she endures a crowded bus ride to work.  This Microsoft is unnoticed and unloved.

There is another Microsoft.  Only developers get to see this Microsoft.

Ten years ago Borland ruled IDE land, and Java was the language with momentum.  Microsoft had the restrictive Visual Basic and the eccentric Visual C++.  A decade of massive investment and hiring smart guys changed things.  From the outside looking in, it feels like Microsoft removed a layer of PR from their development division, poured a bunch of money in and said “go nuts”.  The result is a company that does actually produce some pretty good tools and has research that is more visible and quick to change.  Visual Studio is king of the IDEs again, and C# is the language with widespread acceptance.  Microsoft still follow others (Monorail/Rails -> MVC, DLR -> Ruby engine), either copying or “embracing and extending”, but they seem to do it in a much more cooperative way.  In development tools land, the goal is not for Microsoft to kill the competition, just to make sure that developers have good tools that encourage developers and users to stay on their platform (and thus kill the platform competition).  They sill produce a ton of crap (still waiting for good source control), and the high rate at which new (sometimes competing) technologies are unveiled can make it hard to wheat from the chaff.

There are two types of Microsoft developer.  There is the disciple and the real developer.

The disciple hangs on every word Microsoft says, every product they produce.  They likely have a bunch of MSDN qualifications that they use to bash you over the head to win arguments (they tell you “This is the official Microsoft way”).  They know about the minutia of the tools, but don’t know how it fits together.  They didn’t know unit tests existed until they were built into Visual Studio.  They thought Java was stupid until C# came along (no wait, they still think it’s stupid).  If they have heard of Ruby they think that’s dumb too, well they will until they notice DLR languages.

The real developer likes to know about fitting technologies together.  They understand that software development is not about for loops, it’s about what drives your development and how you architect a solution.  This developer might use Microsoft tools, they might use other tools.  They use whatever is best and can fit into their environment (typified by the ALT.NET so-called “movement”).  This type of developer fits well with the new, cooler Microsoft.  Solutions are built from the most appropriate technologies, be they Microsoft, open source or other.

Comments (View)