CEO Friday: Why we don’t hire .NET programmers « Expensify Blog

CEO Friday: Why we don’t hire .NET programmers

with 152 comments

Saturday edit: Wow, quite a response to this.  Some additional comments at the end.

As you might know, we’re hiring the best programmers in the world.  Sure, everyone says that.  But my coders will beat up your coders, any day of the week.  For example, Mich is barely 5 foot tall, but is a competitive fencer.  Witold is a 6’3? former professional hockey player.  Nate practices knife fighting for fun.  And they’re pretty decent programmers, too.

But finding such people is more than a full time job.  Indeed, I spend about half my time on it, while Lisa spends about all hers.  And on top of that we have an army of recruiters out scouring the globe, leaving no resume unturned.  Taken all together, this creates a lot of resumes.  So many that we don’t look at them, because resumes — let’s be honest — are totally worthless.  Rather, we pay all our attention to a few key questions we ask every candidate, each aiming at uncovering a single key point: is this someone we really want to work with?

See, experience is cheap.  All it takes is time.  Skill is harder, but really only requires hard work — a lot of people can get that.  But attitude.  You either have it, or you don’t.  The right sort of person is so passionate about coding, they can’t be stopped from doing it.  They typically started before high school — sometimes before middle school — and never looked back.  They write everything from assembly to jQuery, on PCs to mobile phones, doing hard core computer graphics to high level social networking.  They’ve tried everything.

Everything, that is, but .NET.

Now let me clarify — .NET is a dandy language.  It’s modern, it’s fancy, it’s got all the bells and whistles.  And if you’re doing Windows Mobile 7 apps (which the stats suggest you aren’t), it’s your only choice.  But choosing .NET is a choice, and whenever anybody does it, I can’t help but ask “why?”

Don’t get me wrong: .NET on your resume isn’t an instant showstopper.  But it will definitely raise questions during the phone screen, for reasons that are best explained by simile:

Programming with .NET is like cooking in a McDonalds kitchen.  It is full of amazing tools that automate absolutely everything.  Just press the right button and follow the beeping lights, and you can churn out flawless 1.6 oz burgers faster than anybody else on the planet.

However, if you need to make a 1.7 oz burger, you simply can’t.  There’s no button for it.  The patties are pre-formed in the wrong size.  They start out frozen so they can’t be smushed up and reformed, and the thawing machine is so tightly integrated with the cooking machine that there’s no way to intercept it between the two.  A McDonalds kitchen makes exactly what’s on the McDonalds menu — and does so in an absolutely foolproof fashion.  But it can’t go off the menu, and any attempt to bend the machine to your will just breaks it such that it needs to be sent back to the factory for repairs.

Instead, we look for a very different sort of person.  The sort of person who grew up cooking squirrels over a campfire with sharpened sticks — squirrels they caught and skinned while scavenging in the deep forests for survival.  We don’t want a short order chef, we want a Lord of the Flies, carried by wolves into civilization and raised in a French kitchen full of copper-bottomed pots and fresh-picked herbs.  We need people who can not only cook burgers, but cook anything, from scratch.

See, Microsoft very intentionally (and very successfully) created .NET to be as different as possible from everything else out there, keeping the programmer far away from the details such that they’re wholly and utterly dependent on Microsoft’s truly amazing suite of programming tools to do all the thinking for them.  Microsoft started down this path when they were the only game in town, explicitly to maintain their monopoly by making it as hard as possible to either port Windows apps to non-Windows platforms, or to even conceive of how to do it in the first place.

This decision — or this mandate for incompatibility, perhaps — has produced countless ramifications.  Small things, like using backslashes in file paths rather than forward slashes like any dignified OS., or using a left-handed coordinate system with DirectX instead of right-handed as was used since the dawn of computer graphics.  Big things, like obscuring the networking stack under so many countless layers of abstraction that it’s virtually impossible to even imagine what bytes are actually going over the wire.  And a thousand other things in between: programming tools that generate a dozen complex files before you even write your first line of code, expensive servers that force a remote GUI terminal on you to do essentially anything despite a few keystrokes being perfectly adequate for everybody else,  a programming culture almost allergic to open source licensing.  The list goes on and on.

None of this makes you a “bad programmer”.  All these differences are perfectly irrelevant if you just want to make 1.6 oz burgers as fast as possible, and commit the rest of your career to an endless series of McDonalds menus.  But every day spent in that kitchen is a day NOT spent in a real kitchen, learning how to cook real food, and write real code.

Even worse, every day spent learning a Microsoft kitchen takes TWO days to unlearn, meaning once you get a reasonable way down the .NET career path, there is almost no going back.  You become so steeped in tools and techniques that have absolutely no relevance outside of .NET that you are actually less valuable to a startup than had you just taken a long nap.

So what’s the moral of this whole story?  Two things:

  1. If you ever want to work in a startup, avoid .NET.  It does you no favors.
  2. If you are a startup looking to hire really excellent people, take notice of .NET on a resume, and ask why it’s there.

It might sound harsh, and it is.  But sometimes we only have squirrels to eat, and we need them to taste good.

-david (Follow us at https://twitter.com/expensify)

Edit: Wow, this post has hit quite a nerve.  Had I known it was going to take the internet by storm I probably would have been a bit more careful with my word choice (especially referring to .NET as a language, doh!).  But just to clarify a couple points, 24-hours into the storm:

  • Yes, .NET developers are great at what they do. It’s 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.
  • But what they do is very, very rarely startups. I’m sorry if that sounds offensive, but that’s a simple fact.  You can measure this yourself: go to any list of startups, maybe look at YCombinator’s recent graduate class, or Scoble’s list of picks for 2010, or Sequoia’s list of seed companies — or  go find a list you like better.  Do a curl (or your .NET equivalent) on each domain, and see how many are running a Windows server: I think you’ll find the fraction very small.  Don’t get me wrong: there are a lot of people who aren’t interested in working at a startup, for a lot of very valid reasons.  But if you are the odd person who is interested, it’s worth asking: why do so few use .NET?
  • Because .NET is designed to extend, not disrupt. The same could largely be said about J2EE, but in general anybody who “grows up” with these self-contained, highly-automated platforms can’t help but view computers in a different way than those who start from a lower, less automated, more difficult level.  (As one of the coherent commentators says below, Joel Spolsky himself laments schools teaching Java with the same basic reasoning of my article above, albeit more diplomatically stated.)  .NET is designed to tightly integrate with and seamlessly extend the Microsoft stack in extremely powerful but ultimately incremental ways.  Again, there’s nothing wrong about that if that’s what you want to do.  But if that’s not what you want to do, then .NET probably isn’t the right choice, as evidenced by how few people in the startup world choose it.

Again, this isn’t a rant against .NET — it’s fine.  It’s not even a rant against .NET developers being incapable of learning — they can learn as well as anyone.  It’s a rant against .NET teaching the wrong things for startups.  And about how people who use it for too long, can’t help but learn those things.  This is a rant about how startups, by definition, need to think of things from new angles, and those angles typically don’t involve .NET.

Anyway, I was going to leave all this to blow over before making any comments in a follow-up post next Friday.  Indeed, for all the outrage and fury, this is actually common knowledge amongst startups, and I was going to support that with a bit more data to win over the skeptics (at least, those who were open to listening).

But I’ve seen some recent comments that this post might have upset and offended the SMB community that we serve, and that I cannot abide.  For that, I’m truly sorry.  As someone who grew up using and ultimately becoming frustrated with the limitations of Microsoft tools, and grew up submitting and hating small-business expense reports, I hope I can convince you that we’re fighting for the same goals.  Even if our tools and techniques might differ wildly.

  • Spread the word!

Written by David Barrett

March 25, 2011 at 7:00 am

Posted in Announcements, Job

152 Responses

Subscribe to comments with RSS.

  1. No offense, but I honestly think you have no idea what you’re talking about, and your irrational language biases are probably making you lose some really good coders.

    Phil

    March 25, 2011 at 12:59 pm

  2. that’s rough, I’ve been developing a lot of things in .NET and I’ve been quiet happy with it.

    You can still do 1.7oz berger if you want, since you can handle majority of the stuff client side through webservices.

    I understand the fact that .NET does promote a lot of lazy behavior through their automated tools, but that doesn’t mean you can’t build a successful platform without using those tools.

    pickup games

    March 25, 2011 at 1:04 pm

  3. Although I have never been a recruiter, I don’t agree with you in a sense that using .NET means that you are in the Microsoft Kitchen. One thing is to only know how to use Visual Studio with drag and drop stuff, and other is to use .NET.

    My example: I have mainly programmed _by choice_ in Python, Ruby, Scala, Haskell, C# and currently I’m doing Java. Working on .NET as I did is not an example of being in the Microsoft Kitchen School. I’ve used Compact .NET (in pre-iPhone era), GUI programming for windows, and games with XNA. And at the time, .NET was the best choice for those problems. (Regarding XNA, was a free and fast way to prototype a game concept, something that would have taken 40x in OpenCL)

    And I’ve also done IronPython and IronRuby on .NET. And I surely didn’t have anything automated as at the time there was no IDE support. But it was the quickest way of building a speech recognition prototype.

    Oh, and F# programmers are by definition good programmers. And they work on .NET.

    .NET is a good platform (I’m not saying that is the best, not even that is better than the JVM) and there are excellent programmers using it. And I don’t blame them if they use Visual Studio and all the GUI improvements, intellisense and refactorings. In fact if you are working with such a verbose language such as C# or Java, having that support improves your development speed and code readability. And I don’t care if it’s Visual Studio, Eclipse, Vim or even Emacs.

    Alcides Fonseca

    March 25, 2011 at 1:12 pm

  4. I’m sorry you suck at hiring .NET programmers. Some us have evolved past the visual designers.

    JMiller

    March 25, 2011 at 1:13 pm

  5. you’re retarded.

    neil

    March 25, 2011 at 1:14 pm

  6. You need to hear this from someone who has used .Net extensively, and then happily walked away from it to go open source: You are a wanker. A self-aggrandizing opinion takes even less work than that “skill” thing you seem to think is moderately important.

    Blog posts like this might be part of why you’re finding it hard to hire good people.

    Brian

    March 25, 2011 at 1:29 pm

  7. It’s funny how you’re using the MOST SUCCESSFUL food chain as your analogy to .NET developers. If you want to build your business based on the edge cases of success, go right along.

    Adam Walsh

    March 25, 2011 at 1:34 pm

  8. There have been several comments regarding your post over at HackerNews. I just wanted to say that I hope you will reconsider this post and redact it. If you want to serve enterprise customers, .NET is one of the best ways to do that and do it well. Failure to realize this is naive, and shows you lack the industry knowledge to step outside of the box and objectively view problems and their potential solutions.

    StackOverflow, though an exception to your rule, is a poster child for ASP.NET MVC. Wouldn’t you like to be as successful as they are on so little? I’ve never heard of Expensify, and that may have more to do with my interests, but most of the great hackers I know have heard of Jeff Atwood’s little Q&A site.

    Full discloure, I am a former PHP, Perl, ColdFusion, ActionScript, VB.NET, ASP.NET and C# developer. I currently work in information security, and I help teach developers how to write better, more secure code. Guess which technology we have the least trouble with. ;)

    Bill

    March 25, 2011 at 1:36 pm

  9. what an appalling article

    “You become so steeped in tools and techniques that have absolutely no relevance outside of .NET that you are actually less valuable to a startup than had you just taken a long nap.”

    my whole team ported to java, for a new project in around 3 weeks, the product is now live after 6 months x 8 developers of work and its successfully serving around 1.000.000 uniques a month. Our verdict, the build systems are archaic and needlessly time consuming; maven is horrific, the language is primitive in comparison to say, c#. Its ok, i like the enums in Java, thats about it. What id say is, porting was easy, all the same OO principles apply, theres some slight nuances in the language, unit tests serve the same purpose, DI and AOP are the same concepts. Anyone going the other way Java -> .Net would find it much more of a challenge i think, except for the build system which is virtually transparent for us .Net devs.

    This is just…. hey look can i just say that i’m so pleased i don’t work for you.

    Giles

    March 25, 2011 at 1:38 pm

  10. There are a ton of great .NET devs out there that know what they’re doing. They can come talk to us if they’re looking for a startup that appreciates them, resumes@60mo.com.

    Ed

    March 25, 2011 at 1:40 pm

  11. I’ve read much bullshit over the years, but this tops it all. I personally have wrote code in more than a dozen languages and would still prefer .net any-day. You can write almost anything with any language. You can develop web.apps in assembly language if you insist, but it’ll take 10 times more time and money than doing it with .net, php, ror or other modern languages and you’ll have 10 times more bugs to deal with. This attitude is plain stupid arrogance. If it were a company doing embedded systems for the defense industry I’d understand, but from a company that deals with invoices… you must be kidding!

    Doron

    March 25, 2011 at 1:41 pm

  12. I am a dev working on .net stuff as well as ruby/c/js/coffeescript and whatnot. Clearly you don’t have any idea about the .net ecosystem. A few things to note: backslash or forward slash? that’s a windows thing not specific to .net . And before you say .net is only for windows, checkout https://github.com/mono , it’s not an open source application. It’s an *freaking open source* .net implementation. Checkout http://tirania.org/blog/archive/2011/Mar-07.html .net is the only framework in which you can build an app for all the major mobile operating systems (iphone, android, wp7). These days it’s become fashionable to bash .net, without knowing what it is.

    Khaja Minhajuddin

    March 25, 2011 at 1:43 pm

  13. sorry, but you’re just troll’n

    mike

    March 25, 2011 at 1:46 pm

  14. You have a CEO that clearly hasn’t taken the time to understand a technology platform. Someone
    who forms technology biases based on old Visual Basic stereotypes or shallow interpretations of
    ability based on one of many technologies.

    I’m not a Microsoft zealot. I have used many languages and platforms and always consider the problem
    and requirements when choosing the best technology. The .NET platform is just one of many possible choices.

    It’s pretty close minded to not see that in some situations .NET is a good choice, and even more
    shallow to discount someone for having touched .NET. How are you supposed to know if .NET is a bad
    choice unless you have attempted to understand it? This guy obviously hasn’t taken the time to
    understand .NET has evolved past VB.

    Good luck “carefully crafting” your culture of close mindedness.

    John

    March 25, 2011 at 1:47 pm

  15. I acknowledge that screening for .NET usage may be a great heuristic for screening out people that it isn’t worth spending time interviewing. But it sounds like you’re tiptoeing on the line between recognizing it as a heuristic and treating .NET experience as a bullet-proof indicator that someone isn’t a good fit.

    There are a ton of people out there who have .NET experience and are *great* programmers who would be a good addition to any startup. The question isn’t (and shouldn’t be, morally speaking) “Are .NET programmers any good?” as much as it should be “Is there a high enough signal-to-noise ratio amongst .NET programmers to justify the effort?”

    Jason Baker

    March 25, 2011 at 1:51 pm

  16. My arse crack has a higher level of intellect than this article.

    Chris Smith

    March 25, 2011 at 1:57 pm

  17. McDonalds? Really? Everyone is, of course, entitled to their own opinions but I think you have extremely narrow viewpoint regarding .NET.

    While I have nothing against any specific language or tool, I find .NET platform a joy to work with. The tools which you find restrictive I consider a huge timesaver (which paying customers tend to appreciate)… they allow me to rapidly prototype and get solutions to customers.

    If I had to I could go back to the bad old days of using Borland C++ editors, or even fancy text editors, but why on earth would I want to do that? I don’t like milking customer’s of their money, and I don’t like wasting my time.

    I have no idea what you mean by “techniques”. Are you obliquely slamming design patterns?!

    Anyway, your advice to avoid .NET if you want to join a startup is incredibly bad. The last two startups I’ve been involved with were Microsoft shops. In fact, if all the headhunter phone calls I’ve been getting in the last few weeks mean anything, there seems to be a wealth of .NET related jobs.

    The moral of my story?

    1. .NET lets you pay your mortgage.
    2. Having a big toolset is good. You dont have to use it, but they’re there should you need it.

    Dan A

    March 25, 2011 at 2:02 pm

  18. Frankly, I’m not sure you know what “.NET” is. Perhaps your (1.7 ounces of?) beef is actually with *Visual Studio*? Or maybe with lazy programmers? But don’t beat up .NET for failings it does not have…

    .NET’s CLR is a pretty reasonable and flexible thing to target. And .NET’s languages (C#, IronPython, managed C++, etc.) are also reasonable and flexible. And .NET’s standard class library – maybe you don’t like some of the higher level abstractions? – but you could certainly send raw bytes across the wire using System.Net.Socket.

    And, I don’t like lazy programmers who use hard coded path delimiters, but you don’t need to use \’s in file paths just because you are targeting .NET. And, .NET’s System.IO.Path.Combine() lets programmers avoid worrying about the path delimiter to generate code that will work on whatever file system.

    kazoolist

    March 25, 2011 at 2:03 pm

  19. I suspect the prejudice being expressed here stems primarily from ignorance. In fact, I strongly suspect that’s the case, as that’s the only real explanation I can come up with for .NET being called a programming language. Someone who thinks of .NET as a programming language rather than a platform or a toolchain is, I suspect, someone who has never bothered to venture beyond the System.DraggyDroppy namespace.

    Sean

    March 25, 2011 at 2:07 pm

  20. I agree with some of the other readers. I don’t think you know what you are talking about. First of all, .NET is a “framework”, not a “language” as you have said in your post. It’s probably not worth trying to explain the difference here.

    I’ve worked on .NET for three years and then made a switch to Unix. It took me about six months to feel like I was at home but it didn’t matter after that. In fact, the open source community can learn a lot from Microsoft in terms of backward compatibility and tools for productivity. Eclipse has been emulating Visual Studio for years now.

    Your analogy with McDonald’s doesn’t add any value to the argument as far as I can tell. It’s like discussing the limitations of working on iOS and Apple. Sure, there are tons of restrictions but generally speaking restrictions help streamline things. These development platforms have contributed significantly to the popularity of the products from Apple and Microsoft.

    Your general decision that .NET is unsuitable for start-ups or that .NET programmers aren’t good enough is not objective. It’s so blinded, it’s shocking.

    ronik

    March 25, 2011 at 2:11 pm

  21. .NET isn’t a language, it is a platform and a set of base libraries.

    You can “use” .NET and program in C#, Ruby, Python, Boo, Lua, and various other languages.

    Some hold your hand and restrict you more then others. If you really want to see what you can do, try writing in MSIL.

    “.NET” is simply Microsoft’s implementation of ECMA-335, Mono is another implementation.

    Perhaps before you start judging people on the tools they use, you should learn what those tools actually are?

    Michael

    March 25, 2011 at 2:12 pm

  22. This is probably the stupidest article I’ve read today, and I thought Scoble was going to bring home the prize, but nope.

    FM

    March 25, 2011 at 2:14 pm

  23. “Instead, we look for a very different sort of person. The sort of person who grew up cooking squirrels over a campfire with sharpened sticks — squirrels they caught and skinned while scavenging in the deep forests for survival. We don’t want a short order chef, we want a Lord of the Flies, carried by wolves into civilization and raised in a French kitchen full of copper-bottomed pots and fresh-picked herbs. We need people who can not only cook burgers, but cook anything, from scratch.”

    So, essentially you want redneck coders that will kill it and grill it. Yeah, good luck building anything useful.

    Also, .NET is a platform, not a language, but I guess those squirrel-cookers you have might see it otherwise.

    Craig Maloney

    March 25, 2011 at 2:15 pm

  24. Spoken from someone who has probably only scratched the surface of .NET and probably only an antiquated version such as 2.0

    There was a time when .NET relied on packaged controls. These where great for the novice programmer. Any .NET developer worth their weight though would have the understanding and ability to roll these controls from scratch. Even in the .NET 2.0 days.

    In the end a language is a language. There are multiple ways of doing things and as your article suggests, passion is vital.

    Not all developers are the same though and perhaps if you don’t understand programming enough to tell the difference between a novice and a pro you should keep to your advice and avoid Microsoft folks.

    Gustafson

    March 25, 2011 at 2:16 pm

  25. This is drivel. .Net has value types, easy integration with native code dlls, lamdas and the dlr. All it needs is multi methods and pattern matching and it would be the coolest language ever. I say this having used COBOL,forth,assembler,c,c++,java,javascript,prolog and lisp since high school!

    William Pearson

    March 25, 2011 at 2:21 pm

  26. Note to self: Never use expensify for anything. Ever.

    Ed Castaneda

    March 25, 2011 at 2:27 pm

  27. I understand what you’re trying to get at, but your ignorance is just too hard to get past. .NET is not a language. hopefully writing and research are not your day job.

    Micah

    March 25, 2011 at 2:27 pm

  28. FYI It’s not April yet.

    Hans

    March 25, 2011 at 2:27 pm

  29. tosh

    Jim Galasyn

    March 25, 2011 at 2:32 pm

  30. If someone comes to you with Ruby on Rails experience, do you assume they are ignorant of SQL? After all, the tool does all the work.

    If they use Haml, are they ignorant of HTML?

    If they use jQuery…?

    Matt Sherman

    March 25, 2011 at 2:34 pm

  31. more than anything, this article made me hungry for a burger

    mikeinmadison

    March 25, 2011 at 2:47 pm

  32. Wow you are an ignorant son of a bitch; if you were my boss I would do all sorts of things to fuck with you, like letting air out of tires and wiping vaseline on your door handle. Mark ass trick!

    Josh

    March 25, 2011 at 2:47 pm

  33. I’m sure there are plenty of great “chefs” who could cook a gourmet meal in a McDonald’s kitchen if forced to, I’m not sure many would choose to, which is the point being made. Also, I would like to point out the canned arguments that typically spew from .NET developers about “enterprise” platforms (which is what MS beats them over the head with when they bitch about expense). While .NET can no doubt service the enterprise market, so can everybody else. STFU already about your enterprise blah blah…

    Dayton

    March 25, 2011 at 2:51 pm

  34. I was just looking at your web site. It appears that your job listing needs updating, because the top position hasn’t been filled yet and there is no job listing for a competent CEO.

    Wm

    March 25, 2011 at 2:58 pm

  35. Only bad journalism believes the world is black and white. Get a grip

    Pete nelson

    March 25, 2011 at 3:06 pm

  36. .Net is not a language.

    Rob T

    March 25, 2011 at 3:06 pm

  37. […] there really is a point to all this. Categories: Programming, Satire Tags: Comments (0) Trackbacks (0) Leave a comment […]

  38. I started programming aged 8. Assembly language aged 13. I have 6 year commercial experience in Assemble language and 2 years in low-level C.

    I love programming in C# because it allows me to quickly and easily move what is in my mind, into the computer. There is very low friction.

    Please identify a programming problem that is difficult to implement in C# and give us a beautifully efficient Haskall or Java solution… or STFU

    Ian

    March 25, 2011 at 3:19 pm

  39. Sorry, but .NET is not a language.

    Also, you’re a terrible troll, and have no fucking idea what you’re talking about.

    Zor

    March 25, 2011 at 3:20 pm

  40. Guess what this is:
    20,2,2,0,4,0,0,0,0,0,2,0,0,0,0,0,5,0

    That’s the number of comments on your last 18 or so posts, by my rough count, at the time of this comment.

    See the “20?? That’s this article. It’s generated more activity by far than any of the past 20, dare I say then any post you’ve ever written. How’d that happen?

    Its called flamebait marketing, and this is *exactly* how it’s done. Look around for something flamable, and throw gasoline on it, and hope for a spike in traffic. Help your business out. (does Expensify need help that badly? awkward).

    Bonus points – attacking the *people* that use the tech one one side of a tech vs tech war. Not enough to bash .NET, but to bash the people making, or trying to make a living using .NET. Nice.

    There’s this thing called a bell curve, exists in all populations, and the .NET dev population is HUGE. The bell curve says that some .NET programmers will suck hard, the great majority will be average, and some would smoke you and your knife wielding squirrel cookers.

    Oh and one more thing – you should think twice before insulting a huge population of geeks. In every population there are some that are both brilliant and malicious. Look what happened to Gawker.

    Nardo P

    March 25, 2011 at 3:23 pm

  41. Are you really this stupid?

    derp

    March 25, 2011 at 3:24 pm

  42. This literally the dumbest, most ignorant piece that I’ve ever read about software development and/or hiring programmers.

    anthony

    March 25, 2011 at 3:24 pm

  43. Hahaha, someone said Wanker!

    Sjoerd Franken

    March 25, 2011 at 3:25 pm

  44. SHAMEFUL LIES AND BIGOTRY

    Gharial Danforth

    March 25, 2011 at 3:36 pm

  45. .Net is not a language. Seems to me you don’t really know what you’re talking about.

    Jay

    March 25, 2011 at 3:41 pm

  46. Wow – it’s not every day that someone gains international attention by loudly and proudly broadcasting their ignorance, which is apparently based on a profound lack of understanding and second hand arguments you must have heard by people (quite possibly) less informed than you are (assuming that’s actually possible). But you should congratulate yourself – you did it quite nicely. (.NET is a “dandy language”? Really?!) Besides having lost some IQ points due to reading your post, I feel compelled to respond that “we” – being intelligent, cross-platform, open-source contributing, .NET and other language-embracing developers – don’t like lazy CEOs who obviously don’t make an effort to truly understand the industry they so arrogantly claim to have a grasp of. Self-aggrandizing blowhards like yourself are a dime a dozen. Good luck eating those squirrels. The rest of us have some fine dining to enjoy.

    PS – if you have an ounce of humility in your soul, how about objectively comparing the language features of C# to Java? How about reviewing some of the incredible work being done by the likes of Mark Rendle, Ben Vanderveen, Alex Robson, Jon Skeet, Chris Patterson, Glen Block, Rob Eisenberg or Steve Sanderson? Why not look into the Mono project to get a better picture of the heart and soul of many C# developers who deploy their .NET code to POSIX-based systems alongside their Erlang and Ruby code?

    Jim

    March 25, 2011 at 4:23 pm

  47. No better way to describe you: idiot.

    jesus_was_rasta

    March 25, 2011 at 4:39 pm

  48. I stopped using Expensify after one trip because of poor usability.

    Instead of flamebaiting to get attention for your service, how about focusing on making it suck less?

    JIm Holmes

    March 25, 2011 at 4:56 pm

  49. […] CEO Friday: Why we don’t hire .NET programmers As you might know, we’re hiring the best programmers in the world.  Sure, everyone says that.  But my coders will […] […]

  50. this is the most ignorant critic I’ve read. the analogy of 1.6 burgers makes no sense. give me some specifics of what .net can’t do.

    Al

    March 25, 2011 at 5:35 pm

  51. Did you confused the Visual Studio WinForms designer with C#, then accidentally call it .NET? Oops! Happy Look Like an Idiot on the Internet Day.

    Ross

    March 25, 2011 at 5:36 pm

  52. Ha, you may not hire .net folk but you use images with text in your app and cant align them with form elements. Great skills boys….

    redsquare

    March 25, 2011 at 5:44 pm

  53. I think we .NET programmers should rewrite expensify in .NET and pool together a few dollars for servers to compete with them.

    Jerry

    March 25, 2011 at 5:44 pm

  54. It’s okay guys, just replace “.NET” with “Java”.

    lorf

    March 25, 2011 at 5:54 pm

  55. Did Charlie Sheen write this?

    Derek

    March 25, 2011 at 6:06 pm

  56. You are an Arse-basket of the first water. The names David Barrett and Expensify will forever be synonymous with Arse-basketry. Even on the internet, which is a delicate lattice of idiocy inside a framework of ignorance draped with the shawl of fucktardery, your comments stand out as a quite singular nugget of excrescence.

    GrimReaper

    March 25, 2011 at 6:33 pm

  57. Just in case you think all of these comments are from .net die-hards – here’s a Java bigot saying “This is really, really misinformed.”

    The cherry on top for me was that you guys are a PHP shop!

    Squirrels Ewer

    March 25, 2011 at 6:43 pm

  58. I think I speak for all .NET programmers when I say: you can take your job and shove it.

    Mark

    March 25, 2011 at 6:49 pm

  59. I mean, really, why would the best programmers in the world want to work for you? I’d be amazed if you could even get one of the top 100,000 programmers in the world to bother sending you his/her CV.

    Mark

    March 25, 2011 at 6:51 pm

  60. Having observed your attitude, I can see why it’s been “surprisingly difficult” to find anybody to come work for you.

    a

    March 25, 2011 at 7:03 pm

  61. Wow. How in the fuck are you a CEO with this attitude?

    You’re either the dumbest human being alive or the finest troll ever.

    Jesse

    March 25, 2011 at 7:11 pm

  62. So what you are saying is if I have some C++ code and I use Visual Studio to compile it into CLI then I’m venom to the company, but if I compile it to machine code directly I’m not?

    Would you mind providing some concrete examples to backup your ambiguous claims? As a potential customer these statements make me rather pensive towards purchasing your brand without elaboration.

    @lorf: .NET supports JAVA.

    Diadem

    March 25, 2011 at 7:15 pm

  63. Your vision is so limited that it’s scary to see that you are actually the CEO of a successful cloud platform.
    You’ve seen few “.Net” “enterprise” programmers that “evolved” from VB to VB.Net in drag&drop world and you think that’s where the world ends.

    .Net is one of the most compelling platforms out there. (oh, sorry, first you should learn .Net is *not a language* it’s *a platform*, an implementation of an ECMA standard). But that might be too much for you to understand.

    .Net (CRL) can run everything from Python, PHP, C#, Ruby and even languages out of your “standard” code-to-render-random-html like F# and Scala down to even C++ integrated in a way that no other platform supports.
    Oh, and it runs on almost any OS as well from Windows to Linux to Mac to iOS and Droid (unlike Java that Oracle now is putting the last nails in its coffin).

    Your article can be resumed to “Don’t hire [white|black|hispanic|yellow|middle-eastern] people because in the suburb where I live they are [thefts|immigrants|criminals].”

    I’m quite sure with this article you alienated not only few potential customers or partners but also some existing ones.

    Corneliu

    March 25, 2011 at 7:16 pm

  64. Wow, you’ve clearly never actually built a real .NET app or worked with a decent .NET developer.

    You’re correct that .NET has a boatload of tools that are intended to make things easier for programmers, but most of them rarely see the light of day in a production application. Think of it like Ruby on Rails, you can do the “Blog in 15 minutes” trick by scaffolding everything in RoR, but it won’t be a production app. Like the helpers in .NET, scaffolding allows Ruby developers to quickly build a prototype, then refactor it into something good.

    Your entire post is filled with what PHP and Ruby guys thing .NET is, but is not really based on much fact. As somebody who is about 50/50 .NET and PHP, I can tell you the average .NET guy knows far more about good software design than the average PHP guy.

    Ian Muir

    March 25, 2011 at 7:17 pm

  65. LOL, I just realized the search on your site is powered by Bing… I believe this is what we call irony.

    Ian Muir

    March 25, 2011 at 7:29 pm

  66. This is the greatest troll in the history of trolling.

    rianjs

    March 25, 2011 at 7:31 pm

  67. I’ve made a living off of .NET for the past 7 of 13 years as a pro, and 26 as a hobbyist (and I use many other technologies in my spare time – I’m an omnivore). I think the .NET platform, particularly Visual Studio and C#, is incredible. However, I think I see where the author is coming from, though his claim is overly broad and could easily be applied to Java as well.

    The truth is that the .NET community, outside of the thought leadership at Microsoft and a few outliers (e.g. StackOverflow), is anemic. Big ideas and creative stuff either aren’t coming out of the .NET world, or .NET based projects/startups suck at marketing.

    Name one widely acclaimed or groundbreaking technology or technique to come out of the .NET realm in the past 5 years? Now name one that didn’t come from Microsoft?

    If you ask that question again about the not.NET realm it would be impossible to limit yourself to just one. The not.NET world is overflowing with groundbreaking (not all good, but definitely all creative) solutions, and they don’t all come from a single source (i.e. google).

    If I were at a startup… no wait.. I was at a startup AND I developed an evented I/O server with pluggable protocol handlers AND it was capable of handling the c10k problem AND I did this back in 2006 with C# on .NET 2.0 AND… I still hesitate when I see a lot of .NET experience on a candidate’s resume.

    Why? Because for every 1 smart creative developer with extensive .NET experience there are 1000 uncreative corporate sweat-shop coders who simply don’t understand what it takes to work at a startup where pushing the boundaries is the norm, not the exception; where you can’t wait for Microsoft to spoonfeed you the next-most-awesome-thing-ever-but-is-really-just-a-copy-of-something-some-other-guys-did (ASP.NET MVC :: Rails). (BTW. same thing goes for the majority of the Java community)

    .NET (and Java) experience are big bright red-flags in my book. Doesn’t justify auto-rejection, but it does make me scrutinize a bit closer.

    That being said… the author of this piece used far too broad a brush and comes off looking like a complete know-nothing asshat.

    Anyhow, good on the author for stirring up some controversy.

    architectzero

    March 25, 2011 at 7:56 pm

  68. I pity the fool that takes developer hiring advice from somebody that clearly does not know the difference between an IDE, a platform, and a language.

    The language I use the most is C#. One of my hobbies is writing compilers which often output CIL. Those are “.NET” languages for anybody that does not know. The thing is, I do all my development on Linux and the Mac. So, I do not use ANY of the fancy tools that apparently make me some sort of pariah.

    There is a lot not to like about Microsoft but increasingly, their development story is not one of them. Microsoft takes a lot of flak for being a development “monoculture”. What is hilarious is that many of the people giving that flak spend day after day writing/using “opinionated” software.

    Another ironic thing is that I am embarrassed that I spent a few years of my life developing software in PHP. Please do not judge me for that either.

    I have no respect for popularity contests. Talent is talent. Preference and accidents of history have nothing to do with it.

    Jusitn Malcolm

    March 25, 2011 at 8:09 pm

  69. I will agree with the author on one thing though: do not use .NET if your goal is to sell your start-up or maybe even just if you want to run one.

    He may be an asshat, but his ignorance is not lonely. There is a big bias against .NET in that “community”. It is really just a knee-jerk reaction against Microsoft as the “them” in “us and them” but it is a real phenomenon.

    Basically, the lesson in this guys argument is entirely non-technical. Which is pretty funny given that he is trying to be technically elitist.

    PHP clearly sucks as a technology but you cannot deny the fact that a lot of money has been made peddling PHP solutions to the world.

    Jusitn Malcolm

    March 25, 2011 at 8:44 pm

  70. .NET is a framework, C# is the language and it’s a pretty good one as far as compiled object-oriented languages go.

    david karapetyan

    March 25, 2011 at 8:50 pm

  71. this article is so right its not even funny. .NET is a set of languages that is designed to sequester you exclusively to MS. it’s success comes on the back of ms windows success, and it shelters developers to the point they shrink as a programmer instead of grow.

    im not saying in order to be an awesome developer you need to program in binary, its fine if you take advantage of other libraries, language foundations, etc. But .NET takes this to an unprecedented level of oversimplification.

    to the author, just ignore the of the .NET union, its all bark. the thought that they might have to exercise their mind is almost as offensive as asking them to exercise their body.

    you mad .NET??

    dave

    March 25, 2011 at 8:59 pm

  72. you are so clueless :)

    sc

    March 25, 2011 at 9:35 pm

  73. I know exactly what you mean, I have been cooking squirrels over campfires since the early 80?s – but I sometimes like to eat a .NET burger :)

    S2C

    March 25, 2011 at 10:15 pm

  74. @dave:

    Perhaps if he mentioned that instead of pretending to be technically elitist then maybe I could take him seriously.

    herp derp

    March 25, 2011 at 10:28 pm

  75. @dave Funny that you think binary is a programming language. Looks like your intelligence is on par with this company.

    jerry

    March 25, 2011 at 10:32 pm

  76. I found this article somewhat amusing. I enjoyed reading it. But unlike the other hundreds of people who have commented, I understand that not everything can be taken at face-value.

    I believe that the point David is trying to make is one that .NET platform isn’t a staple environment to be raised to rely on. Someone who possibly has some lower level experience, who has actually messed around with a variety of languages and tools will generally be more competent than someone who has only used .NET. You may cry out that this is stereotyping, but David is a recruiter; sometimes it is faster to stereotype (because stereotypes exist for a reason).

    At least that is my take, and I personally do not enjoy .NET as a platform at all. In fact, the massive outcry from the butt-hurt .NET fanboys only fuels the flames of dislike for Microsoft’s development platform.

    noraA

    March 25, 2011 at 10:34 pm

  77. […] got this article http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/ from @thanr on Twitter. After I finished reading it, I found that the topic of my today’s […]

  78. I am the VP of Engineering at a cutting-edge startup that sells software built on the .NET platform. I’d just like to thank you for agreeing not to hire the excellent programmers I’ll need to build my company and out-compete you. Your ignorance and arrogance has really made my day – keep up the good work!

    Brian

    March 25, 2011 at 11:21 pm

  79. I’m with Phil. I do everything from raw-metal machine language to experimental languages to all the usual web front and back-end languages, and am one of those “started programming at 12 years old” types who had 5 years of college by the time I was 19.

    And as Phil said of the author: you don’t know what you’re talking about.

    Or rather, you’re talking about some sort of experience you or others had with BAD programmers – of the .NET or any other variety. Sorry about that, but you show some serious misunderstandings if you think .NET is a “push-button/make-program” environment.

    Come on – that sort of thing has been promised as “here it is!” since the 80?s. It has never been done for any real-world, non-trivial application.

    So apparently you are not actually looking at guys with much meaningful experience (stress on meaningful), if that’s what you’ve come across for .NET.

    Well, there’s some amazingly talented, fabulously creative developers using .NET. They’ll find plenty of work outside your company, ok?

    Oz

    March 25, 2011 at 11:25 pm

  80. Oh wow. The irony here is amazing. You whine about how hard it is to find good engineers, then go on and on about how you intentionally avoid at least half of the market for skilled people? You deserve to run into the ground. You suck as a CEO, and I’m not one to go around blindly insulting people. This article is absolutely terrible. Where to start… technical programming skill can be acquired, but problem-solving skills and the ability to think logically can’t; either you have it or you don’t… .Net isn’t a language, it’s a framework, with no fewer than 5 supporting languages (VB, C#, C++, Java, F#… take your pick)… should .Net not be natively capable of your 1.7oz burger, then go write CreateBurger(decimal weight) and call it a day… the skills you learn as a programmer are *never* tied to a specific platform, as the most valuable skills are those of problem-solving and logical thinking, which are universal in any language… startups actually *benefit* from using .Net, *because* of the amount of work it’s capable of taking off the developer’s shoulders; more diverse framework equals more rapid development…

    Seriously, do you know *anything* about hiring programmers? You don’t have to worry about not looking at my resume; I won’t be submitting it to you. Not just because of *your* lack of knowledge about what to look for, but because of your incredibly arrogant attitude towards something you have no understanding of.

    David

    March 25, 2011 at 11:57 pm

  81. So clueless.

    My entry into web development (after 7 years of Unix development, 4 writing console games, and 3 writing router firmware) was helping my father-in-law’s company. I learned C# and .NET (along with HTML/CSS/JS/SQL/etc) because that’s what they used.

    They use the MVC framework, which gets almost entirely out of your way. I’d like to know: what am I missing? How am I prevented from making a 1.7 oz burger? Can you articulate that? Please be specific.

    I do all my editing in Vim, building from the command line. Builds, testing, deployment, etc. are all automated using many of the same tool and techniques I used in Unix. How exactly are the tools thinking for me? In what way, specifically, is my code not “real code”?

    Also, could you tell us how is .NET limiting sites like Stackoverflow.com, which absolutely trounce yours in scale?

    > You become so steeped in tools and techniques that have absolutely no relevance outside of .NET

    Like what?! The VAST majority of what you’re dealing with (HTTP, MIME, HTML, CSS, JavaScript, relational databases, page template, authentication, session management, caching, etc.) has nothing to do with .NET, it’s just web stuff.

    I’ve been helping another startup which uses Rails, which I find FAR more hand-holding than Microsoft’s framework (for instance, Ruby has a cutesy, convention-based ORM which protects you from dirty stuff like SQL). But Rails = more Unix centric = good. Right?

    > If you ever want to work in a startup, avoid .NET.

    I’m working for two startups right now.

    I think the real moral of this story is, (1) if you want to work at a startup, make sure the CTO cares about problem solving and not technology religion, (2) if you’re cooking steaks on a gas grill and you see your CTO warming up a dead squirrel over a book of matches, starting looking for a new job.

    Tbone

    March 26, 2011 at 12:17 am

  82. CEO Friday? I say one thing, it’s easier to become a CEO of a company than a skilled .NET programmer; if somebody writes that on their CV I’m going to ask more eyebrow raising questions about which online formation agency you used.

    phill

    March 26, 2011 at 1:15 am

  83. I run a .NET development team and before this gig I spent 4 years running a web app written in .Net

    I think this post is pretty much spot on and that .NET is an abstraction too far.

    Look at many .NET web apps and see all the crap in the page from old style viewstate through to a random scattering of styles and completely unreadable config files.

    .NET makes developers work harder to create great, good quality code and surely that’s what makes it really suck.

    Many .NET developers don’t look beyond the Microsoft ecosystem so aren’t really aware of all the good things and alternatives that are out there.

    Yes, you can get great web apps written in .NET but in my experience they are few and far between….

    Andy Davies

    March 26, 2011 at 1:23 am

  84. “.NET is a dandy language”

    LOL

    Hey, David, where can I download that .Net language from? Sounds interesting. Most of my past experience is in the STL and Qt languages.

    Jeff

    March 26, 2011 at 1:25 am

  85. It’s a pity that you’re being so shorted sighted. I’ve worked with all the languages you’ve mentioned, including .Net, and I started programming when I was 8, and the result is I’ve actually learnt what the restrictions of the languages I use are, and learnt how to push past them.

    Just because your coders have never spent enough time with a language to learn the restrictions, and learn how to get around the restrictions, doesn’t mean you have the best coders.

    I started .Net coding about 3 years ago, as the boss of the start-up I was working in said “yes” to a client that requested .Net development, and now I mentor a large portion of the workforce in the new, publicly listed .Net shop I work at now.

    Your discrimination would have skipped over myself, and many like me, who are able to self-learn, and willing to put themselves in uncomfortable positions, and solve problems, rather than blame the technology.

    Anyways, I’m off to go pick up Objective-C so I can lead the new iOS teams we’ll be hiring this year. I hope you enjoy knowing that you’re getting the second best coders out there because of your discrimination. The best don’t care about languages. And the best will have enough knowledge to provide you with the best solutions, instead of the ones that fit in with their current knowledge.

    Pete

    March 26, 2011 at 1:40 am

  86. You’re a PHP shop. You get to criticise other peoples’ platform choices.

    Lol

    March 26, 2011 at 1:59 am

  87. I suggest to all those angry, angry commenters to actually read the article. It is obvious that .NET is designed to lock you into one platform, one set of tools. That you personally have not had that experience is irrelevant.

    Furthermore the author points out that .NET experience on a resume means you need to ask WHY, get a feel for what it means in that case, that person.

    There are plenty of ways of weeding out resumes, most of which will accidentally make you throw away some good ones. Looking out of .NET experience is just that, a way of weeding out resumes, and will sometimes make you lose a good coder.

    shin

    March 26, 2011 at 2:07 am

  88. If you want to start a camp fire from scratch every time you make food, fine with me.

    I want to use the tools that get shit done, and that’s .NET. It’s more like a well-equipped kitchen.

    lolerboll

    March 26, 2011 at 2:11 am

  89. Never have laughted so much =D

    Matthias

    March 26, 2011 at 2:47 am

  90. Congratulations! This is officially the dumbest thing I’ve read all week.

    The irony of this article truly amuses me. I’ve worked in many languages, but most of work experience has been doing “hard core computer graphics” work. What’s ironic to me is that your level of ignorance is how I typically perceive “web programmers”, especially “web start-ups”. The difference being that I know my generalization is dumb, and without much merit. The fact that you think yours rings so true as to make a blog post about it actually annoys me that it reinforces my stereotype.

    Good luck hiring the best and the brightest. You probably won’t, but hey…ignorance is bliss!

    John

    March 26, 2011 at 2:58 am

  91. If your desire was to make yourself look like an ignorant internet troll … I believe you have succeeded.

    The article is littered with technical inaccuracies and technoligical bigotry.

    Dan Elliott

    March 26, 2011 at 3:13 am

  92. A friend (programmer) suggested to read this article because was “all true”.
    How wrong he is!
    You can make creme brulee or roasted duck with .NET. And 1.6 oz burger if you want. And for Burger you will need less time to prepare it.

    Koki

    March 26, 2011 at 3:17 am

  93. .net is not a programming language. I’m not a .net gyu I hate it, but its not a language.

    Darko

    March 26, 2011 at 3:38 am

  94. This post ranks as the most stupid drivel I’ve read all year. I doubt anything can beat it the rest of this year.

    Now I need to find a way to unread it.

    As another poster said, you can take your job and shove it.

    oweir

    March 26, 2011 at 3:41 am

  95. I’m sorry to say that you really are clueless if you’ve bought into this. A language is just a tool for a good developer, not a limitation. You’re also living in an anti-Microsoft fantasy land if you think that all things that need to be done can be done with widgets and APIs provided in .Net. Half the time those things are too limiting and you have to roll your own.

    I fit all criteria of the people you’re looking for except for the junior developer one. Shame on you for spinning your desire for junior developers as being solely related to cost. What you really mean is you want people you can underpay and work like slaves that won’t know any better.

    I’d never work for a company like this, especially if you come off with this kind of crap regularly. It sounds like you’re staffed with people who can talk and fantasize a lot, but never can seem to deliver an actual product.

    NL

    March 26, 2011 at 3:52 am

  96. You have no idea what you are talking about. Have you ever wrote a few lines of code in .NET? Or seen any real life system build with it?

    Jakub

    March 26, 2011 at 4:01 am

  97. I’m not a .NET fan boy. I started writing large-scale applications using .NET about 3 years ago. Before that I worked primarily in Java for over 10 years. I also know numerous other programming languages and have worked with many software development platforms over the last 25 years.

    If David is serious, then he is at least a very ignorant person. For example, he says “.NET is a dandy language”. WTF? It’s a platform that supports many languages (Python, Ruby, C#, F#, VB, C++/CLI, …). It’s obvious he knows little about the subject of his writing.

    This article would have made more sense if were delayed a few days and posted as an April Fool’s joke. It’s actually quite entertaining in the right context. In this context, it’s just pathetic.

    Frank

    March 26, 2011 at 4:39 am

  98. @noraA and @dave:

    Seriously? U Mad? Butt-Hurt? Where’s the “Why U No Write PHP”? You’re arguing that .NET developers are incompetent, but you’re relying on stupid 4chan memes to make your point?

    The whole Expensify application appears to be written on PHP. While PHP is a great little scripting language, I hardly think you can call it “lower level” than ASP.NET.

    The vast majority of patterns and architecture patterns that we see in PHP, Ruby and other scripting languages are incomplete implementations of stuff the Java and C# guys created. There’s a reason that there aren’t many computer science classes taught in scripting languages.

    Finally, @noraA, don’t make claims in comments on a blog post you clearly didn’t read. The title is CEO Friday and you referred to David as a recruiter? You sound like a developer who really pays attention to details.

    Ian Muir

    March 26, 2011 at 4:47 am

  99. Haters gonna hate

    freddy

    March 26, 2011 at 5:16 am

  100. That’s sort of like saying you won’t hire people because they wear hats… Like you do in every single interview.

    You’re not Mark Zuckerberg, dude. Oh, and your evanglists for Expensify? They’ll be those guys working in mid-sized companies who code in .NET every day.

    Hat Hater

    March 26, 2011 at 5:57 am

  101. Companies not worth applying : expensify.com

    Seriously, I have been programming in functional languages for years and I think I kick butt in F#. I could kick any of your developers butt in a hackathon. You have to understand what you are writing in the internet.

    http://www.reddit.com/r/programming/comments/gbkvk/expensify_ceo_programming_with_net_is_like/

    http://news.ycombinator.com/item?id=2370022

    Alan

    March 26, 2011 at 6:07 am

  102. Sorry, but what a load of crap.

    I may be a newbie .net programmer, but I choose to learn it (in C#) because I think that it is amazing… and I can see how much of what you say is rubbish… In my short few months of using it, I have programmed various extensions and my own libraries overwriting default .Net ones. It is a highly customisable and flexible language.

    … And I have seen a bunch of crap written in PHP. It is the developer who counts, not the language.

    And FYI – My brother is a fussy eater, no pickles and stuff – every time we go to Mcdonalds, they are happy to customise the burger!

    William Hilsum

    March 26, 2011 at 6:47 am

  103. FYI .net is not a language.

    Just saying.

    Tom

    March 26, 2011 at 7:02 am

  104. Probably the most retarded thing I’ll read all day, and I’ve only just woken up.

    Damian

    March 26, 2011 at 7:23 am

  105. I was going to post something thoughtful but I realized this would be more appropriate: You sir, are a douche.

    Brandon

    March 26, 2011 at 7:31 am

  106. This is overly ridiculous. DotNet serves a clear purpose and is one of the most widespread frameworks of the moment. I agree that if VB.net is the only language you’ve ever worked with, than you may have some shortcomings. But C# and F# have lots of high quality, and high-intelligence applications. Why reinvent the wheel every time you create a car…

    ach

    March 26, 2011 at 7:39 am

  107. Wow. Let me se if I can find middle ground. I think this is a bad translation of a revival issue into CEO speak.

    The problem is that there are a lot of tool jockies out there, far more than good programmers. Microsoft designs for tool jockies. But CMS’s like WordPress and Drupal do far more damage. Ruby takes on down this path as well.

    But that DOES NOT mean good programmers cannot work through the tooling to do great tgibgs.

    donoseven

    March 26, 2011 at 7:54 am

  108. The shocking level of naivete you demonstrate in this post by criticizing a major (and admittedly accessible) programming runtime makes me question your capacity to run a -software company-. I get the McDonald’s analogy, but what its missing is recognzing the academic contributions of Dob Syme and his research team in bringing OCaml style functional programming to .NET with F#, or the brilliance of Data Access abstraction that is LINQ (particularly fluent API). Lambdas, Generics, Anonymous functions and the new dynamic assignment in C# 4 demonstrate to me as a programmer that one thing Microsoft -can- do is create a great programming runtime.

    Elijah

    March 26, 2011 at 7:55 am

  109. … an interesting opinion piece.

    I’ve was a .net developer for around 9 years. I also write assembly, pascal, c++, ruby, php, cold fusion, javascript, actionscript, java (Android), MacRuby / Objective-C, and other languages when I need to.

    while I agree with your statements about the limitations that .net has – because I lived with them for 9 years – I think you’re missing the real point of a polyglot / pragmatist: being able to choose the right tool in the right situation.

    there are start ups who are legitimately using .net because they don’t need to look directly into the tcp/ip stack. if a startup only needs a high level set of tools to get the job done quickly and profitably, telling them not to use .net may be irresponsible and detrimental to the startup.

    of course, you’re allowed to have your opinions. fueling the religious zealotry of “i hate X” is an easy way to feel like you’re part of the in-crowd that you adore, as well. it’s easy to stand against something. it takes no intelligence. try standing for something.

    if you give us an equally emotional diatribe on what you love, i think you would find a lot more respect from the world at large instead of just a rally-cry of “yeah! .net sucks!” anti-microsoft sentiments. those sentiments in not genuine.

    Derick Bailey

    March 26, 2011 at 8:00 am

  110. Hmm… strange that you think .Net developers are so universally terrible when one of the most popular sofware development question sites is written in it: http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/

    Andrew Nurse

    March 26, 2011 at 8:06 am

  111. They see me trollin’, they hatin’….

    bit of a change for the PHP crowd to shit on the .NET crowd (or anyone else). I guess it’s about time, being everyone has (with justification) crapped all over PHP for so long.

    BTW: “.NET is a dandy language”. .NET isn’t a language. It’s a runtime. C#, VB.NET, F# (like Scala), etc, are languages.

    If you were just trollin’, good on ya. Job done. If you were serious: I’m SO glad I dont work for you, and I slightly pity the people who do.

    Nic

    March 26, 2011 at 8:26 am

  112. I have to concur with basically everybody else who’ve commented: you’re an idiot. I’ve been programming since second grade. Made my first php website in 4th grade. Saw the potential of clientside JavaScript in middle school… Etc… I spend half my life turning down job offers from startups because I currently have a real job, with a real company. I work in .NET because it’s a great tool, and smart people tend to gravitate towards great tools. But I suppose someone has to be part of the 9-out-of-10-start-ups-fail crowd.

    JD

    March 26, 2011 at 8:34 am

  113. This is the most ignorant post I’ve read in a long time. You are like the Glenn Beck of technology.

    Andy Kutruff

    March 26, 2011 at 8:40 am

  114. Do you manage to hire any programmers in the first place :) .

    bgc

    March 26, 2011 at 8:49 am

  115. McDonalds serves a 1.6oz burger? Apparently you’re just as ignorant in the areas of logic and mathematics as you are at software development. It’s called a “Quarter Pounder” for a reason. But perhaps if you spent your youth killing and roasting squirrels you missed out on such things as a trip through an educational institution.

    Adam Machanic

    March 26, 2011 at 8:59 am

  116. “But choosing .NET is a choice, and whenever anybody does it, I can’t help but ask “why?”

    I gather you assume that everyone’s a web developer?

    Is “I want to write client software that can run on 98.5% of computers, that for various reasons can’t be a web page” a good reason?

    PS I’m not one of those 90%, but .NET is one obvious choice for writing client software – especially since MonoMac became viable.
    http://mono-project.com/Main_Page

    FurryToes

    March 26, 2011 at 9:02 am

  117. The reasoning behind this post is questionable. It’s like arguing against vertical software. It’s also missing the point of engineering anything. FYI, McDonalds earns about 20 billion per year, and each store earns about 2 million. What’s your little shop making?

    Analogy: One is building a sky scraper. Hiring manager: If one has a lot of experience with large building cranes and operations, the hiring manager rules them out. He’s looking for folks who have done some home remodelling.

    If I see PHP on a resume, I’d definitely ask why the person has been wasting their time with low end tools.

    Gunnar

    March 26, 2011 at 9:20 am

  118. David Barrett: I guess you are not a developer, because in the world of software development it’s the other way around. PHP is a software equivalent of McDonalds, anyone can code in it and most people are ashamed to do it.

    All PHP programmers I have ever known are already doing something else – Java, C#, Ruby …

    Isac

    March 26, 2011 at 9:46 am

  119. Ok, this is just stupid and encourages me not to hire anyone from Expensify or use their products – which is bad for your backers and workers, since I work for a corp with very deep pockets. Let me let you into a secret of hiring, applying a stupid bias to the hiring process, a bias based off of elitism and ignorance, is a sure way of ensuring the startup needs adult supervision. Posting it on a blog post is a great way of proving it. Hopefully your backers are slapping you in the back of the head.

    I hire .Net programmers and developers. I also hire programmers and developers who don’t know .Net. The second group tends to get sent to C# training. Two reasons, we like to have some base experience and .Net makes a great language to hammer out fast solutions that work and are reasonably secure. We also write in Java, C++, and Assembly, depending on business needs. In addition, I can find C# developers easily. I guess you never had a vital member of your team leave, get fired, join the Catholic Church, or die? Matter of fact, I bet you, as CIO, are the best developer on your team, at least in your mind. My last three devs to leave went to GE, Google, and Apple, respectively. Microsoft has poached so much of my talent that I hardly have to call tech support, people’s personal cells work so much better.

    As for yours being tuff, let me put it this way. We tend to take vendors wanting us to spend money with them to the firing range. Nothing says contraction negotiation like the smell of cordite.
    v

    Maskatsu

    March 26, 2011 at 10:05 am

  120. .Net isn’t a language. Perhaps you should familiarize yourself with it before making assumptions about what it is, and what it is not.

    Josh

    March 26, 2011 at 10:22 am

  121. You simply don’t understand modern .NET development. What you’re describing is .NET development as it existed 5 years ago.

    For instance, dropping pre-built widgets into WebPages without any understanding of the underlieing technology (HTTP, HTML etc.). This is what many refer to as ‘Drag ‘n’ Drop’ development, and is looked down on today, even in the .NET world.

    The de-facto way to create Web Apps in .NET now is to use ASP.NET MVC which removes all the layers of abstraction that WebForms introduced (and which gave us the drop & drop anti pattern), and allows web developers using .NET to code closer to the metal (e.g. cook a squirrel, or make that 1.7 oz burger).

    “a programming culture almost allergic to open source licensing”

    This is also completele false. Open source tools are very popular in the .NET world (Google for ‘ALT.NET’). Tools such as NHibernate, Castle Windsor, lots of .NET devs host code on github for instance, use open-source build tools (Rake, CruiseControl), or use NoSQL style databases such as MongoDB (check out NoRM on github). Many ASP.NET devs also do Ruby on Rails development.

    While the McDonalds kitchen style of developer you describe does exist, and probably in resonably large enough quantities, most other platforms have this problem too. How many amateurish/nooby PHP developers are out there for instance?

    Dominic Pettifer

    March 26, 2011 at 10:44 am

  122. Looking at programming languages is a hobby for me, so even if the “.net” programming language is crappy, I wanted to take a look at the docs for it. Is it statically or dynamically typed? Is it OO, functional, whatever?

    I Googled for the .net programming language and could not find it. I looked at rosettacode, and looked for programming language benchmarks, and could not find it.

    Of course I found a great many that target the clr, just as there a great many that target the jvm, but I could not find one called .net, or net, or dotnet. Please help me out – I would like to review this language. Where can I find information about it?

    Perhaps you meant to say clr instead of .net?

    If so, the yes, indeed there is a clr programming language, or perhaps I should say that you can program in clr but it is not called a language. I doubt that you will find many people who have programmed in clr (I have), and even if you do you should not reject them because they are almost certainly way above average in programming skills.

    Perhaps you meant to say that you would not hire anyone in a language that has an implementation that targets the clr or the .net environment? If so, you would eliminate folks who write code in Python, Lisp, Ada, APL, F#, Scala, etc. etc. I would gently suggest that there are some genius programmers who use one or more of these programming languages.

    I read a lot of resumes, and I have never found one that indicated programming experience in the .net language, so I guess it is not really an issue – you won’t be eliminating anyone.

    BTW, I am not looking for a job, and you would not hire me anyway because I have programmed in clr.

    g.

    glen worstell

    March 26, 2011 at 10:51 am

  123. If all you eat is mcdonalds or squirrels all day then you have a sad life. :) . .Net puts food on my table but once I’m home I’m messing with things like Ror, Node.js, and MongoDB. You can’t make generalizations like that.

    Smith

    March 26, 2011 at 11:13 am

  124. This is one of the worst articles on technology I have ever read! Given the amount of insider knowledge you have on McDonald’s can I suggest it is having an adverse effect and maybe lay off.

    The post left me really confused as last week I edited a bunch of PHP 5 files on Ubuntu using Eclipse (having never used any of them before) – but wait, according to the article that would have taken days/weeks (ever?) to unlearn and relearn. Utter bullshit. Ubuntu and Windows 7 aren’t hugely dissimilar. PHP is what ASP looked like 10 years ago and the new OO PHP isn’t that dissimilar to C#. Eclipse and VS are IDE’s – if you need to unlearn tools you’re using the wrong ones.

    In any case, having recent experience in Lucene, Solr, FAST and other technologies that span multiple OS’s and languages in single projects, talking programming languages is something from the 90?s – today it’s about API’s and integration.

    Just ask Facebook, Twitter etc.

    Steven Livingstone

    March 26, 2011 at 11:30 am

  125. Use the best tool for the job.

    That’s a little advice for the tool that wrote the blog.

    Dave

    March 26, 2011 at 11:43 am

  126. What a crock. I’ll put my MVC/C#/SQL Server against your LAMP any day

    Luke

    March 26, 2011 at 12:02 pm

  127. You’re making bold claims. That’s great, if you can back them up. But your claims simply aren’t based in fact, which is a big turn-off. Dogma, for or against *anything*, ends up being damaging.
    In fact, while I liked your initial claim that attitude is a required component, so is fact checking. While a desire to change the world is a pre-requisite, so is humility. And, above all, you must know what you know, and what you don’t know.

    You clearly don’t know .NET. You are obviously not qualified to talk about it. So why are you doing it?

    I’ve shipped device drivers for disruptive operating systems, 3d renderers for new communication tools, physics simulation for networked games, message queuing systems for massive user counts, and more. I’ve shipped code in C, C , Python, Assembly, Erlang, javascript, java, and .NET for a variety of open and closed platforms.

    You’d probably want to talk to me. But you blew it, because you make bold statements without basis in fact. Then again, I’m not looking, because I work at a disruptive start-up that’s changing the world, using any and all tools at our disposal, and we reserve the option of using any new tool if the fit comes up.

    jon w

    March 26, 2011 at 12:42 pm

  128. Hi I’d just like to point out that bad mouthing one of the biggest companies and\or languages today has just made you look the most ignorant CEO’s of a internet based companies so well done you!

    Also you’re probably thinking cool lots of traffic but don’t believe the old saying that ‘any publicity is good publicity’ it might be if you’d not given soooo many people an even longer lasting impression that the CEO of your company is a complete incompetent!

    Bill Gates

    March 26, 2011 at 12:49 pm

  129. wow … a bit of ignorance, seasoned with bigotry. If this is how you feel, you certainly shouldn’t have said it out loud. It’s a direct insult to millions of developers. I have plenty of opinions about other brands of technology, but I don’t sit around badmouthing “the other guys”.

    You are right about one thing. That the choice of technology I devote my time to is a choice. But I’ll keep my opinions of your opinion to myself

    Joel Martinez

    March 26, 2011 at 1:00 pm

  130. Excellent post as you clearly prove are an idiot, and have very little professionalism. Your “best programmers in the world” should spend their time building quality software and making lame attempts at being hipsters (witness the childish set of http headers you return in your app). And guess what, they probably aren’t the “best” regardless of what you may think.

    You can be sure that no company that I ever advise with will in any way consider use of expensify for any type of service.

    Bob

    March 26, 2011 at 1:15 pm

  131. After this post I will surprised anyone will want to work for you.

    Yes there are a lot of bad .NET programmer, but there are a lot of bad php, java, dbas, support guys…etc… programmers as well.

    Good developers are hard find regardless of the language they use.

    Frank Kerrigan

    March 26, 2011 at 1:24 pm

  132. oh wait, I think I figured out why you’re having such a bad reaction to .net developers. It sounds like you’ve only had experience with ASP.Net WebForms and are thus ignoring other amazing tools to come out of the .net ecosystem like ASP.NET MVC. Blanket statements like the one you’ve given above really aren’t constructive and often expose our own deficiencies, biases, and lack of knowledge.

    Joel Martinez

    March 26, 2011 at 1:29 pm

  133. The depth of your ignorance is only matched by the shallowness of your knowledge on the subject.
    It is clear that good software engineers avoid you.
    NOTE: Software engineers are engineers, “programmers” are what you use to control the central heating.

    Elaine Kenny

    March 26, 2011 at 2:14 pm

  134. First: .Net is not a language

    I hire programmers that have tried EVERYTHING. Except .NET. Whaaaaat?

    So what an example (you should have plenty) of this 1.7 oz burger “simply can’t” be made in .NET that can be made in Java/Javascript/Ruby/PHP whatever? I’ve worked in .Net, Python, r etc.. and never decided “I simply can’t build this in .NET”. Sometimes other languages are better, but often .NET is the best choice.

    Sounds like you were exposed to .NET form design mode, where you drag things, follow blinking lights etc… This is an Infinitesimally small part of the .NET environment.

    dave

    March 26, 2011 at 2:21 pm

  135. I completely agree with the points in this article. Just kidding. I just felt bad for the CEO and wanted to stick up for him.

    ILoveDoucheCEOS

    March 26, 2011 at 2:24 pm

  136. Can I have your stuff when you go belly up? I bet you have some sweet folding chairs. Who knows, you might even have a few computers we could put to actual use over here.

    dfdsaf

    March 26, 2011 at 2:29 pm

  137. What you just pasted here is purely based on your personal opinion but this is absolutely not a good article.Let me ask you this question, do you always cook your food by yourself? Why buy snacks

    Charles

    March 26, 2011 at 2:38 pm

  138. Judging a platform based on how many startups are using is like taking driving advice from someone in a wrecked car. MOST STARTUPS FAIL.

    There are other factors which explain the correlation, such as the fact that startup are cash-strapped making free tools more attractive, but you jump merrily to positing causation: .NET is a paint-by-numbers McDonald’s kitchen which thinks for you.

    You have yet to quantify ANYTHING you’ve said. You’ve offered not a single specific example, just argument ad populum. Please explain how, specifically, Ruby on Rails is less of a McDonald’s kitchen than .NET MVC. Or contrast it with YOUR platform. Shows us that you understand what you’re rejecting, and not just ranting with ignorance begotten confidence of a religious zealot.

    Tbone

    March 26, 2011 at 3:00 pm

  139. I don’t care whether .NET makes lazy coders or what. MS Basic got a similar rap 20 years ago for encouraging “bad” programming practices. I’m not a even a programmer. The language I was best at was Reverse Polish Lisp found in HP calculators. And it was slow going to master that.

    My problem is that every two bit “startup” wants the rockstar; the lone wolf, genius programmer. Do you “entrepreneurs” really think a guy or gal that can compile Linux on a bicycle wants to write a secure payment processor on an iPhone, or a Flash app that runs on every browser? Those compulsive programmers write stuff because it is *fun* for them! Fun does not include ERP or accounting or any other algorithmically non interesting character shuffling or dynamically generated SQL queries, so that you can collect micropayments from already broke teens. Get real!

    If you want rockstars, you had better get them a stadium with guitars and Marshall stacks. Otherwise, for those yet-another-facebook-type social web apps, just hire competent programmers and give them salary and perks that normal professionals expect, and not hope that their compulsion covers for your managerial incompetence and angel investor micromanaging idiocy.

    And you might even get loyalty and reliability from your journeyman team.

    Fred Bosick

    March 26, 2011 at 3:03 pm

  140. […] CEO Friday: Why we don’t hire .NET programmers http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/ […]

  141. Yall posting in a troll thread.

    nate

    March 26, 2011 at 4:25 pm

  142. […] of San Francisco-based, VC-backed startup Expensify wrote a post on the company’s blog about why he considers .NET experience on a resume a general liability, saying that it will ‘definitely raise questions’ when screening for developers in his […]

  143. Likely this article was a deliberate troll to drum up some free publicity.

    Mike Smith

    March 26, 2011 at 4:30 pm

  144. I completely, absolutely agree with you – .NET and its ilk have destroyed efficient programming. Who cares if you can connect class A with class B? My four year old can do that. Really skillful software engineers do not use .NET. Period. I’m sorry if that offends some script kiddie, but get over yourself.

    pax74

    March 26, 2011 at 4:30 pm

  145. Your pure arrogance and how naive this article is tells me that you must apply the same concepts to your products, and therefore don’t expect my support of expensify.

    Perhaps if you had ever used any .NET Framework language (note that this in itself prooves you have no idea of what you’re talking about. .NET is a framework, not a language) you would know that you can be as high level or as low level as you want.

    What language would you promote using? C++? Java? Assembly? Are you still in 1990 when you don’t realize that there is a place for low level and high level languages? Are you so naive you don’t think that there are bad programmers and good programmers across the board? Ever heard the phrase “re-inventing the wheel?” That’s why .NET was created, and any language you’re using today applies the exact same concepts.

    I started programming when I was 8, and have used just about everything at this point in depth. .NET and PHP are my choice languages, each for their own reasons. For you to rule someone out on a resume because of them having .NET experience shows how few interviews you must have.

    Tom

    March 26, 2011 at 4:32 pm

  146. Hah great article. Just think, you won’t have to waste your time screening all the whiners who replied here in the future. You just saved yourself so much time.

    Josh Reynolds

    March 26, 2011 at 4:34 pm

  147. There are businesses solely devoted to fixing poorly written and outsourced .NET apps (the best fix is, throw it away and start over).
    Not true of any other language.

    Richard

    March 26, 2011 at 4:38 pm

  148. That’s okay.

    I put .NET experience on my resume to screen for clueless chucklefuck employers.

    Jonathan Clark

    March 26, 2011 at 4:39 pm

  149. Look if you want to discriminate based on some weird passion for programming languages, that is your concern. Just don’t be surprised if you have to compromise on your hiring standards. .NET is a good tool for certain things, not all, just as C++, Java, PHP, etc are good for certain tasks only. A decent programmer should know or have the ability to learn any of these quickly.

    And, frankly, you’re not the leader in expense reports so I don’t think you should get too picky.

    Steve

    March 26, 2011 at 4:40 pm

  150. Years ago I was advised to omit from my resume anything I really didn’t want to do again.

    If you’ve done .NET programming, you don’t have to mention it on your resume.

    Bill

    March 26, 2011 at 4:47 pm

  151. Well I wouldn’t want to work for someone idiot who makes statements like:

    “or using a left-handed coordinate system with DirectX instead of right-handed as was used since the dawn of computer graphics.”

    Because he doesn’t know what he’s talking about. DirectX can use BOTH left-handed and right-handed coordinate systems as at least Direct3D9 has right-handed functions.

    This guy is a moron

    March 26, 2011 at 4:47 pm

Leave a Reply Cancel reply