Microsoft developers need not apply

Last night I shared the article Why we don’t hire .NET programmers by David Barrett on Twitter. Some of the responses I got said the article was

  • A load of rubbish
  • Amazingly successful trolling
  • So narrow minded it hurts

The article contains some provocative criticisms of Microsoft’s tool stack. But it also has high praise for the same tools.

Here’s what I believe the article is saying at its core:

The Microsoft tool stack is not optimized for the kind of development we want to do, so we doubt that people who have chosen to make a career using that tool stack will be a good fit for us.

I’ll let David Barrett decide who is or is not a good fit for his company, but this much seems undeniable: Microsoft’s tools are optimized for a certain market. All tools are optimized for some market, at least tools that are successful. I would take Microsoft’s enormous financial success as evidence that their tools are indeed optimized for some market, and a large market at that. The article says

[.NET is] the most modern platform for application development on the planet.  Microsoft has always produced the best tools for building internal business applications, and .NET is their masterpiece.  There’s a reason why they own that space; they earned it.  That space employs millions of people, and those people are unquestionably the masters at what they do.

That’s quite an endorsement. Microsoft should quote that in their marketing literature.

I assume .NET developers don’t take offense to what Barrett says .NET does well but rather what he thinks it does poorly.

Barrett’s main criticism of .NET is that it makes it easier to solve common problems at the expense of making it harder to solve uncommon problems. And that seems clear. He makes his point in an inflammatory way—implying that Microsoft wants to entrap developers, and that .NET developers are happy to let Microsoft think for them—but I agree that Microsoft has designed its tools for developers working on common problems. They’ve aimed at the profitable heart of the developer market.

I don’t agree with Barrett’s argument that start-ups are necessarily working on unusual problems that are not well served by Microsoft tools. A start-up may have a unique product or service and yet have mainstream software needs. For example, suppose you develop a kit that lets people run their car on oatmeal. A website for selling your kits might not be very different from a website selling T-shirts.

Related post

28 thoughts on “Microsoft developers need not apply

  1. Isn’t it likely, though, that a developer who specialize in Microsoft technologies is focused on Enterprise Computing? (This used to be true of the Unix guys back a couple of decades.)

    There is nothing wrong with Enterprise Computing, but it is vastly different from, say, Facebook.

  2. That was really strange. I assume that the point the author is trying to make is “.net makes it easy to do lots of stuff, and people who can only do the easy stuff gravitate to .net.” I can agree with that.
    Unfortunately, he makes some odd errors (What does .net have to do with directx or the path seperator character?), and other comments make this more of an ant-Microsoft screed. (The bit about having to use remote desktop for administration and MS’s traditional dislike for open source.)
    If you are going to work for a startup, you’ll probably be using open source tools because they’re free, and most startups are strapped for cash, but that has nothing to do with the quality of .net.

  3. This article is meant to be inflammatory. Yes, some of the best developers are using exotic tooling. There are also some really good developers using Microsoft stack.

    I think the problem that .net developers have is the inferred supremacy of using these tools. Sure, there are some things that you can’t do in .net yet. But there are so many advantages to using .net for the enterprise that it is hard to ignore. Microsoft doesn’t want to be the latest trend whose light extinguishes just as quickly as it appears. They are in a different league and live within their constraints.

    And a good developer will be a good developer regardless of the stack or tooling. Using some obscure technology in an attempt at developer hipsterism is just that.

  4. Nice analysis – of course I may just be saying that because I agree with you. As a consultant, I do a lot of Microsoft development work, because the businesses I serve use a lot of it. It can, indeed, be very hard to do something “outside the box” on the .NET platform, but it’s not impossible. I’ve seen and done some pretty cool stuff on the .NET platform – I just had to do it very differently than I would have if I’d been working on Linux, or working with Python, Perl, Ruby, or my first ‘real’ language, C++.

  5. I think the main point of the article is about pushing disruptive thinking to extents — startups should be so-called disruptive (trying to beat a market with great ideas or just create a new market) — .NET stack isn’t like so, it feels “enterprisy” and definitely isn’t interesting for disruptive minds…

  6. I believe Logical reasoning and problem solving potentials of a developer knows no bound and a good developer is not defined by a particular set of tools or platform. .Net stack is for the enterprise domain (Easy Build and Quick route to market is the concept)and I think Microsoft wants to keep it that way. Ease of using .Net tool stack does’nt mean .Net developers are Dumb. I believe Good logical reasoning and problem solving ability is one of the most important skills to look out for in a developer and not the tools or platform. this is just like saying C++ programmers can never learn to use C# or Java or any other high level programming language. Now that is dumb.

  7. I think the main point that the author David Barrett doesn’t understand is that .Net costs money to purchase and use and most start ups tend to go with free programming options in order to save money. That is the main reason why startups don’t go with .Net. In the end they are almost all just making a website, or a phone app. .Net can do any of that just as well as anything else.

  8. @Daniel… So, you don’t think .NET could be used for FaceBook instead of PHP? Seriously? I find all you MS-bashers amusing, because you make absurd assumptions based on your complete lack of knowledge on that which you comment.

  9. The general theme that everyone is trying to take as a given, that .Net is highly directed toward internal business applications and very hard to use in ways they didn’t plan on, is really only true for individual libraries, especially ASP.Net WebForms. Granted, WebForms was a large majority of the .Net job market for quite a while, but that’s starting to change with the newer MVC web framework (which is an awful lot like Rails).

    .Net isn’t ASP.Net WebForms any more than Java is Struts, no matter how much of the market was once using either framework.

    Along with the stereotypically-enterprisey WebForms and SOAP services, I’ve done raw HTTP handler-based web services with .Net, client-server forms apps, windows services, and a whole pile of console apps running batch tasks. The only thing that felt like I was fighting the way the tools are supposed to work was dynamic URL routing with the HTTP handler, and that’s gotten easier in newer versions.

  10. I accept that .NET makes solving Common problems easy. But it doesn’t make you to stop thinking solutions for advanced problems. If you could solve a problem with Java, then why can’t it be in .NET? Just don’t say everything is Microsoft’s mistake.

  11. although my work on c++ and java was for a very short time, i never found something hard to do on c# and easy on other languages, i would like someone give example of what can’t be done, plus everything on the web is the same.
    also yes .net is a lot easier than c++ or maybe php, but that’s why its used more for enterprise apps, less development time equal less cost, however i don’t agree with how Microsoft is making VB easier and easier, because it makes developers forget important stuff, but a good programmer will do the same quality whatever language he use.

  12. I would agree that this is more trolling than high praise. Kind of like telling someone that their wife is ugly but a great cook. “Hey you should be happy your eating well. Not everyone likes to date supermodels”. High praise indeed.

    Seriously, I think that thinking that all start-ups are unique problems that can’t be serviced by “enterprise” software is both arrogant and uninformed at the same time. Dot Net isn’t about WYSIWYG drag and drop don’t need to think just do. Sure there’s some of that but there’s more.

    Plus you admit that it makes common problems easy to solve. Now won’t you rather have a developer that understands what a common problem is and find the tool that makes that easy to solve, then a developer that wants so badly to be disruptive that they disrupt even the easy things. I’ve worked with those people before and they are more pain to deal with since they are always re-writing what already exists because it’s not their “new” way.

  13. The argument that .NET is somehow limited in ways that are relevant to 99% of normal development tasks is tired and silly. The biggest problem with .NET is that Msft hasn’t marketed it properly, especially to the younger dev crowd who view .NET as “old”. Msft still has the best dev environment and tools around and that’s not going to change anytime soon. Java astronauts and CS PhDs may not want to hear that, but it’s time to get over it and embrace reality.

  14. One could flip it around and suggest willful ignorance or masochism if you refuse to use the .NET stack. It’s almost a certainty when your refusal is only “justified” by reasons you don’t illustrate. The abstract and insulting analogy in which software development is supplanted by flipping burgers is not fitting and doesn’t describe anything but the author’s own narrow mind.

    On the other hand, at least the bad analogy put some beef somewhere into the thoughtless commentary.

    I’m sure there are valid complaints about various components of any stack. But I’m just as sure that it is far more easy to simply cast wide .Net aspersion. Some will side with you, others will rail at you, but nobody will make you look bad by simply pointing out the way you should be using the tools/stack you don’t understand.

    Whoever said nothing ventured nothing gained knew nothing about web hits.

  15. Like everything in life, we work with what we have. Whether it’s an MS product or not, if you are talented, you will make it work.

  16. My purpose here was not to bash or defend Microsoft. I wanted to take a provocative article and abstract from it some less emotional points of discussion. What is the Microsoft stack best suited for? (And don’t say “everything” or “nothing.”) What can you predict about someone (not with certainty, but with some probability) by their choice of tools? Do start-ups have qualitatively different software development needs than established companies? etc.

    I’m not pro- or anti-Microsoft. I use their tools when they’re a good fit and I don’t use them when they’re not. Earlier in my career I worked in the sweet spot of what Microsoft supports best. Now, not as much.

    In an interview I’d want to know not so much what tools someone has chosen but why. Does someone use their tools because that’s all they know or because they’ve decided for good reasons that the tools are a good fit? Do they just go with the flow without thinking? Or even worse, to they go against the flow without thinking?

  17. “What is the Microsoft stack best suited for?”
    Your answer really only applies to WebForms, though.

    All you can really predict from someone choosing to use .Net is:
    Cross-platform programming isn’t very important to them.
    They don’t want a systems language like C or C++.
    They don’t want (or aren’t bold enough to choose) a pure functional language.
    They want at least part-time static typing.

  18. “My purpose here was not to bash or defend Microsoft. ”

    If that was your purpose, then your title choice was interesting. Re-tweeting without comment and then paraphrasing the article title shows pretty strong support that Microsoft Programmers are not up to par with someone doing open source.

  19. All you can really predict from someone choosing to use .Net is:

    Your predictions would be wrong:

    Cross-platform programming isn’t very important to them.

    This is true, when I write in .NET I can only deploy to Windows, OS X, Linux, iOS, Android, Xbox 360, WP7 and browsers. Off the top of my head.

    Delta Engine
    Xamarin’s Mono

    They don’t want (or aren’t bold enough to choose) a pure functional language.

    That’s only because the functional languages on the .NET stack (F# being the poster boy) are multiparadigm so you can interop with other .NET languages and/or use other paradigms where it would improve the code. However F# is still a functional languages (ML variant) at heart and you are free to ignore the multiparadigm aspects and code with it as such.

    F#

    They want at least part-time static typing.

    Unless of course you’re using, um, any DLR language, like IronRuby, IronPython etc.

    Dynamic Language Runtime

  20. Perhaps the most interesting aspect is just how common people believe that their situation is unique. Heavily reminds me of the Despair poster that points out you are unique. (Just like everyone else.)

    The funny thing is that from where I sit, he certainly has common problems:
    1) He is a startup (many of these abound)
    2) He has a web app (how many of these exist?)
    3) He is dealing with expense reports
    4) He shows ignorance while expressing his superiority. (.NET is a platform not a language. It has three supported languages and at least two others available.)

  21. @Kirk… I can deploy a .NET based application to a GoDaddy server on the cheap. So, please explain how being a startup using .NET is somehow an expense worth even a moment’s consideration. Me thinks many that can’t acknowledge the ease of use, interoperability, maintainability, etc etc etc are suffering from what I call “old man syndrome”…. ” (voice of 80 yr old) back in my day… we didn’t have all these new fangled tools that made development of products that made it to market in a short time span… we liked spending years!”.

  22. Really it all comes down to the runtime engine (i.e. the CLR). This Mono page describes the advantages of using a “.NET” CLR:

    Scripting with Mono

    I do a lot of C# development in .NET using open source tools (like Mono or SharpDevelop). I find the .NET CLR to be very flexible. I think the trick is to *not* use Visual Studio. My past experiences with Visual Studio lead me to believe that it tries to insulate the developer from too much of what goes into a .NET application; but developers need to be aware of what goes on “behind the scenes”. The open source environments allow one to delve more deeply and accomplish more.

    Mostly I like the idea of being able to piece together a working application using different libraries written in different languages (C#, F#, Boo, etc.). And as the Mono page explains, one can always bring in a C++ library as “unmanaged code”.

    What’s not to like?

  23. There is no point in reading past “.NET is a dandy language”.
    Would you read my critic of Linux if I wrote “Linux is a dandy language.”?

    Seriously.

  24. Referring to .Net as a language is not a misunderstanding; it’s a shorthand for “VB.Net or C#”, since the two are interchangeable. When someone says they’re a .Net programmer, they don’t mean F# or IronPython.

    Would you read my critic of Linux if I wrote “Linux is a dandy language.”
    No, but if you said it was an operating system, I’d give you the benefit of the doubt and assume you meant Linux plus GNU.

  25. It is sadly very easy to rile up a large portion of the .NET community. Largely because they take it as blasphemy that there is anything in software development that the .NET stack isn’t the optimal solution for.

    I’ve actually met a developer who’s goal for the remainder of his career was to only write software in Silverlight, be it desktop or web nothing else would be necessary.

  26. If that was your objective, then your headline option was exciting. Re-tweeting without opinion and then paraphrasing the content headline reveals fairly powerful assistance that Ms Developers are not up to par with someone doing free.

  27. the reason i left the ms stack is the development community, nothing but a bunch of egotistical moronic ms fanboys, always claiming their language/framework is the best, why would you use something like gasp erlang or golang, i once had a a ms dev credit the entire gaming market as well as the modern computer industry due to directx, which is laughable, it completely ignores the vendor locks placed on hardware manufacturers applied by ms,
    as if ms didnt “invent” directx wed still be playing board games, theres some things ms does right and some things that are just plain irritating/not intuitive. its always about using the right tech for the job, and most companies are polyglots, relying on 1 technology is kinda moronic, and shows your immaturity as a developer, no advanced developer knows only one stack, as one size cannot fit all.

Comments are closed.