Update: The end is near, Expensify is hiring a .NET programmer! Learn more…
Saturday edit: Wow, quite a response to this. Some additional comments at the end.
Sunday edit: Still going! More comments at the end.
Monday edit: Skip my post and read this one instead. It says the same thing, but less offensively. (Or, rather, more offensively to Facebook and Google employees, less offensive to .NET developers, though the underlying message is the same.)
Tuesday midnight edit: After >500 comments, >1000 tweets, and >1000 Facebook likes, I’m closing comments on this thread so we can all get back to work. The very last comment takes the cake, however, and is a fitting close. Thanks ez, whoever you are!
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:
- If you ever want to work in a startup, avoid .NET. It does you no favors.
- 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)
Saturday 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.
Sunday edit: Incredible that this post is still going strong, on a weekend no less. But what’s most interesting is how the comments have gradually shifted over time. Granted, me even pointing this out will probably have an effect on comments going forward, but the general trend has been:
- First wave: Raw, incoherent hate, constructed from near-pure profanity. I took the liberty of deleting most of this, as this is a PG-13 site. Perhaps 1% of the first wave agreed with me.
- Second wave: “Reasoned” hate, though most of that reasoning was done by extrapolating my misuse of one word (“language” instead of “platform”) into every conceivable sin. I’d say maybe 15% of the second wave agreed with me (if weighted by actual coherent text).
- Third wave: A very heated discussion. It would appear that every possible insult had already been slung so there was nothing left to do but actually discuss the merits of the post. I’d say maybe 25% of the third wave agreed with me.
It’s harder to get a sense of agreement/disagreement from Twitter as most people just retweet without comment. But I’d say those who do make comments have fit the rough curve above.
Very good post. Three thumbs up.
Good squirrel recipe:
http://www.backwoodsbound.com/zsquir3.html
Better one:
http://mikemainguy.blogspot.com/2011/03/example-of-difference-between-ruby-and.html
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.
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.
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.
I’m sorry you suck at hiring .NET programmers. Some us have evolved past the visual designers.
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.
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.
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. 😉
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.
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!
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.
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.
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?”
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.
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.
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.
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.
.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?
This is probably the stupidest article I’ve read today, and I thought Scoble was going to bring home the prize, but nope.
“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.
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.
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!
Note to self: Never use expensify for anything. Ever.
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.
FYI It’s not April yet.
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…?
more than anything, this article made me hungry for a burger
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…
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.
Only bad journalism believes the world is black and white. Get a grip
.Net is not a language.
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
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.
This literally the dumbest, most ignorant piece that I’ve ever read about software development and/or hiring programmers.
Hahaha, someone said Wanker!
.Net is not a language. Seems to me you don’t really know what you’re talking about.
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?
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?
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.
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.
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….
I think we .NET programmers should rewrite expensify in .NET and pool together a few dollars for servers to compete with them.
It’s okay guys, just replace “.NET” with “Java”.
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!
I think I speak for all .NET programmers when I say: you can take your job and shove it.
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.
Having observed your attitude, I can see why it’s been “surprisingly difficult” to find anybody to come work for you.
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.
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.
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.
LOL, I just realized the search on your site is powered by Bing… I believe this is what we call irony.
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.
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.
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.
.NET is a framework, C# is the language and it’s a pretty good one as far as compiled object-oriented languages go.
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??
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 🙂
@dave:
Perhaps if he mentioned that instead of pretending to be technically elitist then maybe I could take him seriously.
@dave Funny that you think binary is a programming language. Looks like your intelligence is on par with this company.
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.
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!
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?
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.
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.
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.
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….
“.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.
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.
You’re a PHP shop. You get to criticise other peoples’ platform choices.
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.
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.
Never have laughted so much =D
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!
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.
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.
.net is not a programming language. I’m not a .net gyu I hate it, but its not a language.
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.
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.
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?
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.
@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.
Haters gonna hate
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.
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://news.ycombinator.com/item?id=2370022
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!
FYI .net is not a language.
Just saying.
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…
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.
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.
… 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.
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/
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.
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.
Do you manage to hire any programmers in the first place :).
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.
“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
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.
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 …
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
.Net isn’t a language. Perhaps you should familiarize yourself with it before making assumptions about what it is, and what it is not.
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?
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.
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.
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.
Use the best tool for the job.
That’s a little advice for the tool that wrote the blog.
What a crock. I’ll put my MVC/C#/SQL Server against your LAMP any day
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.
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!
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
Sounds like you work for Burger King 🙂
All of your rant reeks of ignorance. I used to be that
way too 6 years ago living in a Unix only world and knowing
only superficially about what .NET was. Now I know better.
You have some catching up to do on what the .NET platform is
and what are the parameters of measuring a platform.
Think, investigate and learn before you write; is my recommendation.
You got two out of three right when you said .NET and Java are limiting, but you left out XML (still mostly a solution still looking for a problem).
That would have given you a trifecta 🙂
Just as .NET is both a lock-in and very restricting, and Java violates both “lean cuisine class hierarchy” and “objects if necessary, but not necessarily objects”, the “we’ll just use XML” mantra deserves to die. Good thing that XHTML 2 was killed by the W3C 2 years ago; bad thing that people still haven’t read the memo.
(and for those who are going to attack me, data is data. Let the task dictate the data exchange format, the same as it should dictate the other implementation details. For many tasks, XML is the least portable format).
definition of “good programmer”:
– one who can program in a few languages already
– one who can learn new languages quickly
– one who doesn’t discriminate on the platform and language being developed with
– one who can use the F1 key efficiently
A good programmer will learn whatever language they need to learn. If C# is the only language that a programmer knows, then this is potentially a serious problem. If a programmer knows C# in addition to many other languages, this should not be a problem.
I think the right tool for the right job works, given certain jobs can use a variety of tools (perl, c, php, java) and some can’t (Flash Actionscript?)
I’ve tried my hand at various languages, and it always comes back to C for performance (client or server,) PHP for dynamic websites, Perl for *nix backend scripts, and Java for anything that needs to run on the client, regardless of the client, performance not a concern.
My programming pet peeve is ‘frameworks’ and ‘libraries’ that run on top of presumed libraries, creating a dependency hell. Perl is hideously bad at it, and so are a lot of C/C++ programs that do hardly anything at all (why does a graphics manipulation widget want the entire x11 library?)
In my opinion, like with the blog’s original topic about .NET and Mcdonalds burgers, it’s better to learn what those “helper” libraries and frameworks actually do, and avoid depending on them every time you need to do X.
I’ve had to write VBA before, and also wrote stuff using various macro languages and even Jscript/Wscript, and a lot of it feels very constrained, but the tools I wrote were to accomplish a task that the customer-service representatives were taking a long time doing, and could only use what was on the Windows PC already (eg VBA inside MS Excel, or Wscript.)
What an appalingly ignorant opine! This is based entirely on your so called “evidence” that is based solely on language usage statistics, but not on WHY those people do not chose .NET.
The .NET Framework has quite a steep learning curve, possibly giving the stats you’re refering to the skew towards other platforms.
As for the “you’re stuck with the tools you’re given” argument your is peppered with, you couldn’t be more mistaken. .NET does NOT automate everything for you, nor does it lock you into using its class library or controls. It is no different than using C/C++ or any other language that doesn’t target the CLR.
Just like any other platform/compiler/environment, you are given a base set of libraries/tools that handles basic tasks. If something doesn’t fit your needs, you’re most definitly NOT stuck with using it. You have all the same freedom of coding your own classes or using any third party libraries as you do with C/C++, or whatever other language you chose.
Your piece shows a very ignorant and close minded approach to the .NET Framework and it’s managed languages. I’ll even go so far as to say that it shows a complete lack of understanding coming from a total lack of experience using it.
I would have expected more openess and research from a startup, and even more so from the CEO of one.
A couple of points:
1. Successful startups that use .NET do exist. One prominent example: Stack Overflow.
2. What would you say to an ALT.NET developer? ALT.NET is a large sector of the .NET community that isn’t satisfied with the status quo and wants to find the best, most agile way to do things. The ALT.NET philosophy is to reach out to the wider community — Ruby, Java, etc — to see what works and what doesn’t.
What you want to watch out for is not so much .NET experience itself, but an absence of experience outside .NET. Another good indicator is Steve Yegge’s Five Essential Phone Screen Questions (http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions).
Wow, I’m impressed by your narrow view of the world. It sounds like you believe that every startup is a web-facing startup. It’s not. I work for a startup. I program using the .Net framework, and C++, C, assembly, php, java, etc. Why? I use the right tools for the right job.
I work on a wide array of products, hardware and software. Embedded and desktop. Only a few are web-facing.
Why in the world would I use C++ to write a desktop application when I can cut down the amount of time by 60% by using the .Net framework. For cross-platform development, it’s different, I use common frameworks between OSX, Windows, and if need be, Linux and FreeBSD. It depends on the requirements and the end-product.
Oh, and if the .Net framework doesn’t quite do what I need, no problems, there’s always the interop layer, writing code in C++ and even assembly if need be, then using the .Net framework for the front-end.
The you SHOULD be looking for is the dynamic nature of the programmer, not what framework they used. Yes, I started programming back when I was in grade 5. I like to embrace different languages, but I tend to choose them based on efficiency and time-to-market. By discounting .Net, you are simply showing how narrow-minded you and your business are. I’d love to work for a startup, as I can wear many hats and help establish standards, and grow various framework extensions that make the company unique.
I never put down a language or framework IF the person who chooses it can justify why it should be used over others. To me, .Net is more valid than anything out there IF you want fast time-to-market and target a specific platform. (Yes, there’s mono, but it still lags behind the latest .Net offerings, in that case, I’d weigh the benefits of mono versus other cross-platform frameworks, and try to find the most efficient path).
So really, I’d question your bias for looking down at a .Net developer, as you’re probably filtering so very good programmers:
“Look, this guys been programming using all of these languages, excellent experience, but why did he/she choose .Net… That’s a negative”. Sorry, I’d look at that as a positive in certain situations, that it was chosen because of efficiency.
But if you’d state that .Net is relatively new, and someone who graduated with only .Net experience, ya, ok, I can see some argument there. But you can’t really discount this programmer either. You need to see how this programmer thinks. It may have been a desperate situation, etc. that caused him/her to only do .net programming.
One negative that I had is that I started on the Motorola processors, way back in grade 5, instead of Intel.
I wrote in assembly, understood optimizations. Even now, in embedded programming, I need to know the architecture before I write code, and how the compiler optimizes, as the compiler is more efficient in certain handling structures and code flow than others. I also learned on the Microchip PIC, and the Atmel AVR and the ARM and MIPS. Do you see Itel there? Nope. Why? Because Intel offers optimized libraries and tools for math and parallel programming. I have to pick my battles and get a product out sooner than later.
I also had to do design for FPGA’s and CPLD’s. Why, because it was a startup and they needed to establish themselves. What did we do? Purchase IP from the vendors. Why? Because it was faster to get a product out. By your way of thinking, I should have developed the libraries myself to really understand the inner workings. Well, I did and that’s why I decided to purchase the IP because I wanted to make sure that the product worked the first time (don’t have the luxury of sending updates to a device that will never have a connection to the internet, let alone a usb port) and the effort can be put into developing value added features that would put this product over the top.
Wow. I can easily keep writing…
To be honest, I think it is a mistake to single out .NET developers. People with Java, PHP or Javascript experience are as likely to be unfit for a start-up.
What I usually look for in a resume is a jack-of-all-treats with a wide experience ranging from bare metal verilog through compilers to html/css.
Unfortunately, most recruiters are barely technical enough to understand that C++ and NetBeans are like apples and oranges. As a result, candidates are usually forced to create an artificial “career track” profile that fits the mold and every resume I see looks the same.
Another side effects of middle-men and “filters” is that the most talented people that come in contact with your business will judge quickly that they’d rather go somewhere else. Hell, those guys have plenty of opportunities to choose from.
I thus devised a very simple method. If hiring is the top priority for the quarter, you get your best senior technical people on it. No coding for a month. Conferences, beer, party and mingle full-time: “Find me those talents you won’t be worried when they touch the code repository”. There is no substitute.
“You can still do 1.7oz berger if you want, since you can handle majority of the stuff client side through webservices.”
What’s a berger? Do you mean Mr. Berger, your CS prof? And what the hell does “…client side through webservices” mean? Think about that for a minute, and when you cannot figure it out, you’ll understand why .NET programmers are lost.
Mate, you should actually take the other half of your time and actually understand the lie of the land with programming languages, and what writing code in Visual Studio actually means. Having worked in a .NET/Javascript front end, Perl middleware, Oracle backend company for the last 7 years nobody has made anything by “clicking a button” to make it happen. Our people write real code. Let us know when your programmers are supporting a company worth a couple of billion dollars.
I started programming before most of your programmers were twinkles in their respective parents’ eyes. Ask they what punched cards are, or flowchart templates, or how about the once ubiquitous EBCDIC card? Yes – this was before PCs even existed. I’ve been programming for over 30 years, and to be honest, I’ve done a lot of stuff I didn’t like. I’m doing .Net right now because that’s where most of the jobs are. This equates to “beans on the table”. My first “PC” was an Atari 400. My first compiled PC program was written with Turbo Pascal for CP/M on an Apple2. My first paid programming job was writing CMS-2Y for a AN/YUK-7 computer as a Navy contractor. I went on to DBase2 (CP/M again) Turbo Pascal for DOS, and then to C++ for DOS/Windows. For the last four yars, I’ve done nothing but .Net, but have touched ASP, Silverlight, Flash, and WPF along the way. If the job calls for it, I do it. THAT is what makes a good programmer.
I think I understand where the motivation is, but I think the method is wrong:
I’ve started programming in assembler on the 8bits and today I’m constantly shocked to find programmers that have no clue about how a computer really works; yes, they can program and patch things together, but they really have not idea how things really work at a low level; this affects the quality of the code, the architecture choices, etc.
Yes, it’s an alarming problem and the popularity of frameworks such as .NET is only helping it; but let’s not forget that .NET is also a very good tool for productivity and the best programmers also know how to not waste time to write something that a framework already does for you.
So, the intent is good: finding the true good programmers; it’s the method that is not good.
“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”
Phil, I agree completely with you except for a small detail, and well the first clause of your comment.
What he is looking for are not “coders”. He can and wants to miss out on them. He is looking for people who can think and are passionate about code, the design behind it, and life in general. It is a particular mindset he is grooming for his projects. And I agree completely with him. Before the release of Vax/VMS I had the best failed interview of my life. David Cutler declined to hire me because he said he had the design all done, and he needed coders, not people who could think.
So sure, if you have a great architect in the wings and marketing has laid out a flawless MRD, and some brilliant team lead has polished off a functional spec that the architect says meets what the MRD specs and falls into the overall product design path, then, sure coders are a great asset. But if you’re a small company and doing projects where people wear more than one hat, well then, you are just asking for trouble hiring “coders”.
Hey CEO man – you should take a look at http://validator.w3.org/check?uri=https%3A%2F%2Fwww.expensify.com%2F and ponder the fact that the people you have so far hired to do your website can’t even write proper html.
It would be sad if it weren’t so funny 🙂
*facepalm* If I were one of your programmers, I’d be mortified.
I’m *not* a .NET developer, and I have to go with the “you’re a moron” consensus. If you were planning on hiring the best programmers on Earth, you just blew it. No decent programmer will go to work for someone who holds such strong negative opinions based on vastly incorrect information. Programmers (like most folks) want jobs they can be proud of and boast about, not be embarrassed in front of their peers by sheer idiocy like this blog post. They want to work for folks who have some concept of what they do and how they do it, and it’s obvious you don’t have a clue.
I completely agree. I have a general rule of thumb for developers that work for me.
“You can only use a class / library if you could write it yourself”.
For example, I see developers find a jQuery extension and it doesn’t do something right, and their mindset it just to find another one that works and they spend hours trying different extensions. When in fact, they could just edit a few lines of the code to fix the problem.
I’m a embedded systems developer. I understand how to mate hardware and software an develop applications with real-time performance on small MCUs with very limited resources. About two years ago I thought it was wise that I learn C# and .NET just to make sure I had marketable skills in the workforce. I happen to like working with .NET just as much as the metal I work with on small MCUs. With an attitude like yours I wouldn’t dare work for you.
Without repeating what most of the people commenting have already said, your idea on what .Net is seems kinda wrong.
I have been programming in C# for sometime and in PHP before that. I love the power behind the VS IDE but from what you’re saying, it looks like you are just talking about (ASP) .Net websites. I will admit I would rather program a website in PHP than ASP .Net but its not due to .Net being inferior, its just personal preference.
Every application I make for general desktop computing, I use C#. I don’t use it for it’s “simplicity” but the productivity gained. Visual Studio is one of the best (if not the best) IDE you can get and C# is a great language.
I would quite proudly put .Net experience on my resume for the simple fact that it is a great platform. Depending on the job however would be if I put PHP or C# first.
So in summary, I would program desktop applications in C# and websites in PHP though I have nothing against .Net Websites.
Maybe he just hates MS? o.O
Using .NET can make programmers lazy. But, it doesn’t guarantee that every programmer that uses .NET is going to be lazy. That would be over-simplifying the term programmer. And, that is the problem.
He oversimplified the label. There are all different kinds of programmers. A proficient .NET programmer is just as much a programmer as a programmer who can proficiently use any other language or languages. But, what this guy wants is someone who has no real affinity for any one language. He wants someone who has an affinity for the right solution and the right tool for the solution.
He inadvertently insulted all kinds of programmers of all levels of ability and experience. I would imagine that those who were incensed with his lack of tact are those who look for the right solution and the right programming tool for the solution. And, I imagine the people he was actually talking about in the article never even knew the article was written.
Forgive the guy and go on.
It is ironic. He wrote the article about a situation that bothered him as he hires programmers. But, he posted it where a bunch of programmers would read it. It was the wrong audience. And, the audience that did actually read it likely has none of the people he is complaining about in it.
And, you call yourselves programmers . . . That is unbelievably ironic.
The negative response to the post goes to show that people who live off microsoft don’t know how poorly executed their entire product line is. dotNET as a framework is much like java: for those who want to be programmers but don’t want to do the hard work to be good programmers, or excellent programmers. I’m a security engineer and all (ALL) microsoft products represent a perpetually sadistic game of whack-a-mole. I wholeheartedly agree with David here. In my experience, the great majority of developers and QA people have a dismal understanding of computing and networking in general, there’s little to no foundation on the technologies for which they are developing software. Case in point, I had a developer who was hired to write a mail composer (in .NET) but didn’t know the very basics of SMTP (he learned that it runs on port 25 from one of my junior guys), I have other geniuses that have no concept of DNS, TCP/IP, HTTP protocols, but yet they are developing “web services” and “server side applications” as some of you have griped about here… you know what? on second thought, yes, please learn all the .NET and microsoft crap you all can: that is job stability for me.
It appears that most of you suffer of the very evil for which you blame this blog writer: bigotry.
This man clearly states that, for STARTUPS, .NET is not the best choice and an (almost only) .NET developer might not be a good fit.
For you, as people trained to trace logical flows of your domain, it is a shame to be blinded by your emotions as you read a simple article which is no ‘assembly’ but a ‘high-level’ weekend outburst. While you blast him for using the word ‘language’ for the .NET platform, please be informed that the dollar is the ‘lingua franca’ of the financial system – as a figure of speech, .NET is the ‘language’ of some people. Some only understand and talk programming through the .NET platform. He was liberal about using the term and you are too blind to see that he’s not that stupid after all.
So yes, if any one that is hiring is reading this blog, should take note of the names posting their vitriol here and make sure their resumes will be quickly discarded for irrational behavior reasons.
I repeat. This man clearly states that .NET on a resume does not disqualify a person – a .NET only person does. He also says that .NET for startups is no good.
Shame on you all.
(A programmer hobbyist)
First, thanks for the comments at the end. I think that really does help clarify your intention that startups, especially in disruptive technology spaces, need a different set of skills and thinking.
I do think you are a bit harsh on .NET developers, since I do know quite a few who are proficient in other languages, do their best not to stay trapped in the Microsoft ecosphere, and generally stay broad. However, I bet those guys and gals know who they are and don’t take offense to your post at all.
I used to work for Microsoft. I’ve spoken at MSFT conferences. I’ve been involved in popular open-source .NET tools. Oftentimes to succeed in .NET requires a significant commitment in the ecosystems around it. What new IDE update, or Data Layer Mapping tool or fancy widget is out now? How can we spin up our SharePoint enabled Web Parts which are Windows Phone Capable to be deployed on Azure? It’s an all-in buy-in to be successful.
I was a little surprised (though I shouldn’t have) to see people commenting about the enterprise space. People start companies to do *better* than the enterprise space. Sure, you would use .NET (or Java) if you were targeting the enterprise space. But you aren’t. You are trying to outmaneuver the bigger players to achieve something they couldn’t. Diesel engines are great for giant ships too – put you wouldn’t put a giant diesel engine in a speedboat if you were a pirate just because “the big ships use it too”.
I’ve always looked at Microsoft as a company which lets you build applications which can then be taken over by anyone, with tools you can pop someone in a week of training to get an overview of, and then monkey around in. Heck, there are groups at MSFT which you can pay to support *your custom application* and they’ll train engineers on it, and fly them out if something goes wrong. I know – I was a part of a team which was dropped shipped when things went really wrong with .NET applications. It’s an amazing devotion to customer support – and completely not what a startup would be looking for.
So while I do feel your original post did have the smell of a “high on the horse” writing, I understand that some startup companies can’t rely on people who have only been trained in “enterprise”. Which, as you pointed out, doesn’t make them bad. Just not a good fit for you.
I run / wrote a site that serves approx 500,000 page requests a day, 5-10 complex SQL queries a page, god knows how much SEO related intelligence, 100,000s of users, external network comms.. the list is long.
I’ve been programming for 29 years, since I was 6.
ASP.NET is crap, .NET is mostly fine, C# / LINQ are incredible.
But you sir, are a moron – and most probably new at all this.
Ignorance. .Net development is faster to market than any other language.
Fundamentally what you are saying is that the .NET ecosphere has tools that make many things easy if you use the facilities provided. That many people who use .NET sometimes choose to do it that way. Ergo anyone who used .NET takes the easy path.
Well, I think you’re just intellectually lazy. Maybe your muscle supplements are constricting the flow of blood to your brain, or whatever.
The simple fact is that like any toolset, you need to know what your business objectives are, and what toolsets are available, and what the best fit is.
The fact is there is nothing you can’t do with .NET. You don’t have to use the frameworks it comes with, you don’t have to use it the Microsoft way. You’re perfectly free to go down to the metal if you choose.
Haven’t you heard of unmanaged code ? Platform/Invoke ? C++ ?
Frankly you sound like a coder snob who is to hung up on technology to look at the business. Maybe you have some advantages in building left field bespoke systems, and maybe you could do better by architecting your systems out of McDonalds hamburgers.
I think you need to find a quiet corner where you can sit and think a bit.
Nice analysis! Knowing which language isn’t the most important thing, but knowing the principal is.
1. I agree with you that programmers need to be able to get down to the nuts and bolts of whatever language or framework they use. The cookie cutters that use .net or j2ee or whatever that have to run to more knowledgeable developers when tab A doesn’t fit into slot B are not very useful.
2. Real programmers understand how to program and can learn whatever platform or language is necessary to whatever detail is necessary. The ABET accredited University degree I earned went from assembly all the way up and I graduated knowing how to program irrespective of the language used, and that has served me well for the over dozen languages I have had to use in the jobs I have had.
3. A real kitchen has better food and better cooks than MacDonalds. A real kitchen cannot handle the volume of customers that MacDonalds handles. For your startup to grow, at some point you will have to select a framework or write your own (because you can’t keep rewriting the wheel). That having been said, if you write your own framework it will likely be a niche product used only internally. As a professional developer, I use whatever my job requires, but on my own I keep up with the major frameworks and languages and I don’t spend a lot of time on niche products. .NET and Java rule the world and that is where I spend most of my time in order to keep skills current and improve new job possibilities. I have used Perl and Python and PHP and I like them, but they are too niche for me to put them on the top of my priority list. Nichiness is also the reason I have not touched Ruby or NoSQL or ColdFusion. And I frankly will not consider a job that is mostly working with a niche language or framework as I consider it a waste of my time and skills and not a resume enhancer.
It does make sense that very few start ups will use .NET or any MS technology in general. So… if a recruiter is looking for someone with experience directly applicable to the platform in use at the start up in question — then .NET experience probably isn’t going to be a good match.
On the other hand, going from .NET to Java isn’t a big stretch. And going from developing databases, web services, web sites, internal tools and really anything else in .NET to most other platforms out there — really isn’t going to be a big stretch.
Then again, I’m talking about someone who is a developer first, and a .NET developer second. There are other types, but they aren’t all using .NET.
Wow, it looks like every .NET developer was sent a mass email saying to complain about the original post!
Contrary to what most of the .NET folks have said, I would have to wholeheartedly agree with the original article. For many years I was actually a big fan of the MS dev tools, using C/C++ on desktop, server and mobile platforms. When .NET was introduced, my job was evaluating development tools and platforms for several different clients. Here are some of the things that I found.
1. It is not the job of the development platform to protect the developer from stepping on his own toes. If you are not competent with things like memory management and pointers, you don’t have any business being a developer, period.
2. A development tools should be exactly that, a tool. Programming by GUI means that you have to design your application using the same paradigm that the tools vendor thought you should use, not the one that fits your needs. (Note: A lot of my work has been developing first generation intelligent machine applications that don’t fit any of the tools vendor models)
3. Runtimes (JVM/.NET) and programmer protection schemes will, by design, limit what you can do with the tools and languages. Just spend a little time with PInvoke.
Finally, and most relevant to the original post, a startup company has more to think about that just the coding task. Unique and novel applications are the bread and butter of those in the startup world. To be successful, the startup has to answer an important question: What are we doing that makes us unique and more valuable than a competitor? Using a 10-ton development platform and 3rd party libraries probably isn’t the best approach if you want your technology to have any intrinsic value. As an example, go look up “Mellotron” and find out why it was never patented.
For all those .NET fans out there slamming the original post, you seriously need to educate yourselves on the realities of startups and technological property. It also might not hurt to go find out what is really going on underneath the covers of your favorite platform. If you can honestly research these, it might make you a better developer on ALL platforms, including your favorite.
Disclaimer: I have extensive experience in DOS, Windows, Windows CE, PocketPC, Windows Mobile, OS/2, Linux, UNIX, DOS/VSE, LAMP/WAMP, and multiple real-time operating systems. There is no such thing as the ‘best’ development platform or tool. Conscious thought is required in ALL cases to determine the best way to proceed. And most importantly, you MUST remove all bias toward any platform when making these decision.
DirectX uses a left-hand coordinate system because it was originally written in Europe and called Rendermorphics. Historically in 2D drafting (or ‘draughting’ in Europe) The US and Europe laid the three principal orthographic views (Top, Front, and Side) on the paper in differing layouts. The US layout featured right-hand rotations to go from view to view, for example the translation from a Front view to a Right Side view requires a 90 deg right hand rotation of the object. The European standard used left hand rotations and had a layout that was essentially mirrored relative to the US standard. Go look at blueprints from WWII and this difference is quite noticeable.
So, while the blog author would like his implication that right-hand rotations have been the standard “since the dawn of computer graphics” he fails to understand that the standard predates computer graphics, and computers in general, by quite a number of decades. That a European created 3D library uses left-hand rotations makes sense when you trace the history of how graphics standards came into being in Europe.
Of course, any decent graphics programmer wouldn’t worry about the orientation of the rotations in a library. They’d be skilled enough and driven enough to be able to adapt. That this blog poster/CEO makes the rotation direction of DirectX an issue, as if it goes counter to the way he’d do things, makes me wonder if he really is as adaptable as the people he claims only he would hire.
His set-in-his-ways attitude regarding his views of DirectX being wrong and his inability to do simple research regarding the reasoning behind the DirectX rotation system bring into question his other statements in his blog, like his incorrect simile for the .NET framework and his blanket statements regarding the degradation of computer programming skills relative to the time someone invests in learning and using that framework.
All of this makes me consider that I would not want to work for the author, as I’d always wonder if he was making the best and most informed decisions for his company.
I kind of get the point, but slightly disagree.
I’m one of those “started at 13, wrote optimized assembly texturemapping innerloops at 16” kind of coders.
I’m experienced with every kind of Basic, Pascal, (ANSI)C, C++, php, java,Maya MEL, or whatever language I encountered along the way.
I’ve worked in the game-industry for 8 years, had a 3 year break in the financial (high-frequency trading) industry, and I’m back at games now.
And yes, I like C# too.
Why ?
Because I have a lot less spare time now than I used to have 10 years ago, and for my home/hobby projects I don’t want to spend all my time (re)writing libraries for basic tasks.
For my own projects, that need to be up and running quickly for me to be able to keep my attention-span on them, it’s great to have a language that enables me to actually *deliver* working stuff quickly.
And whenever I have the need for performance, I can go back to C++ or even ASM.
I’d say the right mindset for a programmer would be : “find the tool that gets you the results you want, in the most efficient manner”.
And sometimes that isn’t writing everything in ASM, eventhough I thought so 15 years ago 🙂
Frameworks are meant to reduce the time spent on writing repetitive code. Frameworks are useful for punch out a lot of code in a short amount of time.
Real programmers aren’t stopped by frameworks that don’t have quite the right control or the right function–they write whatever it is that they need. Then they publish it to a code repository so other programmers can use it too.
Real programmers are also not limited to a particular framework or language and will learn whatever they need to get the job done.
So if I work for you and don’t get .net experience or java experience, what other jobs could I get with the experience I get from you?
This might be the dumbest thing I’ve ever read. It’s completely wrong on a technical level, and totally incendiary. It almost sounds like racism, just substitute an ethnicity for every “.Net programmer” mention in the article. You really ding people because they mention .Net in their resumes?
Does your board know you wrote an article like this? Because everyone that reads this is never going to use your product out of pure antipathy for you, CEO.
“But choosing .NET is a choice, and whenever anybody does it, I can’t help but ask “why?””
No, it’s really not for most people. In the real world, a programmer doesn’t pick the language their shop uses. It’s determined by management, and it’s generally fairly consistent.
A lot of the developers who “choose” .net “choose” it because they’re really choosing to have a job. Given the option between working in .net and being unemployed, this is a really easy decision.
The rest of the post is so ridiculously stereotyped nonsense that it’s not worth a response.
Anyone can tell right off hand that this is BS…otherwise the rest of the script-kiddie languages (Python, etc.) that rely too heavily on the standard library would raise a flag too.
Your follow-up edits show more ignorance – showing start-up elitism; thinking that there is something about a disruptive idea that needs unconventional computer programming. You sound like somebody that has never programmed or developed large scale systems.
Every good CEO knows that computing isn’t some magic voodo. It’s mostly about time-to-market without sacrificing quality (scalability and modularity). It’s about establishing a good abstraction layer so that your solution developers can be as productive as possible.
.NET is great for this – it’s support for native code support is far better than other VMs. Support for pointers in C# and unsafe constructs allow programmers unchecked access when they need it. Try that in Java without cracking out the JNI.
If I were an investor in your company this post would have me seriously worried – where programmer experience with productivity is misconstrued as weakness.
First observation (merely an oversight, I’m sure)… .NET is not a LANGUAGE, it’s a PLATFORM (a particularly devious one to which I would sooner cut off both hands before subjecting myself to Microsoft’s infernal bug-fix shedule).
Second: Being a Linux programmer does not make anyone a “great programmer”. Indeed, some of the worst code I’ve ever had the displeasure to lay eyes on has been produced for Linux. Now, that’s not me suggesting (by any stretch of the imagination) that ALL Linux programmers are the authors of such atrocities… but it does lead one to wonder: Do “Linux-ONLY” programmers become so because they lack the skill necessary to conquer the Windows platform?
I’ve developed for so many platforms it makes me wonder why I bother to learn them in the first place! When I’m making a server solution, Linux is the obvious first choice! It has (in my estimation, at least) the largest “market share” (even if Linux is born on the tradition of ‘everything being for free’, making it virtually impossible to market a product for).
If I want to make something to appeal to your average “know-nothing” Mac user (the kind who have no interest in computers, thus their decision to buy a Mac in the first place)… Mac OS is obviously the only choice.
If I want to make something for the professional, “advanced” or Gamer/Desktop market, there’s no alternative to Windows. As much as I love Linux (and would love to make it my primary OS across all of my development systems), it simply lacks the market share necessary to warrant the investment of my efforts.
I contribute to open source (a quick glance at my website shows a myriad of open source and freeware projects I produce)… but generocity only gets you so far before the repo man takes your stuff and you end up on the streets. Trust me, it’s not possible to write software using twigs and bricks! I’ve tried, and other than a mundane game of Asteroids (or possibly Pacman if you’re imaginative enough), Analogue medium simply isn’t up to scratch.
To the topic itself… I loathe .NET with a passion! Not just because Colleges and Universities have begun only teaching .NET to their students (at least, here in the UK) rendering them useless when it comes to doing anything as difficult as cleaning up their allocated memory manually (God forbid a .NET programmer would ever invisage such a thing). I hate .NET because Microsoft (in their infinite capacity to over-market their crap) has brainwashed foolish businessmen (with no understanding of software development) into believing it’s the ONLY choice.
I develop software for clients… you would not BELIEVE how many times they proclaim (ignorantly) that it MUST be produced in .NET… thus resulting in me hanging up the phone, or returning a simple “well, find someone else then!” e-mail. It’s becoming pandemic!
Worse-yet: These so-called .NET “programmers” get paid to produce products for a client, do so and deliver. Now, when (as invariably happens) a bug occurs in that program, how do they explain to the client that the bug in question is not a result of their code, but instead of Microsoft’s .NET platform? How do they do that without sounding like they’re making excuses for their own incompetence and inability?
It simply isn’t possible!
Used to be there were “the big three” platforms: Windows, Linux and Mac (in that order). Now you get platforms coming along as part of some “fad”… a passing-fancy, which those of us who have been in the game long enough know simply WILL NOT last. Things like the iPhone, iPad, iPod… i. Businesses (like idiots) invest a fool’s fortune into targeting these platforms. What are they going to do when the bubble (and that is the ONLY apt description) bursts, and they find that their investments were as misplaced as they were misguided?
My clients hire me (and pay me) to analyze their industry: their market, their needs and their capabilities. That’s before a single line of code is ever concieved. When they mention .NET, I KNOW it will not end well (for them or for me).
Microsoft made (and continues to make) its fortune by superceding their own products. Depreciating .NET enables them to sell more of their development tools. It enables them to control the industry in their favor. A great example is their god-aweful “Ribbon VCL”. Sure, it looks fancy… and I’m sure Mac users will get along with it just fine… but when you actually want to DO SOMETHING ADMINISTRATIVE… the options you need are nowhere to be found! Further-more, their licensing of it is designed entirely for the purpose of prohibiting you (the skilled developer) from producing ANYTHING which could in ANY WAY compete with Microsoft’s plans (past, present or future).
.NET is an extension of that ethos! By constantly changing the platform, by making it impossible to dig down to any degree of lower level, they make it impossible for your products to ever compete with theirs.
.NET developers are playing a fool’s game! It’s so sad I won’t even laugh when the Microsoft Temple of Worship these poor souls frequent crumbles down on their heads.
That’s my million-bucks worth!
I have had to hire programmers at my previous employer. I’ve since started my own company and have had to hire developers. I’d go further than the original article and state:
If you have lots of experience on any Microsoft platform, I probably won’t consider you to be a good programmer. I find that Linux/UNIX hackers turn out to be much better than their MSFT counterparts.
“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.”
Contradition in terms. Now where is the RSS-feed, i want more of this stuff.
This whole thing sounds like the “fresh-outta-school” employee still stuck with the “i-am-31ee7” mentality.
So this CEO hates Microsoft. Wow! Newsflash!
If you choose not to hire .NET people, fine. You can get all the Java/C/C++ folks you need and for the record, they are fine. Positively fine.
The problem is that you’re coming across as juvenile in this blog post. Maybe that’s a good thing. I’ve worked for many a boss who’s very set in their ways and that, in my opinion, stifles creativity. I’ll be sure to strike Expensify from my list of places to apply to (even though I’m not a .NET coder).
My goodness, .NET developers seem a tad defensive. Maybe it’s because deep down they know there is some truth to what’s been written. I don’t agree with everything that CEO Friday wrote, but there *are* some very valid points in it.
To see all the .NET aficionados throw down their pacifiers and scream at the top of their little lungs is too funny.
As for the person who said, “I’ll put my MVC/C#/SQL Server against your LAMP any day”, bring it on, my friend- you’ll lose. LAMP is what more than 90% of the internet runs on, and there’s a damn good reason for it. It’s rock solid, free, and it works very, very well.
Once you swallow the Microsoft Kool-Aid, that’s it- you are indeed locked into their entire tool chain, which is exactly what they intended. No thanks- I’ll stick with LAMP, where I have a choice of what I run and more importantly, *how* it runs.
Cue the flamebaiters in 1…2..3….
Software startups should definitely check out Microsoft’s BizSpark program. Speaking as a member myself, it provides great benefits to entrepreneurs who want (cheap) access to Microsoft tools, and useful business connections.
The author of this rant was significantly wrong twice — both in his initial post, which could be summed up as: “Programmers in the .NET language (sic) have made themselves citizens of an idiocracy; the more time spent in the Microsoft camp, the less ability they will have in development at a low level.” This was, of course, a non sequitur and false generalization. Somebody’s comment about the bell curve above was spot on — there are an absolutely huge number of .NET-focused developers out there, and the top tiers among them could smoke his staff any day in low level programming. Use of .NET makes average programmers more productive (even though I wouldn’t hire them), and it gives many advanced capabilities as good or better than anything else out there for top programmers to fly with (for example, I’d compare C# favorably against any language out there for a wide variety of purposes; and any .NET project can benefit from a “kitchen sink” level of availability of libraries).
His edit with its attempted change in direction and subterfuge was not much better: “Actually, I do honestly think .NET programmers are smart and cool, it’s just that startups don’t use .NET.” Whatever, dude. I run a startup, and I use .NET, among other tools and platforms as suits my fancy.
Reading many of the replies above was absolutely hilarious, though, so I’m glad I found this blog post.
You took internet by storm alright, but, you have said the right things that needed to be said, but noone was dare saying. This should be a good wake up call to the youngsters enrolling in i.t. related curriculum. expect a lot of reaction to this article, but know that you will be changing the way people think.
The choice of tools does say something about the individual. Perhaps this is one imperfect indicator of the type of person who will get along well in this guy’s environment. Doesn’t have to make sense to anyone else. Maybe it works for him.
In my case, I look for programmers that read a wide variety of books. If that variety includes both some science fiction and classic literature, that’s a plus. I also look for someone that listens to many styles of music – jazz, classical, rock, punk, polka – whatever, just so it’s not one kind. If the person also plays an instrument or sings, that’s a big plus. I also look for people that write code in more than one language, for more than one operating system. I look for people that speak more than one human language.
I’ve found that these characteristics tend to be associated with extremely talented programmers. There are always exceptions, but it’s an effective method.
I also look for people who enjoy other activities in addition to creating solutions in software. I look for people that smile and brush their teeth. And I avoid like the plague, people who are emotional, rude, or insulting towards someone who has an opinion or observation that differs from their own. I’ve learned over the years these types rarely write exceptional code.
now you are cool.
Note to self: Don’t send resume to Expensify. CEO is completely clueless.
Pardon me, but this statement is blatantly untrue: “…Microsoft very intentionally (and very successfully) created .NET to be as different as possible from everything else out there…”
Dude, C# is a near complete rip-off of Java. It looks a lot like Java, works a lot like Java, and a competent Java developer can pick it up very, very fast, and develop semi-reasonable business applications, that can even run on Linux.
It’s not about attitude. It’s about aptitude. Flat blade screwdriver, Phillips, square drive, whatever. Given reasonable tools, a capable artisan can build you whatever you want. A capable artisan. Given reasonable tools.
Really, your stupid rant has just ensured that ANY developer with a clue won’t be working for you, because you have shown that you just don’t get it.
(Not to mention, I’d have to be grilling squirrels on a pointy stick to feed my family before I took a job writing code to do expense reports. Yecch. You don’t need “real” programmers for that. Bleah.)
With all due disrespect,
Jeff
Great article. I have no idea if the author is right about .NET or not and I really don’t care, but I am laughing my ass off at how bent out of shape the folks commenting are getting.
I call bullshit.
This article was written just to be submitted to Slashdot to get the Expensify name known.
After all, seriously, did you ever hear of Expensify before this ?
No you didn’t, and neither did I.
But using this article (whether you agree or disagree) they’ve planted the seed in your mind that they are top of the bill, hiring only the best coders.
Quite an achievement for a company that doesn’t produce a product of any relevance.
I code c#. most of my background is c++ then c#.
I think this post is spot on. yep, if you come out of c# or spend a lot of time with it you will likely be a particular type of coder. some lame, many excellent, but there is a culture to it like there is to anything else.
in this case that culture is not seen as a fit for this startup; the slight confusion of self with world aside this is a _very valid point_. Know what kind of people fit with your company’s work style and hire them. a brilliant c# dev would probably hate working there – even though it’s a great company.
Too much focus has been given here to the FOSS v. MS tribal debate. he didn’t say .NET was bad. he said that .NET people would likely not fit at his company. back up before the 1.7oz comment and look at the squirrels. yummy squirrels.
yes a .NET coder worth a damn _can_ cook a squirrel, but they don’t want to. I hate doing code that could be done just as well by a copious set of libraries. I hate working around the limits of the libraries on occasion but I’ll take the occasional poor fit over building everything myself.
he’s looking for feral coders who would, as a first principal, prefer to build it themselves. and he is totally right that they won’t likely be people that code .NET for that very reason.
this should not be controversial. it seems many people are taking offense to the assertion that they are not all things. I would extend the statements past .NET to any DRY approach ( django possibly excepted ) unless the person is a contributor on the DRY project.
.01
/m
Want to rail on a platform, fine. There are a number of reasons not to want to use the .Net platform not the least of which is money, but to insinuate that anyone who would actually use .Net is not worthy of your little firm is very shortsighted. There are a number of reasons to program for .Net not the least of which is that it might be getting you you and keeping you employed.
While I no longer do it as a profession, I was a database developer a number of years ago who sejob it was to tune databases and clean up developer code. I can say without a doubt some of the worst SQL I have ever seen written and database concepts used came from C++ and PHP developers, but really it knew no language boundary (VB, Java, ASP, C++) all of it bad and wasteful. However, I was never ignorant enough to believe them to be poor programmers because they wrote poor SQL. I saw their code and it was quite good and set-based programming is a different way of thinking. Ultimately, most of what they wrote was done that way because either A. that’s how their shop did it or B. they did not have the time or someone had never shown them a better way. Once I completed my tasks I would do code reviews and show them better techniques for database development. The best ones were very appreciative and got better at SQL development and interacting with DBs because they were willing to listen and learn.
The moral of this story is: a good programmer will use the tools that are dictated to them or what’s around them to do the best job possible. A great programmer will do all that and listen to advice and given an even better solution.
Its very easy when sitting inside a start-up to believe you have all the answers. There are less then 30 people who have all similar thoughts and experiences. These characteristics can breed teamwork, focus, and determination, but it can also build myopia. Hopefully, these comments both here and on Slashdot have injected some different ideas and given you something to reflect on over the next few days. By reading the comments and exposing you to different points of view(only you can change your hiring behavior) this episode should make you a better manager.
Your ignorance is astounding. DotNet is nothing more and nothing less than a language run-time and corresponding set of frameworks and tools for getting stuff done in a Windows environment. And the McDonald’s analogy is just plain idiotic. Anyone who has spent a non-trivial amount of time writing code in a DotNet language will testify that you can, indeed, “cook” any goddamned thing you want in the DotNet kitchen. Absolutely NOTHING forces you to use Microsoft’s prefab libraries, if you don’t want to. Conversely, plenty of folks who write code in more “acceptable” languages/platforms are lazy bastards who have no concept of the underlying complexities of their chosen tools. In short, .Net on a resume should do nothing whatsoever to bias your view of a candidate, one way or the other. Skill is, for the most part, language-independent.
This blog post should, however, serve as a big red flag for anyone who might consider interviewing with you, no matter what their their chosen programming skills.
I will not work for a CEO that doesn’t know the difference between a “showstopper” and a “dealbreaker”. And if you’re a VC you’d be daft to invest in one.
“why do so few [startups] use .NET?”
My guess would have more to do with the costs of Windows Server licensing and the Visual Studio IDE than with the capabilities of .NET or C# (of which the above post demonstrates an extremely limited understanding).
Microsoft .NET is not a language. It’s a platform.
Do you not know the difference?
Now in my world as a Product Manager for both very successful mature companies and up and coming start-ups I have see a lot of different developers, engineers, etc. I have been a fan of PHP despite is misgivings and major security flaws. However to think just because people have learned another discipline, one that is really good for making money, they are not good developers?
Wow that is like thinking there is no way an idiot can become a CEO.I have met my share of poor CEO’s, but if you are anywhere close to what this article makes you look like then you may be the worst I have seen.
Hopefully you can run the business better than you can write blog post.
Awesome, your .NET cooking metaphor summed up my position on Java programming beautifully.
I’ve never touched C# or any other .NET shit, but I’ve been told it’s extremely similar to Java, only by microsoft instead of sun, so I guess all the same apply.
“However, if you need to make a 1.7 oz burger, you simply can’t. There’s no button for it.”
The point of this silly rant seems to be that the higher the level of abstraction, the worse the programmer is – presumably the ideal programmer is one who has never worked on anything higher-level than machine code.
Also, there’s a bizarre assumption that programmers who’ve developed on .NET or another managed language platform are somehow contaminated, and all of their other experience working on C, C++, x86 assembly or whatever must have been forgotten.
It’s not clear to me from this nonsense that the writer of this article has ever written any worthwhile code himself.
“Instead, we look for a very different sort of person.”
Right, 5 foot tall knife-wielding ninja programmers who think using jQuery is somehow nobler and more pure than C#. This is why I loathe interviews – way too many idiots advertising for programmers out there.
I’ve worked for some and with of the biggest, most successful and most interesting companies around. I’ve also worked as a programmer for some very small startups.
I agree with the poster that the best programmers tend to be very passionate – but the best programmers are the ones who are passionate about *programming* and about technology – so selecting for people who can program AND have great post-apocalyptic survival skills seems kind of counterintuitive…
But this is, of course, a two way street – and I’ve known a lot of remarkably clueless managers who think they’re technically savvy – but keep picking staff who fit in really well – but are insanely expensive or just plain incompetent… usually because they themselves were picked for their fit and not for their polish.
For example, as several people have already noted – .Net isn’t a ‘language’. It is a platform which supports MANY languages – perhaps you ARE confusing it with Java or Objective C. Good .Net programmers aren’t restricted to the controls and features which are included in the core Assemblies – they can build their own… and that could be a test you’ve missed – because obviously, you have a bias and not knowledge.
I could go on – but clearly – I’m not a programmer you’d want and you’re not a manager I’d want, so in the end – your test works perfectly…
For both of us.
I think the reason some people thing you are off base is because they have themselves failed to grasp or gone down the wrong track. They refuse to believe that they are a failure in coding circles. Using .net you get that cheap burger which is so desirable initially, but later pay 10x as much for having used it. It’s an expensive lesson few learn until after the fact and many never learn having failed to actually master the other tools.
So first you ask us to find one example of a startup that uses .NET as a platform and then you go on to use Joel Spolsky as an example? StackOverflow comes to mind as a perfect example of a startup running Windows Servers, using .NET that is very successful. Also just so you know, you can use Mono which is an open source variant of .NET to run on Linux and Apache which would be very similar to a PHP setup. Not sure what exactly you are trying to weed out here, modern object oriented languages? Sure you can stick with your legacy languages, and hire those old school developers who don’t know jack about infrastructure but can tell you what 945 is in binary in 1 second. How is that going to be useful in building a website that performs under load? Give me a break, seriously! Any jack ass can learn a language, any language! But fully understanding design concepts such as Inversion of Control, Dependency Injection, Single Responsibility Principles, etc. is an entirely different story!
This post sounds similar to something I said a long time ago about Java programmers. Fine people. Fine programmers – within their own very limited paradigm. Of course, since then, there has been a slew of interesting languages come out to run on the JVM, disproving the whole idea.
I’m not aware of .Net having had any such revolution but then, I don’t pay much attention to .Net. I find the Microsoft environment too top heavy and too … claustrophobic? But maybe .Net, too, has the potential to grow beyond itself and beyond the reputation of its coders.
About the company and the CEO:
“David Barrett founded Expensify in May 2008; Witold Stankiewicz joined him in August 2008, and together they launched an Alpha product at TechCrunch 50, taking home the “DemoPit 2nd Place” prize. In March 2009, they launched a Beta version and demoed it at FinovateStartup 2009.”
There are so many in the IT world that are misinformed and spreading FUD. For the most part we can ignore them but at the same time, let’s also provide some informative responses.
I posted the profile of the site Expensify because I am guessing the CEO is a young startup person that has limited experience. Working for or started something in 2008 that may or may not make it. Plus some of the content on this blog and site seems very unprofessional (aka won’t make a lot of money in the long term).
2008? There are applications and sites out there that have been around for decades. IBM and Microsoft are good example of companies that have been around a while.
They have seen it all and provide software for other corporations that are doing millions and billions of dollars across the world.
Microsoft and Oracle and IBM and these software companies come up with tools to solve problems that a typical business will encounter. So they come up with the .NET platform. Sun came up with the Java platform to solve a particular set of problems. As a result, software developers work with .NET or Java or whatever to create applications. It is really that simple.
And we are talking about millions of software developers and Billions of dollars. It makes sense for a company to hire .NET developers to write .NET tools for users that use .NET applications. If a CEO or CIO decides to NOT hire .NET developers or to stop developing their .NET based application, a company could lose millions of dollars with one stupid move.
And there is no reason to completely switch platforms just because you read some reddit or slashdot.
I am guessing that the author read something on reddit or slashdot, .NET sucks or Java sucks. There are criticisms of the platforms but the platforms are still viable in business.
On programmers, language criticisms; If I were working with .NET and had a solid .NET architecture, I would hire .NET developers. Same with J2EE. That is business and how it works 99% of the time. Google has some Java applications, I am sure they hire Java developers for Java development. And their open software engineer positions reflect that.
If you don’t have .NET or Java architecture and are trying new technologies and languages, I guess you could hire developers that have a wide-range skills. It could be Haskell, Scala or Erlang or whatever. It doesn’t say anything about the intelligence of the developer or whether or not they will be able to developer a viable application or not. It just means they are familiar with a particular tool. The same can be said for a person with a PhD in physics that also happens to be an experience Haskell developer. That particular person may be a smart, intelligent developer but if you want to create web-application, he may not be able to produce.
Hiring solely based on a developers’ knowledge in a particular language, platform is pretty silly, especially if you haven’t really mapped out what type of application you are developing.
One more comment. On Java, .NET, C++, C, Python, Ruby, PHP; there are only a handful of mainstream general purpose languages out there. The top ones have strengths and weaknesses in terms of language syntax but also platform. Most of them could solve general web application business problems. Once you start getting into languages that have less mature platforms, then you might waste resources reinventing the wheel. For example, you may find it difficult writing typical banking website in Erlang. Erlang is a great language but you may find it difficult to create a website with it in a couple of months.
Your blog entry is not scientific or valid criticism so there isn’t much to rebut. I just wanted to position some simple points when it comes to software developer, developers and hiring.
This is silly. I challenge you to name a 1.7 oz burger you can’t make with .NET.
You are doomed to fail. Your business is going bust — oh wait, it already has gone bust. How are you going to recover from this I cannot fathom. You have lost the one thing you really need for success — goodwill. Yes, goodwill more than C or C++ or Java or PHP or .NET programmers.
What an ass of a CEO.
I have my money where I want it to be, and it is in .NET programmers. Thank you .NET for making me and my employees successful.
Hey David,
Just read your article. I must say I share your scorn about Microsoft products. It’s true that it takes twice as long to unlearn them than it took to learn it.
They also make you lazy and completely dependent. So when the planned obsolescence kicks in, you’re left with nothing. To be honest, I’ll feel sad for the poor developers when Microsoft discontinues C#.
That being said, I don’t think your screening practices are good for the computer science community. Polarizing people will only make things worse. We should mix with Microsoft product users and help them instead of treating them with disdain.
I’ve already converted two .NET programmers back to non-Microsoft products. This was a really positive experience. If more of us did this, we would not be in this sad situation.
To continue your analogy, we should help those McDonalds workers start their own restaurants.
Regards,
Francis
That is frankly a crock. If you have any sense, you want people who are capable of using whatever tool will produce the best possible results in the shortest possible time, and with the best possible forethought w.r.t. future work. Any exclusion you make on other grounds will hinder any startup, not help it. I don’t care what you’re building.
Now if you had simply stated that you believe that developers educated purely on modern high level platforms such as – but by no means limited to – Java and .NET are, broadly speaking, less capable when thrown in at the deep end without their favourite tool belt; and further repeated for those to whom it isn’t both hackneyed and obvious that the only way startups tend to succeed is by staking out difficult ground that nobody else wants – thus usually mandating the tool belt goes out the window – then I and others might have taken your post more seriously.
Good luck hiring any developers who read this blog post. It’s not a question of diplomacy. It is a question of whether you truly believe what you say. Technologies are not like syphilis. They come and go; good developers are not left with scarring. I hope that your life is made easier by a substantial reduction in the volume of CVs you have to consider, courtesy of their subjects.
Much of this is just plain wrong. To pick on one example, so many networking layers that it’s almost impossible to see what goes out over the wire? Um, no. I’ve written a service in .net that uses socket level programming to communicate with clients. It was trivially easy, and the difference between writing it in .net and native code was that I didn’t have to write 200 lines of boilerplate to run as a service.
.net is a tool like anything else. There are times and places where it’s appropriate and very useful. If you’re restricting your hiring because a candidate *knows* a particular tool, you’re doing it wrong.
Regarding clarifications added to the original article:
1. Choice of platform, such as .NET has nothing to do with whether you’re startup or not. I know few great startups building enterprise applications on .NET because it’s a right platform for their customers. If you’re building web-apps for consumers you probably want to chose something else.
2. The fact that you don’t see many public websites built running windows server doesn’t mean those companies don’t use .NET. My own blog runs on wordpress but all I do is .NET architecture and development for 10 years. Same goes for the company I work for.
As a suggestion, it’s best not to try and write about things which are not your forte – it makes people in this business very unhappy as you can see.
Well, looks like a bunch of .NET programmers are certainly getting the buttons pushed out here. Too bad for them.
I personally agree with your position, and I would not limit my list of “red flag” indicators to .NET. The tools you use have a lot to do with your mindset.
I have absolutely no experience with .NET development at all, and I don’t need any. I know all I need to know simply by having used some .NET products. My only experience using .NET apps has been various control panels for graphics cards and sound cards on my gaming rig. I remember when ATI came out with their new .NET control panel. And it was completely dog slow when compared to the previous version. I’m not talking about any intense operations, just clicking buttons and advancing screens, all slowed to a crawl on my badass gaming machine. That is all I ever needed to know about .NET, that it follows Microsoft’s decades-long philosophy about bloat: throw more hardware at the problem.
Many stacks based on interpreted languages are the same, though some are more efficient than .NET.
Take a look at the iPhone. There is one reason, and one reason alone that it is dominating the market. And it’s not that people are stupid or sheep or anything like that. It’s because all the apps are developed in a language that compiles to native code. Native code is always going to be more efficient. Better for battery life, lower CPU footprint, smaller memory footprint, etc.etc.etc. It’s about the mindset, and I’m going to go ahead and say there are two mindsets when it comes to development environments: one favors the developer at the cost of computing resources, the other favors computing resources at the cost of the developer. And you simply have to be a badass to thrive in the latter.
@originalgeek So when you’re deciding a platform for your server base, and you’re trading off cost of hardware versus code of development resources, you will pick writing your server stack in C rather than an interpreted language, simply because that’s more “badass”, despite the fact that the latter is provably cheaper in the long run?
When I read the description of the people you are looking for and the reasons why, a part of me shouted I WANT TO WORK FOR THESE PEOPLE! Then I looked up what you do and thought – damn that would be boring… If only there was something which could use both my masters degrees, tech diploma in electronics, and my two apprenticeships in tool and die machining and blacksmithing (great training for robotics BTW) I would be good to go. As odd as that all sounds, that is just the beginning of my background. I get it, and it is good to know that there are companies out there that get being totally passionate about programming, playing and creating. Looking at some of the comments I think Jim, John and a few others miss is that finding someone who loves to code can easily be motivated to go the extra mile to figure out new ways to expand the job because they eat, sleep and dream in code. No, technologies is not like syphilis, but not all problems fit M$’s mold and some of use see value in developing multi-platform tools. .NET is the wrong tool for that job…
“You can only use a class / library if you could write it yourself”
I see. So, assuming that extends to web services as well, I’d have to be able to, say, write Google myself. Don’t like that because it craps on your lame assertion? Ok, so I shouldn’t use the Unreal 3D engine to make my game, because I couldn’t single-handedly match the genious of Tim Sweeney and his team of super developers? Or, I shouldn’t use SQLite because I couldn’t produce it myself?
Your policy is simplistic and boneheaded, and I, for one, don’t believe you actually follow your policy. The only way for you to test that is to have your developers rewrite all your imported libraries by hand. The scary thing is that you might just be boneheaded enough to ask them to do that.
I agree with you, David. I have worked on .NET for over 7 years and am often frustrated at every turn. Anyone having worked with C++ Windows GUIs and .NET Windows Forms will understand how much of the underlying functionality is simply unavailable on .NET.
Here’s what Evernote had to say when they ditched .NET and went back to C++:
“Evernote 4 is a major departure from Evernote 3.5 in every way. While 3.5 added tons of great new features, there were some problems we simply couldn’t fix: the blurry fonts, slow startup times, large memory footprint, and poor support for certain graphics cards were all issues that the technology behind 3.5 (Windows .net and WPF) was incapable of resolving. As a result, we ended up chasing down platform bugs rather than adding the great features our users wanted.
“So we decided to start over from scratch, with fast, native C++ that we knew we could rely on. As you’ll see, the results are amazing. This new version will set a foundation for rapid improvement.”
@Code Monkey I was not implying that I ONLY use .net, just that it’s sometimes the right tool for the job. I am one of those guys you describe, that codes basically 24/7 in whatever language — it’s 11 PM on a Saturday night, and I’m sitting here writing game code and watching Angel reruns on NetFlix 🙂
Even Microsoft’s engineers have said in interviews that they program in good old fashioned notepad whenever possible because doing even the simplest page in .NET is like coding by interpretive dance. It’s not fluid, it’s not intuitive, and unless if a company is at the point where they have to choose between a platform dependent on .NET or otherwise, dimes to donuts they’re going to choose another option unless they have no other choice whatsoever.
I’ve personally been responsible for the nightmare that is development for .NET dependent applications during my time with a successful Inc 500 company, and we did everything in our power to keep custom stuff in PHP just so we didn’t have to suffer through .NET hell. It certainly saved us a ton of money as well.
OP, don’t be fazed by the .NET cheerleaders. They have their purposes and I’m not discrediting their work. But the open source solutions readily available on the market serve plenty of big and small companies just fine with out having to force unnecessary layers of abstraction on the programmer and require a voodoo ritual to do any little thing.
C-level executives who are tech-aware should not have to pay through the nose for development time if they need a simple change. C-level execs don’t have to care about programming language nuances. All that matters is how fast shit gets done. You may be able to write something in C# in 5 lines that will take 25 lines in PHP, but who gives a crap. At least I don’t need some bullshit GUI and expensive programming platform to make a contact form.
I love this bozo’s backtracking update:
“Yes, .NET developers are great at what they do.”
Typical way to try to diffuse well-earned ire by throwing a meaningless compliment out. .NET developers are no better at what they do than any other type of developer. Your post is being torn a fresh one, so deal with it.
“But what they do is very, very rarely startups.”
Really now. Here in the Bay Area, as a .NET developer, I’ve been pursued by SEVERAL startups. Care you cite some actual statistics, or is my having worked for 3 startups that used .NET in some form my imagination?
“Because .NET is designed to extend, not disrupt.”
Startups are as much about extending as disrupting. It shows how much you actually know about the world of startups. Two startups I have worked for were about *extending* messaging security, not reinventing email. Guess what? There were startups that wanted to do just that, and where are they now?
Finally, you’re an idiot for posting this drivel, and you should be fired for showing really bad judgement. It’s fine for you to have this policy internally, but you’ve now just become a liability to your company.
so obviously programming is very complicated (There is No Silver Bullet)
and obviously anything can be built using any given platform given enough time and space (Turning Complete)
so obviously anything can be built with any language / platform… given enough time and space.
The post is about startups. Organizations with very limited time and space.
Platform development is about reducing the time / space to solve a problem. If you delegate that responsibility to a vendor, if you get comfortable with the vendor’s IDE, and you get used to waiting for the vendor to pass along industry best practices, then you will be slow.
Slow in startups is dead. Slow on the internet is dead. If technology has any kind of strategic importance to your company, slow is dead.
Never do what the leading vendor tells you to do. Do what they do.
Man, I love it when someone does this on the Linux side of the isle. Venom from .Net developers is so common these days, that it’s actually become rather easy to ignore. They’re all so angry. Can’t imagine why.
You know, some of these morons (the commenters on this post, I mean) have been bashing Linux, Php, and open systems with no provocation for YEARS! Just search some of these names on Google, and you’ll find the floaters.
It’s sad that these people need to prove themselves by bashing systems they know very little about; rather than proving their worth by producing quality products.
A constructive critique for nay saying trolls:
1. If you write a three hundred word response talking about how wrong the op is… would it kill you to spell check it? Some of us like to try to actually read through this garbage.
2. He didn’t actually say he didn’t hire .Net programmers anywhere but the title of the article. If the best you can do for your platform of choice is demonstrate that you only read the title of the article, then you’re only proving the op’s point. You’re seriously not doing yourself any favors. Stop it.
3. Don’t use the word ignorant, if you can’t construct a coherent sentence!
That is all.
You may now call me a tard, or some other equivalent venom filled slur. I will relish being right, and laugh at you.
I once ran a startup company partnered with a US company. Good developers cannot be rated thru the tools used, nor the experience. Tools can be learned, experience can be gained, but good logic can only be enhanced. When i started the company, I created a very simple examination and must be answered not by any language but by a pseudo-code. And guess what? most of the devs that passwed and were hired have experienced on .NET. We were then doing PHP sites that time, but even applicants having 5-10 years of PHP / Linux experience have a hard time answering a logical question. The hired developers don’t have experience on Linux or PHP, but I never spent an hour training them to do their job. This just simply means, good programmers means good logic. PEOPLE like you blogging this kind of stuff could be BITTER to technological advancements that they couldn’t bear. (or couldn’t learn?) Now, those devs have a long list of .Net, PHP, Linux, object C, Java, Ruby on Rails experience on their CV. Programming Languages doesn’t matter…
There are 2 major problems I have with your arguments:
1) .NET is a Framework (APIs/ABIs and Runtime), not a language. Languages which have bindings for the .NET Framework and compile to MSIL include C#, VB.NET, C++/CLI, IronPython, IronRuby, F#, and others.
2) The CLR/CLI are open standards and are implemented by other organizations, the most notable implementation is mono, but there are others.
3) Microsoft has excellent tools. Why would you disregard someone because they knew how to use great tools? Joel Spolsky has 2 criterion for hiring: Smart and Gets stuff done. I use C# and .NET because they help me get stuff done.
Regarding your edit, I feel like you don’t even realize just what you originally said.
People having .NET experience on their resume should have nothing to do with startups or anything of the sort. You’re excluding programmers who have skills in .NET because they pollute your idea of a “good programmer”. You are, quite contrary to your edit, putting .NET framework developers in a bad light and shunning the developers.
Honestly, I think your attempt at damage control makes you look like more of a fool than even before.
Also, regarding the user “originalgeek” who commented on the performance (or lack there of) of the .NET framework because of some control panel applet that ATI made, I think you’re as ridiculous as the person who wrote the initial article and it makes complete sense you would think alike.
If there is a genuine performance problem with ATI’s control panel software, the more likely reason would be the work of bad programming. There is no shortage of bad programming in any language or framework. I dare you to claim that it is impossible or even difficult to write slow performing code in C/C++.
I agree with you completely. 90% of the .NET dev’s I have had to deal with just don’t deal well with anything that doesn’t fit a basic Microsoft model of FORM –> Database –> Presentation. Dynamic designs, creative and easy UI/presentation just baffles them.
Trying to do anything outside of the box of the framework is a headache and time consuming.
Don’t get me wrong. The other 10% are talented, creative and very good at what they do.
“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.”
So.. you waste money trying to gather enough worthless items you don’t look at?
No wonder you’re hiring the ‘best’ workers.
Everyone of you high and mighty individuals that posted here is a tosser. The man is entitled to his own perspective even if you do disagree with his train of thought. .NET could be the biggest piece of trash and the people who got paid in some form for using it to solve someone else’s problem would still blindly defend it if a better option came out because thats what people that think their opinion is valid do. Some people put .NET on their resume just to have a chance at some of these places because it gives them the aura of someone that has experience and that is up to date with the latest development tools. That doesn’t mean that they know crap about it.
Very funny, David. I know your post wasn’t supposed to be a joke, but your approach seems misguided. Maybe you should do your best with what you can get instead of chasing purple squirrels.
I had to learn .net for work. C# is kind of like an inflexible cross between php (uses a lot of the same function libraries) and Java (the cool syntax). Reminds me more of C++ than anything. I suppose I like it better than C++, but not by much.
Problem with it is that you don’t get enough flexibility. It’s marvelous if you want to design the kind of apps they want you to. It really sucks if you are the kind of programmer that wants to know what every piece of your code is actually doing.
Not the kind of thing I would code in, in my own time. Nothing against it though. Incidentally, the only thing on a resume that would cause me to throw it away would be years of extensive cold fusion development. Cold Fusion developers are usually off in the head, or unbelievably stupid.
Sammy: “It really sucks if you are the kind of programmer that wants to know what every piece of your code is actually doing.”
No, actually it kind of rocks for that. .NET Reflector reveals exactly that info, and that’s why almost every developer I know using .NET relies on it.
Great article.
There are computers in almost every electrical product. What percentage of electrical products are using .net software? I bet it is much less than 0.1%.
Embedded software engineer.
Ah ah, Expensify!
Good way to make a lot of buzz and attract a bunch of !.Net programmers.
I wouldn’t disregard a .Net programmer resume, though.
But I’d be more cautious – same for Java programmers – and ensure the candidate as some strong Algorithms/System/Memory allocation… knowledge.
Basically, any Algorithm-able person cannot be a bad programmer.
There are other libraries and frameworks like STL, BOOST, MFC, etc., that I can compare with .NET in the sense that they hide the core of how something complex is done, and lets the programmer rather concentrate on solving the real problem at hand. Does this mean boost users are incompetent?
I’ve been programming in C and C++ since my school days, but I do have respect for .NET programmers. I know a lot of people who moved on to .NET from C++, and I would have done the same thing if not for my desire to write C++ code.
If your company does not do any work that could benefit from the usage of .NET, that’s totally understandable. However, if your hiring decision is made on whether or not someone likes to use .NET, I think you may unfortunately be losing out some great programmers. Good for them, because otherwise they may have to work with someone with preconvinced notions, and an “I know it better” attitude.
Gee, I’ve been a programmer for 25 years now. Programmed in everything from assembly language, ada, pascal, C, C++, VB, Java, C#… Jeez, I’m sure I’m forgetting a few I’m sure. Used frameworks from MFC to JDK, bla bla bla you get the picture.
And you’re just wrong. By far, the most programming environment out there is Visual Studio & .NET. It’s broad, it’s deep, it’s fully functional almost no matter what your need, well documented, debugged, and supported.
And there are TONS of .NET jobs out there. I’d go on but your obvious bias and lack of knowlege, well, you’ve lost any credibility to an educated, open-minded reader.
I understand exactly what the author is saying hear. It is not really about .Net. There are a lot of people trying to take offence without trying to understand the guy.
This is about the mental agility, inquisitiveness and determination of a coder. I find a lot of people that do not know the difference between a linker and a compiler because they never delve beyond the VS IDE.
But if I want to hire people that know about byte alignment and cache thrashing I look in the one place where .Net does not feature. If I want a good solid coder/architect I look another where it does. .Net helps me be very productive at a business level.
There is a problem with hiring ‘the best’, every so often you get the guru who’s sole role in life is technical masturbation via code. They don’t work in teams, large software creation is a team exercise by definition.
Nothing wrong with .Net, nothing wrong with bare metal all the author is pointing out is that in his experience .Net is a contraindication. A rather obvious ‘horses for courses’ argument.
The comments are hilarious, as usual every coder self-classifies themselves as the best… I am glad i read this as your product will be useful to me and my organisation.
Any coder worth their salt knows .net limitations try doesnt fly in an ios android world. Why would a top chef CHOOSE to nuke a prepackaged meal? Like a skilled carpenter Choosing to make a desk from an ikea kit.
Good software engineers are good for reasons unrelated to the technologies they utilize. Good interviewers know this.
For .NET programmers who learned programming before .NET was launched (like myself), then the question is ridiculous. Having .NET on there then demonstrates that I have continued to learn, rather than stick with Pascal or Java or ASP or VB or C++.
If .NET is the only language on the CV, then fine, raise a question about breadth of knowledge, but for many or even most of us the reason for .NET is simple – current or potential employers have wanted to use it. .NET is one of the most in-demand skills in programming in the UK, so you could almost ask if you’re programming and aren’t familiar with .NET, why not?
The statement about startups isn’t entirely true either – it’s a powerful and flexible framework, and for small deployments the website spark program may minimise licencing costs while maximising productivity, and many of use are also familiar with the Mono project for running .NET applications on an open source stack.
Here is my disqualifier in an interview.
“Have you ever drunk coffee? You have! How passe. You are obviously someone who has no initiative and just does what everyone else does. We only want people who grow their own Mate here. Go apply somewhere else”
I read similar stuff 10 years ago about Delphi and .NET has the same architect. You should dig into .NET experience, but it isn’t a disqualifier.
Congrats on the publicity.
Considering the sheer ignorance expressed in this post, I get the feeling your business ain’t gonna be around for much longer. Like most CEOs I know, it sounds like you shouldn’t be making hiring decisions of any sort.
The beauty of .NET (and Java, to a lesser extent) is that it provides awesome BCLs that do almost everything you’ll ever need. You don’t have to go out and reinvent the wheel for the millionth time.
From the tone of your post, you’re looking for coders whose only objective in life is to reinvent the wheel, even if it doesn’t need to be reinvented. Not only will they probably end up inventing a square wheel, their “wheel” will function poorly, not work in edge cases, and require constant maintenance.
But hey, it’s your company. If you want to run it into the ground, be my guest.
I did remember of a guy named David (the inventor of Ruby on Rails) that once said in an interview “I will never hire someone that is using an OS different from Mac OSX” I cannot remember how many days I was laughing after reading a phrase like this one!
Darwin’s theory about evolution is the only theory that has been recognized a valid unit of measure of every form of progress.
From what I can see the IT world is dominated by tho “form of life”: the invisible infrastructure that literally make the Earth revolving around the Sun and this thing is called Linux. *All* the rest is simply the “dust” that get moved by the everyday Earth revolving around the Sun.
In a nutshell, as random genetic mutations occur within an organism’s genetic code, the beneficial mutations are preserved because they aid survival — a process known as “natural selection.”
I really don’t care about .NET or other things like that, but I *REALLY* care about the *ECHOSYSTEM*…
What make me happy every morning is the perpetual confirmation that, in the long term, only the best technologies will survive. There is a “natural selection” every single day.
It is a well known fact that the whole Internet is now driven by Linux technologies and… this is so encouraging 😉
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.
Huh? That’s completely ignorant. One of my utilities written in C# implements a TFTP server so that we can use uboot to flash our embedded linux boards without having a separate dedicated server.
Then look at the companies product, imagine what it’s like coding that up. *boring* Don’t get me wrong, boring okay, if the paycheck is steady and the people are nice. And you have child support to pay.
Strange though, boring enterprise product, no real performance issues, needs to be rock solid, you’d think C#/.net would be perfect.
Wow, Ballmers’ army in full effect here. I wonder how many of these comments are posted by real devs versus Microsoft’s propaganda machine?
Anyway, I agree with the general tone of the posting. I think there are tough questions to be asked when a candidate hasn’t had the impulse to explore the world much beyond .NET.
When you need innovators, perhaps it’s best to not hire people whose main experience is with a platform that (as even .NET devs seem to agree) removes a lot of the hard thinking and creativity required outside the walls.
So far I have avoided .NET, although our company uses it extensively. You are preaching to the converted here at least.
I would note thought that when I issued a challenge for a “shortest code” contest between my Python and C#, it came out at pretty much a draw. Maybe C# isn’t all that bad.
The backslash comment is a bit unfair though, since it depends on the history of MS-DOS. DOS-1 was based to a large extent on CP/M, which has a flat file system and uses forward slashes to prefix command options. From that moment on, MS realised that they needed to move toward Unix. MS-DOS version 2 had a directory-structured filesystem. Since forward slashes were already in use, they had to use backward slashes for delimiting the file path. At least they did not use (IIUC) colons like VMS. In fact the MS-DOS API allowed the use of forward slashes, it probably still does. It was just the command shell that demanded backward slashes.
Perhaps you should spend more time making sure you’re properly informed before writing your article, and less time trying to come up with a clever metaphor. Also, it is desirable that your metaphor (i.e. the McDonald’s cheeseburger and killing squirrels) actually maps to a pertinent point. I suspect you don’t actually have a set of weaknesses to indicate literally (what are those things you can’t do in .NET, again?) but it turns out that your bizarre comparison doesn’t actually support an argument of any kind, let alone one that .NET experience is valid cause for dismissing an applicant.
I have to say that, as an IT recruiter, if .NET was on your resume, in any length, I questioned your ability to actually code. I wanted coders that understood how to do ‘Bespoke’, not just how to do made to measure!!!
Hi David,
I get what you’re saying. I’ve been there, and understand the MS-tool mindset, and grew up and learnt some better tools. I’m sorry you got so much stick, but glad you had the guts to make the point.
It’s a shame that most of the people who made abusive or negative comments on this thread (especially the ones accusing you of not knowing what you’re talking about – gotta love that) simply didn’t bother to read your post properly. Their “how dare you” response kicked in and they leapt for their keyboards without thinking.
To the .NET crowd I’d simply say: you are not the language you code in. Don’t assume that people who criticise .NET are criticising you personally. They don’t know you so it can’t be personal. Instead ask yourself why a smart guy like David would take such a stance, and ask yourself if you’re missing something.
nb: You might have noticed that .NET isn’t written in .NET. This isn’t an accident. Ask yourself why.
Finally, no-one is saying there’s anything wrong with .NET as a development platform for everyday Windows applications. Millions of business need them, and if you’re building them and getting well paid for it then good for you. I spent most of my life doing the same kind of work. It’s all good. David’s simply saying that for his specific (and let’s face it – fairly small) niche, which is developing massively scalable apps for internet startups, .NET isn’t the usual choice of toolset, and Windows isn’t the usual choice of platform. It’s a fact. And it makes no difference to you as a programmer. So don’t let yourself get bent out of shape about it.
http://www.crazyontap.com/topic.php?TopicId=107220&Posts=15
Pray tell, what 1.7 oz burger can you not make with the .NET “language”? You don’t provide a single example of what you can’t do in one of the .NET OO languages, or what you consider to be hard to implement with .NET. You use marketing and sales language, when attempting to make technical points. Further, rather than discuss the technical issues, you make things personal by looking down on .NET developers. Technical people can smell a fake from a mile away. The world class developers you’re looking for don’t gravitate towards environments where decisions are made by religion rather than cogent arguments. You’re doing yourself and your company a diservice by keeping this post active. I question your leadership as a CEO, not because you don’t have the technical skills, but because you don’t recognize what you don’t know and let someone more qualified talk about such topics.
@Jim wrote
“So when you’re deciding a platform for your server base, and you’re trading off cost of hardware versus code of development resources, you will pick writing your server stack in C rather than an interpreted language, simply because that’s more “badass”, despite the fact that the latter is provably cheaper in the long run?”
Writing it in C is cheaper in the long run, because you don’t need to throw more hardware at the problem due to the overhead of the runtime. And yes, I’ve written multi-threaded servers in c (for bsd and linux). They run for months at a time without destroying a single thread (leak-free, so no need to kill off threads to reclaim memory), serving thousands of requests a second.
“Managed code” will always have more overhead.
I don’t think so much it is which tool is appropriate here, as .NET has its uses, as do Java, PHP, Ruby, etc. I find that the author is more concerned with attitude – which language a developer CHOOSES to embrace is what is key here, as that attitude needs to fit with the company doing the hiring.
I am an entrepreneur and own a start-up, and have hired many coders over the years. Attitude is very important – most of us with a brain can be taught a new tool, but those who STRIVE to learn and embrace all these other NON .NET tools are what he is looking for.
Why would you CHOOSE .NET unless you had to in order to get a job or fit in? Again, there are places for .NET, but apparently this company just is not one of them.
I think the only people he has offended here are developers, and that is tough for you, as you are not the ones doing the hiring. Right or wrong he is who is hiring, and he has a valid point IMO.
I don’t have .Net on my resume, but I sometimes have to deal with it when I hit a windows product.
In the previous post, you’ve hit it: “and have what one of our engineers referred to as a ‘willingness to get into trouble'”. You cannot push the envelope – create completely new and unthought of before things and enjoy doing it in a really safe language (other than finding ways of subverting the safety features). You don’t know where the edge is unless you step over it a few times. But you get really good at knowing just what you can do. They pretend they have a razor edge when using dulled C-sharp objects.
The best code I ever see is in ansi C and it is like beautiful poetry, meter, rhyme, or like the shortest possible elegant mathematical proof. I’ve seen a lot of beauty in other languages, but nothing matches playing with complex pointers and figuring out why it must work and can’t have bugs.
But even for all that, the Microsoft ecosystem is closed – I purge Mono from any linux system I get (why waste time cloning mediocrity?). And it isn’t all that secure or reliable.
this is programmer racism, for real. these types of attitudes when manifested in the real world comprise much of the worlds problems. The inability to work past ignorant preconceptions, holding onto long held and disproven attitudes to make a point etc etc.
a good developer is a good developer, plain and simple. If you can’t see and and understand that then you’ll probably get what’s coming your way down the road.
Is that a picture from lord of the flies? funny movie. Anyhow, yeah .NET developers , yeah we drink the kool-aid.
Wait until you hire SharePoint developers, they’ll rock your world… 😉
Don’t who you are or what your company does but you sound like a moron. You talk a good talk but have no evidence to back it up. If you took the time to maybe explain were “.NET teaching the wrong things for startups” then I would give you a little credit. Tools are tools, it’s the person that uses them that makes the art. But thanks, one more worthless blogger I don’t have to worry about reading.
It seems as though you really have an issue with Windows itself, rather than .Net. Which is fine, really. But your points about developers in .Net not knowing what each line of code is actually doing is laughable – I’m not aware of many significant web/mobile applications not created using either high level languages (Java, Python, Ruby, PHP, C#/VB, etc) or high-level libraries in lower level languages (like Cocoa Touch for Objective-C). People use these languages and tools on all platforms now because they need to get real work done, rather than spend hours tracking down dangling pointer or buffer overflow issues. Of course most sane C++ coders are using libraries like boost to combat these issues, and then you are right back at the point of not really knowing what all your code is doing.
This is coming from someone who learned on C++, and uses it extensively on my own projects. But to pay the bills its C#, and even in such a pedestrian language I still enjoy plenty of challenges every day, just at a somewhat higher level of abstraction than raw bytes and pointers.
This blog posting is plainly ill-advised. This kind of ideological bantering is really unproductive. Microsoft.NET is a powerful platform.
I know of people that love to shovel their driveways in the winter as opposed to using a snow blower. Common sense would tell you that a snow blower is better in almost every way. But, you can never get around people who sometimes just like things the “way they used to be.”
Someone might simply have .NET on their resume because that is where the jobs are (and quite frankly, the best money).
This seems to highlight a discriminatory hiring practice based on nothing of any substance.
Get with the times. Your technology will be better on .NET and you’ll make more money over time.
What’s the problem with that?
Best part of all this? It’s just proving his point. If there wasn’t a shred of truth here, no one would feel the need to come out hard to defend the platform. Go rip on Java, C++, RoR, and people wouldn’t give David the time of day and just discard his statements as rubbish out of hand. Pretty clear he’s hit a nerve, and there is one there to hit.
I’m with David on this one, 100%. There’s so much demand out there for programmers/engineers, that good programmers can choose what they work on and in what language. Great programmers don’t choose .Net.
I use .Net as a flag on resumes because the odds of being impressed by someone working in .Net are a fraction of pretty much any other language. (Yeah, not saying they’re zero, and I don’t think David was either, just the odds go down.)
The idea that .net is not suitable for a start up sounds like Anti-Microsoft gibberish. What makes a technology a viable solution for a product is based on the needs of the problem. The fact that its a startup should have no bearing, and with Microsoft’s bizspark program, the cost is no longer a factor.
I have been involved in two successful startups that were built using Microsoft technology. Just saying…ohh and if your so anti .net why is your product EW based on .net? Just saying
I have had personal experience with .NET programmers, and the author is completely right in his MacDonald chef analogy. The problem with .NET programmers is that they only seem to be able to do .NET. The work they produce tends to lock you into Microsoft products and royalties – they seem to be incapable of doing anything else. I advised one of our development departments to build a product that was being proposed on top of available open source code, adding customisation and our own front end as the value added part we would charge for – ie. leverageing other people’s GPL licensed work in order to reduce development and maintenance costs. Unfortunately the team hired for the project had too many programmers with .NET experience including the project manager.
They ignored my advice, and I watched them develop a product based on .NET from scratch which cost a lot of development time and money. When completed, it was too expensive to compete to compete with rival products because it was dependent on the Microsoft infrastructure requiring licenses for all that Microsoft stuff. It was also buggier and feature limited because everything had to be developed from scratch on a limited budget. In the end, the product just didn’t sell, and the plug was pulled. All the programmers on that project got laid off.
I think that hiring senior .NET programmers is certainly a liability unless you are absolutely only interested in developing for Microsoft products and you are not worried about your firm being 100% locked to Microsoft products and royalties, and you are sure your customers are as well. A good example of this is Nokia’s ex Microsoft CEO turning the company into a Microsoft shop. It’s not that they are not willing to look at the options – the problem is that they simply seem to be unable to do things any other way. Hence a decision to hire a .NET programmer at senior level is a decision to exclude other products and options.
Seems to me the guy has a point.
Most of the startups I’ve encountered (I’m currently the CEO of one – disclosure) are doing small, light-weight web applications. The reason why is that building large enterprise apps takes a lot of people-hours, which is usually just plain outside of scope and budget.
The best way to get a quick, reasonably scalable (and requiring few licenses on the server) prototype web application up and running is to use something along the lines of php, ruby, python etc, possibly with a framework of some kind. The words “quick and dirty” come to mind – but that’s the economics of the situation.
The skillset involved in putting together something like this is very very different from that of an enterprise developer. Not a value judgement, its just different. I’ve personally had very poor results from hiring people with “big company” experience. They just don’t fit well into what my company is doing. The best results I’ve had were from either hiring directly out of university, or even hiring non-programmers and teaching them specific skillsets.
Posts rarely get the type of response this one has without hitting a nerve on something and also having some truth to them. We write off truly ludicrous posts and move on; those that have some good points we tend to comment on.
I work with .NET developers in the SharePoint space all the time. As an someone with a long history of programming in just about anything you can think of – assembler, Pascal, FORTRAN, COBOL, and BASIC were some of the earlier ones – I see a lot of truth in what this post talks about. By having many layers of abstraction between the developer and the machine, we’ve lost some of the need for deep understanding of how they work in order to come up with optimal solutions.
I know fantastic .NET developers and I’ve known crappy ones; this continuum is always the case with any skill set. To me it’s less about which technology it is and more about a willingness to dig far beyond the surface to understand the what, why, and how. The really good .NET developers I know understand that .NET isn’t the hammer for everything, just one tool in their toolkit.
M.
No offense here, But I do think that this was perhaps not the most mature way of getting a message across. I am a .NET programmer and proud to be so. I can write just about any kind of code I want in .NET or in C/C++ or python or other languages depending upon preference that day.
You probably had some great points, I’ve worked in two startups and I know what you mean. However I think you hid them in Anti-.NET Programmer speak. And we don’t know what your real points were. What qualities do you look for? What specifically makes a good hire? And honestly at this day in age what difference does the programming language make? A Fast algorithim written in .NET or Java will be faster than a slow one written in C/C++ or even asm. Its the algorithms, logic and organization that are important. As for the specific code it all boils down to machine code at some point.
Lastly, I will likely be uninstalling your app.
I’ve been programming for 30 years this October and I’ve debugged code with a dual-trace oscilloscope on a wire-wrapped board only to find out that my program was crashing because someone put memory chips where the latches should have gone. It’s sad that today’s developers have never cut a trace on a circuit board, burned EEPROMS or debugged with a true ICE (In-Circuit Emulator). There’s nothing like really knowing what makes computers tick. But I don’t only hire people like me (there are very few of us left).
I’ve programmed Z-80 8-bit processors with TECO (a CHARACTER editor – not even a line editor) to Web based applications in Java using Eclipse and yes, somewhere along the way, I chose to program in VB.NET for a product. At the time, .NET was a far better environment to work in than Java (not anymore IMO) and the team of people I had to work with were VB programmers. I and another programmer there were C++ and Java developers at the time and I wasn’t able to hire anyone new. So the decision to use .NET was solely one of circumstance and if I had to go back in time, I’d make the same decision.
Long story short, the product I developed was spun off 2 years later to a START-UP. That’s right, people invested their money in us, .NET developers. And strangely enough, these people didn’t care what tools we used, only that our system worked. Frankly, they were more interested in the business side of the equation by a factor of 10.
But when it comes to hiring developers, it’s not the tools. It’s the people that matter. Are they intelligent? Can they solve complex problems with little information? Are they tenacious? Do they have the concepts? Are they honest? Do they care? What motivates them?
These things are far, far more important than the language. I would suggest you take a hard look at your current biases and dig a little deeper than the tools used and you’ll probably find out that you’re looking at a symptom not the disease.
Seriously? C# is my primary syntax, but certainly not my only one. If you are excluding anyone based only on a technology selection, perhaps u should stick to commenting on business functions. You’ve missed the point of what programming is.
Very nice topic. I also like the image somehow resembles Lord of the Flies or is it?
Regards
Ronik – “Eclipse has been emulating Visual Studio for years now”? Be careful when you tell people that they don’t know what you are talking about. Eclipse has its base in VAJ which existed way prior to VS.NET. I used VS6 and trust me, Eclipse was not emulating that. I use VS.NET and Eclipse every week. Eclipse is NOT emulating VS.NET.
But back to the task at hand.
Is the author throwing out the baby with the bathwater? Yes.
Is he just talking about “.NET developers”? No.
Does he have some basis for his believe? Yes. I see it all the time too. The majority of people who use VS.NET that i know are pretty much the same. They don’t do or know anything outside the basic .NET box. But are they alone? No. I would say most developers are like that. It just seems that the low end developers gravitate to .NET because it facilitates their lack of growth.
Are there exceptions to the rule? Sure. But don’t take the exception as the rule.
Is this somewhat upsetting? sure. I am a little because I might be put into the same boat. For instance i use products that use jQuery and Dojo. But i know almost nothing of both. But why should I? that is not what i am focusing on. I have too many other things to learn and know. I just want an AJAX toolkit that i can easily create browser based UIs. I am just being pragmatic. Now, if the UI was the main part of my apps, then I would focus on it.
1. .NET is not a language, you moron
2. .NET is the best VM available (it would not be if LLVM had a default GC available). That’s why it is a platform of choice for the compiler designers – i.e., for the creme de la creme of the programming elite.
3. Reflection. Extremely attractive for the best of the programmers.
So let me get this straight. A CEO of a company doing expense reports, which cannot get more of a McDonalds overall stamp as far as a general idea, is egotistical enough to spend all his venture capital scouring through resumes to hire coders without .NET backgrounds because .NET is cooking in a McDonald’s kitchen???? What do you give this startup’s chance of success with this kind of clueless leadership? 2%? Maybe that’s high.
Oh, and seemingly the attributes he seeks are that they “can beat up other coders”, and also have a strong anti-.NET bias. Yeah – there’s a recipe for success. It’s a good thing CEO’s post this kind of garbage – it’s a great filter for good coders to know what kind of company to not submit your resume to.
Oh, and other funny stuff – sources from his main article come from Joel Spolsky – a former Microsoft Program Manager, and Robert Scoble – a former .NET developer evangelist.
Get a clue, author:
1) Building a McDonalds idea with people it takes you too long to find with primitive tools increasing your time to market while burning your venture capital renting in SF financial district just shows your an idiot.
2) You wish you could find the talent that Microsoft and top .NET devs have. LOL at Anders Hejlsberg needing to explain his resume.
3) If your coders want to try beating me up, they are welcome to stop by my MMA gym anytime when I’m not writing .NET code for my own startup ideas.
4) Maybe you’d have more success joining Microsoft’s BizSpark program and having people code from home.
Hardware is cheap. Time isn’t.
The article author has made some excellent points in regard .NET programming, but omitted several other very pertinent and illuminating reasons for questioning the focus on Microsoft technologies.
Any perusal on Netcraft.com will show the (vast) majority of major Media companies, Internet Services Providers (ISPs), Web hosting companies and Mobile communications firms use UNIX/Linux as core OS and technologies. Several of these firms have confirmed that they offer .NET for those few customers/clients that want that specific environment.
Consider iPhone (*BSD based) and Android (*Linux based) with combined approx. 65% versus about Windows mobile (dot.net?) 7% of cell phone market.
Then take major social networking and Web firms: Google, Yahoo, AOL, Facebook, Twitter, Linked-In, Myspace in USA and Nexopia, Myfrenz.net in India and dozens more here in North America or worldwide are based on non-Microsoft technologies – like PHP, Python, ruby-on-Rails, generic C++, some Java, and on and on.
Even large and small technology firms (with a few exceptions) – like IBM, Oracle, Intel, AMD, Apple, Cisco, Motorola – ad nauseum – use more of and rely mostly on non-dot.net technology.
Don’t forget NASA, National Research/Technology Laboratories, Boeing, US Defense dept, many of the top technology Universities like MIT, Stanford, UC Berkeley, University of Chicago, etc, etc, fall in same usage categories.
If the Internet and World Wide Web (WWW) were created with and are continually updated/developed on non-Microsoft (non-dot.et) technologies, then it is clear
that dot.net plays an important role in services/products to small businesses, small organizations, Gaming Industry and desktops [Geez!].
nuf said.
W. Anderson
I think its mostly a publicity stunt just like celebrities often have deliberate wardrobe malfunctions to expose their guts and get popular
OR
Maybe you’re ignorant enough to not know that .NET is a framework that helps you solve your problems but doesn’t magically build software and there are thousands of frameworks for every language be it C++, Python, PHP or whatever. Btw people have written operating systems in C# if you’re unaware.
http://en.wikipedia.org/wiki/Singularity_%28operating_system%29
Maybe if you offered prospective talent a challenging problem and corresponding pay you’d find the “best programmers” suddenly appearing at your doorstep.
Offering lessons in squirrel cooking and knife fighting, and a not so challenging ERP application may put food on the prospective’s developers table, but it certainly isn’t going to amuse proven talent that’s used to receiving well above the average pay rate.
If I were one of your developers and I read this blog entry, I would be asking myself why am I paid so little to deal with a big jerk of a boss?
I’m going to go out on a limb here and say you certainly may want to hire the best programmers, but you haven’t. With your attitude, funding, and ultimately the problems you want to solve, you won’t.
The irony here is that .NET is probably a good fit for your company’s problem set given the pool of available talent, skill levels, and pay rates.
The bigger issue your funding sources should be asking you is why are you trying to hire the best programmers when any average programmer can solve your software model.
Well all I learned from this article is that the author knows nothing about C#, .NET, or ASP.NET, and seems to think that they are all blended together. I would never go out of my way to work for an employer so clueless. You think “.NET” is some kind of stupid boy cookie cutter maker but if this is the case, so is PHP and Ruby, Java and Python, and Smalltalk all of which I am experienced with, in addition to my extremely intimate knowledge of C# and the Common Language Runtime.
What you have written here is tantamount to language racism, and I hope you one day recognize how ridiculous this whole article was and that you entirely skipped out on a perfectly reasonable bunch of candidates, some of whom might have been what your business needed to thrive.
.NET developers make choices between what they use in development and ought to know when to use an UpdatePanel and when to use jQuery instead. If they can make the choices, they know their way around building apps to meet requirements rather than the other way round.
Being a .NET developer instead of a PHP developer (I code with PHP as well as .NET!) does not make one’s attitude any different toward work. There are folks who walk in the door at 8am and don’t leave their desks till 10pm.
“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.”
First off, shame on those who hunt harmless squirrels. Second off, the burger reference doesn’t make sense — look at all the health issues people face today due to red meat. The only sustainable way to live in today’s society is to become vegan, or at best vegetarian. With population reaching 7B, food shortages around the world, deforestation accelerating global warming — there simply is no way we can continue to increase the carbon foot print and sustain the human species in the next 100-200 years.
Blogs like these that extoll squirrel hunting and cooking bigger burgers (1.7oz) in large french kitchen copper-bottom pots, promote non-vegetarianism and unsustainable lifestyle. I hope you reconsider editing the blog by using better analogies for humanity’s future.
David,
Your article really shows how little you know about development AND quality developers. First off, all great programmers are highly skilled in 4+ languages, .NET usually being one of them. It’s not the language that makes you a great programmer, it’s how you use it. You can build complex apps the look the same and behave the same using RoR, PHP, .NET, Java, Perl and Python – you just have to be good enough! I do agree most great coders start before high school (aged 11 myself), but you should be focusing less on what languages they use and more on how they use them. ASP.NET + MVC + jQuery + Knockout and I could pump code out with the same level of efficiency and flexibility that your devs most likely do.
On a side note, Microsoft uses a backslash in Windows because the forward slash was already an existing command in MS-DOS – the switch command. It had nothing to do with not wanting to be backwards compatibile. I expect a CEO to not be fully technical, but I also expect them to not spit out B.S. on topics they really know nothing about.
I started programing at the ripe old age of 13 on a Commodore PET in 1979. My first commercial app was a year later as was my first startup. I went on to compete in auto repair trouble shooting competitions and was on the surf team while learning assembly, PASCAL and FORTRAN before graduating high school and becoming a Airborne paratrooper. I finished two tours overseas and then became a full time programmer at a startup. I programmed in C and C++ on AT&T Unix as well as SCO and umteen other flavors. I lived through the UNIX wars and the OSF vs Openlook debacle. When I read Helen Custers Windows NT book I saw that finally someone had created a properly thought out OS and dove into Windows NT from the first version. I became one of the first 1900 MCSDs in the industry. I have written countless products for startups including creating the internet kiosks at the San Jose airport you may have seen. I was the founding CTO for that company and yes it was end to end Microsoft. I am a deep level architect that has seen a thousand cycles of the ebb and flow of our industry and I am a dedicated .NET programmer. I love everything about it. The design, the architecture and underpinnings. I do every level of programming in .NET including deep C++ interop. While you may think that experience is not a defining characteristic I can tell you that when creating resume the rule is keep it to 2 pages. After trimming mine to just the titles of the systems I have built and the technologies employed my abbrieviated resume is 4 pages long. Such that when I send it out those hiring have called me back saying that they don’t believe that I could actually know all this stuff and that I am padding it. I am not. Its not braggadocio it is simply a list of things I have done and know how to do. While amassing this experience I took and passed the Mensa pretest for fun, I was skydiving, wakeboarding, teaching SCUBA, rockclimbing, motocross riding and riding at 150 mph+ on my race bike. Because I had to for Cisco’s sake I went ahead and learned Java and most of the associated sub technologies, I program Android apps for fun and have written countless large scale telephony apps using VXML and Java and .NET together. I could spend all week comparing .NET to its competing architectures and giving you a history lesson as to why each is the way it is and what its faults are. I could bore you to tears with the excruciated mitutia of what and why but you won’t even do enough due diligence to understand what .NET is much less why it is a superior platform to anything on the market today. I have every skill you have listed as prerequiste for you to lower yourself to consider my resume but you would pass me by because of my love for .NET. You sir are a fool. But the market has I was of teaching you the lessons you refuse to learn. Have fun storming the castle.
Two years with a software start-up full of engineers who drank the M$ koolaid and believed that .NET was just what the Doctor ordered proved to me that .NET is just another way for Microsoft to say that it is innovating, when what it’s really best at is protecting it’s business partners. There are a thousand reasons I grew to literally hate .NET. I’m glad that someone is finally saying that the emperor has no clothes. Good for you David! We’ll never ever get involved with .NET’s ridiculousness again.
I suppose by writing this I am kicking what’s left of a dead horse.
Form someone with 20+ years experience in programming the full spectrum, .NET and Java allow you to leverage pre-fab components when you want to, and let you write your own when you don’t. You are simply asking the wrong question. Its not what the platform is, its what you do with it.
I disagree with this completely, being a .NET Developer for the past 5 years.
I think the only reason startups don’t choose it is the licensing cost for servers as they don’t have the initial capital.
.NET is the best development environment I’ve worked in especially for web development. (And I have done PHP/Java and some Ruby) Currently we are doing several ASP.NET MVC3 projects and it is the same architecture that most other web frameworks use.
author is right! another point is; .net (stucked on windows) is not ideal for the web. look at google, amazon, ebay, linkedin, twitter, facebook,… they all use open source. in this new era, the best software is open source software. look at hbase, cassandra, mongodb, postgresql. who cares ms sql with $5000/cpu. the most widespread/best server os is linux. centos, ubuntu, … who cares costly windows x server and forced to pay for every node. I can freely use java/play framework or djang/python,… etc in linux and other oses and can also be a contributer easyly, so who cares asp.net mvc that stuck on windows. someone can say oh mono (cropped .net clone) can run on linux/mac. yes it can but there are serious legality issues that keeps away big players. if you use ado.net or asp.net with mono then ms has all the rights for these techs and you cannot avoid a lawsuit. most startups today prefer open source tech. open source is an unhindered revolution. ms is old and legacy and lost the new era.
Usually startups need a fast proof of concept and valuable results. Except sophisticated needs you expect:
– low cost of development
– high productivity
– performance & stabile platform
Everything you need is there:
– excellent developer tools
– multi language support (C#, F#, VB, Python etc.)
– great open source platform (Mono, GTK) or Windows native .NET Framework
– Multiplatform support: (Linux, Solaris, Windows and mobile platforms using 3rd party tools associated with Mono project.
– lot of db drivers and source code support
– Windows specific but advanced technologies (WCF, WPF, Silverlight)
Sometimes you need C/C++, sometimes pure scripting.
But .NET is a good choice for a serious application.
If you asked me why, I would throw the ball back in your court and demand you ask my former employer why. It was a choice. But it was not my choice. Nor was it the choice of anyone in our entire building. My choice was to stay awhile and grin and bear it, because the economy has been tough.
1) .NET is not really different than anything else. On the contrary, many people will tell you they copied Java. Others will say they extended it.
2) Thanks to Interop, you can call *any* native library. So you are certainly not limited. The Mono team even let you develope iPhone application in C# ! Others are using it for AI scripting in new games, using Mono. Microsoft never intented .NET to run on such a platform, but it was possible. All this without using any Microsoft tool. There is no reason why you can’t extend .NET.
3) Maybe you prefer C++. I work 35 hours a week in C++, I can definitely say that, while you can in theory reach the best performance, you spend a lot more time to get it. Also because a JIT can use the best instructions for your CPU, you would need to recompile your application for the intended platform, which is not the best option when deploying applications to many machines.
4) Also because C++ lacks a GC, you face silly stuffs such as the ABA problem when implementing a lock-free FIFO. Because you have no GC, when deleting an object in a first thread, creating a new object a few cycles after, you can get the the same address in a second thread. As a result, a third thread which was busy doing a CAS might very well believe tell you the pointer didn’t change, while the element in fact changed. So you spend a lot of time doing extra work. With a GC, you don’t get that.
5) If you are working in a startup, spending weeks solving memory corruptions in a C++ application is certainly not a good idea. You must go fast, your application must be scalable, C# is a good candidate, but you are certainly not forced to use Microsoft servers if you don’t want to.
I’m not in favor in any language at the moment. Just use the right tool for the right job! I use C++ to develop for micro controller having 2KB of RAM and embedded systems, I use C# for data processing, business logic, UIs, etc, and R for statistics.
I think you should provide us with real examples, and good arguments.
another point is; as a developer, I prefer to be familier with my code in depth so need to trace framework calls, too. there is no problem with openjdk, but in .net side, you need the reflector open on the other monitor to understand whats going on. one more point is, every developer has the opportunity to work with the most intelligent developers that shaping the technology in the open source world. but in the .net side you’re stuck with the codeplex fake community and funny resources compared to open source ones.
To all the people writing “I believe that the reason people don’t want to use .NET in a startup is because of the high licensing costs” … the highest cost in a startup nowadays is generally people.
The licensing costs become an issue when you have to expand, because now you’re locked in. The money you saved by hiring cheap .NET programmers is lost, many times over, at that point due to lock-in.
The poor performance of Windows in general, and the much superior from-the-console and ssh administration of linux and bsd boxes, would make linux or bsd the natural choice even if they were to cost more in licensing fees. That they don’t is just a bonus.
Now, for the posters saying to throw more hardware at the problem to overcome .NET performance problems, the real world doesn’t work that way when you’re handling 1,000 requests a second. Look at what happened with Microsoft’s attempt to get the London Stock Exchange onto .NET – a total failure. This is after Microsoft spent millions and millions advertising their “victory” in all those “Highly Reliable Times” ads in the trade rags. Kind of like the KIN, and now WP7. $2.6 billion spent on development, advertising, and paying Nokia to use it, and Windows phone market share is a rounding error.
The original article was clearly about meeting certain goals that .NET is not appropriate for – and that’s why he wouldn’t hire a .NET programmer. That so many .NET programmers failed to comprehend this just goes to show that too many of them either (a) lack the ability to parse a simple blog post, (b) are astroturfing, (c) are so hyper-sensitive to the failings of .NET that they lash out at anything that makes them feel inadequate, or (d) having drunk the purple flavor-aid just don’t know any better.
This reminds me of the following joke:
Late at night, a man sees another man on his hands and knees, looking for something. “What did you lose?”
“I lost a $100 bill.”
After helping him look for 5 minutes, he asks “Whereabouts did you lose it?”
“About 3 blocks back.”
“So why are you looking here?”
“The light’s better.”
My point is, if you’re looking for a c/c++ programmer, you don’t look through the much bigger slushpile of .NET programmers just because there are so many more of them. Just like if you’re applying for a c/c++ job, you don’t go on and on about your .NET experience. It’s not relevant. Really.
Finally, for those who mention mono … mono is well-named. It’s a disease, both in the real world and amongst the software cognoscenti. We have enough problems without opening the door for YASPFC (Yet Another Software Patent FUD Campaign).
it seems there are lots of microsoft employees here, so it’s impossible to make a realistic discussion, no need loose time.
This discussion reminds me of what happens whenever a well-known business organization disguising themselves as a religion is criticized: A whole bunch of shills (i give them the benefit of doubt and say that they are all acting independently) shows up, starts insulting people, spreads BS, causes confusion by discussion points which were not part of the original claim etc etc.
I find it really disturbing how many commenters here accuse the author of acts which they clearly show themselves too in their own comments.
Whenever such a cultish behaviour shows up, you can be dead sure that the original author was spot on with his criticism.
You are dead wrong. You offer no specifics as to why .net is bad or unacceptable for startups. I help a lot of startups and I use .net in every one of them. They are all successful. I don’t think
Net is the only solution, but I am nit on a diatribe like you and spewing misinformation.
I take offense to this blurb: “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.”
The above quote simply is not true. I wrote a web server in C# by handling my own sockets. The server runs on Windows, Linux, and Macintosh. Although .Net has a multitude of higher-level RPC frameworks, HTTP APIs, and web servers, the lower-level socket APIs are there if that’s what you need for the job.
When I deployed my test servers I used Mono on Ubuntu Linux with SSH. No GUI was needed to manage the servers at all!
To put it bluntly, I chose C# as the language for my web server because it was the best language to use when I started the project, and because its low-level networking APIs are really good. Today I’d choose something that didn’t exist when I started my project.
Anyway, don’t knock a whole class of people based on provably false statements!
@Shannon McCoy: Your story is really heartbreaking. I hope that you will be able to overcome your terrible affliction at one bright day in the future. All the best of luck to you.
But seriously: Your comment is just prototypical for whats going wrong in this discussion. Have you ever heard the old wisdom: “If you only know a hammer, all problems look like nails”?
It’s great that you are doing so many years in Microsoft land and i’m happy for you that you are doing fine and like this.
But HOW THE HELL does this background even entitle you to make a educated statement here? You don’t know anything beside Microsoft world.
This is the number one problem of this discussion: Lots of .net programmer who just don’t know the world and just can’t judge on the issue on ahnd. And this is also the main reason why the author of the article is biased against .net programmers. Because this mindset is the rule, not the exception.
Well, it’s great that many of you are able to create meaningful software for the .net ecospace. But the author is looking for open-minded and adaptable people for his organization and sorry to say but 95 percent of you people do not fit the bill.
It’s as easy as that. So stop your angry comments about a topic you don’t understand even a little bit.
Programming languages and software platforms are tools. Nothing more, nothing less. And as a successful software engineer, like a carpenter, you need to choose the right tool for the task at hand. It makes no more sense to hammer in a screw than it does to program a web service in assembly language.
Microsoft produces some great developer tools (the best in the business, from what I’ve seen) that allow developers to do some really amazing things, so long as you’re using them for tasks they were designed for. And the same can be said for any other set of developer tools.
So if the problem you’re trying to solve is best addressed by .NET, why would you use anything else?
Good intent, bad description.
There’s nothing evil in any technology, even .NET. However what you are looking for are people which learned to think outside a particular technology. And with that requirements, .NET, J2EE, Spring+Hibernate, Ruby on Rails, … (list can be continued indefinitely) are equally worse.
You need people which are jack-of-all-trades in a startup, not people which live in a monoculture (maybe thay are even very productive there …).
I always assumed that startups tended not to use Microsoft because the other alternatives (e.g. LAMP) were cheap as chips compared to Microsoft.
By the time the first business I built was large enough to require thinking about ‘grown-up’ platforms, the platform we were using had grown up also, so no need for Microsoft.
Obviously I’m not a .NET programmer, but I’d always avoided it because it appeared to have a high cost with no compelling reason for a startup to need it, not because it appeared restrictive.
P
I like your post. I am teaching myself programming at the moment and have written on teaching programming to children. I’ve never used the .Net environment (or plan to because of its windows dependency). I do have a couple of questions.
What do you think of mono?
What do you think of Java? Considering you added the Joel Spolsky link. And that the coders in most demand now are Java coders.
How long is a typical coder’s day in a start-up like yours? Give me a range I know every day is not the same. I’ve work long days in movie production and some days start of as just 8 hours end up as 15 for no reason.
@ Hans thank you for that bit of old wisdom I’ll go applying that to my life. I think I tend to feel to comfortable with my hammer and too many problems look like nails to me.
The guy who wrote this essay is, frankly, a complete idiot. I wouldn’t want to work for him him in a million years.
The fact is that most of us have used all kinds of technologies, including .NET, and that we generally select whichever tool either we or our Reptilian Overlords think is best for the job. Sometimes it’s .NET, sometimes not.
In the last 10 years I’ve worked with Java, C++ and .NET. My current projects (yes, I have 3 projects on the go at the same time, such is my versatility) are with C++, using Direct 3D (presumably he thinks I should be using OpenGL), C++ using Windows Mobile and .NET using SQL Server. I also support our web scripts which are written with Perl. Each one of these technologies is chosen with one eye on the target customer and one on the most productive use of development time.
If you want to hire good developers, the first thing you need to do is stop writing blogs on how their technology choices mean they’re cretins, and how you won’t hire them because of it. It makes you look like a religious zealot and a kind of high self-regarding anal retentive. Only like minds want to work for someone like that.
My response: http://blogbeebe.blogspot.com/2011/03/many-startups-should-be-avoided.html
If you need a specialist in a programming language or platform, hire someone who already knows it well and is proven.
If you need a talented developer, hire someone who’s got great coding and learning skills. Don’t worry about the specifics of the languages or platforms they’ve used. Check out their talents and accomplishments.
That’s a far better way to hire than just using arbitrary segmentation.
There are lots of great developers using:
* PHP, Python, JavaScript, C#, Java, C++, C, etc.
There are lots of bad developers using:
* PHP, Python, JavaScript, C#, Java, C++, C, etc.
Is someone who uses Jquery rather than “bare-to-the-browser” JavaScript and DOM manipulation a weak-sauce developer and not worth pursuing?
Your filter is far too simplistic and you’re missing out on a lot of great developers. It sucks for your company and any investors. At least a lot of developers now know that they apparently aren’t “fit” to work at your little company.
In any case, why not update your job section of Expensify to clarify who you won’t hire and come on down from your programming superstar pedestal.
I’d hire some of your staff away, in spite of them not having a well rounded experience in programming that includes .NET.
I believe this post will be a beginning HDD (Hate Drive Development), because all the comments to this post are so motivational to any shy .NET-guy, that he will work extremely hard just to prove you and everyone who agreed with you wrong.
I prefer C++ on UNIX-like systems, but I’ve used C# professionally.
All of programming is built on a series of abstractions. Machine code is an abstraction that lets you do math, branching and such without building the circuits yourself. Assembly language is an abstraction that gives you nice names for opcodes and a way to let the computer compute addresses for you. C is a neat way to write assembly language without knowing intimate details about the CPU, which is nice if you ever want to port to a different machine.
Of course, programmers should know something about how these lower layers work or they’ll be deeply lost if they ever have to debug something non-trivial, but you wouldn’t advocate writing your startup’s application in assembly language, would you?
Ideally, all these abstractions save time by letting you ignore lower level details. .NET will let you escape though when you need more control—they made it fairly easy to call native C functions from managed code, and there’s even C++/CLI to let you mix managed code with unmanaged C++.
What are .NET’s abstractions preventing you from doing though?
Also, .NET bears a striking resemblance to Java. It’s not as different as you seem to think it is.
Great post, 100% agree.
Those who have invested heavily in training and time learning .NET and nothing else beyond that, should be concerned about their next job interview.
It seems everyone “thinks” they are a hotrod coder, by putting .NET on their resume.
As a hiring manager, I take points off for .NET unless they have something else to go with it, and VB doesn’t count! Even COBOL gets a better thumbs up.
You’ve obviously been out of programming for quite a while, and also never used .NET. You’re implying that use of automation implies a lack a versatility, showing you’ve clearly never gotten under the hood of… well, anything. I’m normally the last person to defend MS’s tools, but this is the most hopelessly confused assertion from an out of touch manager I’ve ever heard.
Good luck with that deliverable…
Tell me what we need t obuild first then tell I’ll tell you which language. This seems very backwards to say tool first then build… very beginner stuff…
wow. Blogged ignorance:
“dandy language” – no… it is not a language. You can even do python on net
“There’s no button for it. ” – are you talking about VS or .NET?
“created .NET to be as different as possible from everything else out there” well… no, version 1.0 was clearly aimed at Java, next versions incorporated already known stuff from other platforms.
I tried to continue reading but it is obvious that you are closer to PR or marketing than to the tech area. Anyway you got your nice share of comments, probably what you wanted.
I agree with this post but I’ll also add Java to the list. My experience is the really good programmers are really into Ruby, Python and Haskell.
I like the sunday update, where you try to spin the subsiding vitriol in the comments as “Now that the initial shock has worn of, 1/4 of people agree with me. See? I’m really onto something!”
Face it: The response is overwhelmingly negative. Even on slashdot, a notoriously anti-micorosft collective, you’re getting trashed. And I mean *trashed*.
The fact that you can’t step up and say “Ok, listen, maybe I was wrong, mea culpa”, I think that’s a big red warning sign to your current employees, your future employees and your investors.
I love the thoughts that this post has brought up. Microsoft products are expensive, and may not be the favorite of everyone. But I’ve seen Microsoft products in more Fortune 500 companies than any other product. So if you’ve had to solve problems in those scenarios, I think that you can provide a lot of insight to a startup. I simply love those hardcore programmers, those who spend their spare time writing compilers and laugh at those that don’t. The problem with those individuals is that their little world doesn’t connect with anyone else. Remember at the end of the day, you need to make money, and to make money, you have to connect with people. .Net programmers possess a good balance between technology and business solutions. I’m not just building a program just to prove I can, I’m doing it for an organization that finds real value in it, and they understand that. The software, while point and plug in nature can get things out solutions to customers quickly in a way they can understand. You’re right, you probably won’t see a .Net developer coming out with the next Facebook or Twitter. But you will see us gainfully employed everywhere and solving those problems that make everyday life for you easier.
Hey, David Barrett, instead of considering the percentage of start-ups that don’t use .NET as some kind of meaningful metric, the more important metric is how many of these start-ups burn through their venture funds before producing any viable product to sell.
David Barrett, I’d probably one programmer you’d hire straight away (yes I’ve coded in Assembly to jQuery, etc) – but Todd Trimmer got something right: not everyone can avoid .NET
I was lucky enough to have choices to avoid .NET like a plague. Todd Trimmer didn’t.
If I needed a job and the only one available is a .NET vacancy, I WOULD hop on to it. I’m responsible to the welfare of my family, and it’s on top of my priority.
Luckily though, I never had to make that choice. But, not all good programmers are that lucky.
You may wish to consider that.
Don’t know why you’re apologizing in your followup Dave. You’ve expressed the problem with hiring on demographic of good IT people spot-on and would only need to abstract the example to cover the rest of the industry. The key really is that good IT people thirst for knowledge and strive to learn and perfect their techniques, average IT people are spoon-fed their knowledge but still become relatively competent within that sphere, and bad IT people would really rather be at home ironing their hankies ;- )
Don’t know why you’re apologizing in your followup Dave. You’ve expressed the problem with hiring one demographic of good IT people spot-on and would only need to abstract the example to cover the rest of the industry. The key really is that good IT people thirst for knowledge and strive to learn and perfect their techniques, average IT people are spoon-fed their knowledge but still become relatively competent within that sphere, and bad IT people would really rather be at home ironing their hankies ;- )
I also notice that the Microsoft asstroturf teams are on full “swarm” attack mode for this posting ;- )
Well said sir.
I would add though that in general *I am against of frameworks*. You are just starting around a cage. Saves you some work and thinking, but for mid-large projects most of the time it gives more restrictions than getting things done from scratch.
Then people will throw you thinks like you’re reinventing the wheel and stuff like that. In most cases you’re not reinventing the wheel, but you’re creating a new wheel that really adapts to what you need. It’s smaller, and suits what you need and nothing else.
It’s really hard to find good programmers. And you are also right that they use to reunite in “clusters”.
Thanks for sharing your thoughts,
– Juanjo
I wrote my first line of code 30 years ago in BASIC on a TRS-80 at 8 years of age. Since then I’ve used Pascal, Z80 assembler, 68K assembler, PIC RISC based assembler, C, C++, Modula 2, Java, Perl, PHP, ASP, a bunch of other languages (even a bit of Ruby). I can remember turning my nose up at anyone who wrote in a high level language (in the late 80s)! haha – how foolish I was. I’m on my 3rd degree in Com Sci now (a PhD in Com Sci) and have seen a lot change in the last 30 years while working full time in the industry and studying on and off part time for the last 20 years. I’ve been a .Net guy for the last 10 years (ASP.Net, C#, etc.) and think C# (and the FCL) is quite a beautiful language. When you work on big complicated ASP.NET Web Apps (1000+ concurrent users, 100K+ SLOC) I’ve found that you have to know what’s going on at a low level anyway as the cookie cutter approach just doesn’t work. Many of us are turning to ASP.NET MVC which is more low level than ASP.NET. I know what you mean about .Net devs “not being real Com Sci guys”, a lot are in it just for the money and don’t have the proper grounding. When I hire devs though I look for “passion” – it has always worked, there are plenty of very smart, passionate geeks out there who do .Net.
Looks like you hit a nerve here David. After reading the follow ups, I have to concur with you. Having been a .NET developer, hiring .NET developers, and now mostly working with open source systems for large-scale enterprise customers, you’ve reached the same conclusions as I have. There are no easy answers, but for startups or for quick implementation of new ideas, .NET is certainly a big hinderance than help. Also, on a personal level, I’ve noticed better satisfaction in building open source solutions among coders.
Wow. I think this is the first article I’ve ever read that actually really bothered me. I really think the only thing you accomplished here is alienating an entire community and damaging your reputation. This post has resonated quite loudly across the technology community and I’ve yet to read one post that actually backs your stance.
I think everyone is entitled to their own opinion, but clearly you’re wrong.
Didn’t bother to read 300 comments so could be reiterating others, but IMO
1. .NET is just as capable of being used for startups as anything else.
2. I have never seen any tools that startups used that had no equivalent in Windows or .NET.
People largely don’t use .NET for startups for two reasons.
1. It cost more money, OS, database and development tool costs can run into thousands quickly. This can be expensive for garage startup. MS identified this problem and created the BizSpark program.
2. Cultural. Just like bikies don’t drive scooters, even though they would get them to the same place in the same time. It aint cool. Harder to fix, but MS is more engaging with open source communities now.
This is an awesome article. I’ve been saying this for 10 years. My professional colleagues and comrades in other software and firmware development shops also say the same. It seems as though nobody cares to listen though. .NET coders are like new programmers these days: they just want it easy. They brag about how “few lines of code it takes to do something” all the time for every situation. That’s a HUGE red flag that they are lazy. Plain and simple. Most .NET programmers have the attitude: how little can I do and how much can I get. No thanks, I don’t want that attitude in my own company, nor the coder that comes along with that attitude.
Really wouldn’t expect more of a view from a company that wants to hire the “best programmers in the world”.
Going on to think that programming skills are limited to the technologies we use is the fallacy here. And it doesn’t get you too far.
Good luck hiring, I presume ones hired either missed this post or share your view, and judging by the responses many don’t.
Well, I grew up cutting code in C/C++, Modula-2, Pascal, Assembly and various other programming languages/paradigms, and I have been a .Net developer now for 6 years, and you would have to “pry it from my cold dead hands”. Not to say I won’t program in anything else… right tool for the right job is always the mantra, but there is very little that can’t be done well with .Net.
The evolution of languages/platforms has been one of a constant increase in level of abstraction. At the end of the day humans don’t do well with 1’s and 0’s, so we have
Machine Code -> Assembly -> Procedural Languages -> OOP -> Platform Virtualization (Java/.Net) -> etc…
There are some developers that choose to stay only in the one level of abstraction for their entire career, and I’ve seen some absolutely shockingly bad C/C++ code written by developers who have not the faintest clue about what they are doing. I personally wish not to be judged based on these types of progreammers not matter what language/platform I’m using.
Oh, and by the way, you can easily use text editors to write .Net code, I have done it, but at the end of the day apart from a very few corner cases… why would you bother?
Your post may actually save you some recruiting time… I mean you won’t have to read my resume now, and I think there are a few more peopole in that boat.
The author’s point is well said — perhaps with his addendum. I, too, always ask any one I interview about any use of .NET (or any of the other MS tech) I spot on a resume. I want to know if the use was by choice or due to legacy issues. If the former, I want to know what factors went into the decision.
Perhaps others may not find themselves able to infer anything from candidate’s answers to these questions, but I sure can. To each her or his own.
Of course not, .net is NOT meant to be used when you need to get down and dirty.
.Net is great to create short / simple / straight forward applications, quickly and efficiently, even if you have to adhere to ludicrous regulations and forced standardizations.
If I have a large and complex project I use a low level language like c, because the inevitable time spent debugging and trouble shooting will be worth while. However, for short and sweet GUI apps (maybe even basic console applications) .net will excel (especially with the plethora of powerful tools that excel the developmental process even more).Ill agree with you on the topic of anyone using .net for anything outside of short and sweet.
.Net along with many other frameworks / API’s / SDKs / languages that excel in specific area(s) but drastically and tragically fail in others (for example java), are inevitably destined to be overused in those area(s) of failure. Using this factor to penalize those “programmers” (provided they have been given enough time to mature and age through their programming up-bringing to learn of their mistakes and change their ways) is absolutely justified.
But if you are penalizing people for simply using / knowing and or listing .net on their resume then thats purely feebleminded.
And I thought the PHP vs ASP.net died along with the Windows vs Linux debate.
Certainly, as a .Net programmer, I commend you for being honest. Programming Languages & Technologies are simply religious choices based on euphoria and community (and money). That is your right.
I’ve certainly heard of your company here in the Philippines– and yes! most PHP developers/companies i know sound like you do.
My former boss & mentor, who’s also a commended author in one of those Wrox books, always warned me about being stuck in just one tech ecosystem… and I always listened and followed. But being a programming nazi just because you saw a words like “c#”, “.net”, “VB.Net” on their resume is just wrong in my side of the moral pool.
Just be on your way, make a new blog, and write more of these please. It is your right.
As the CEO of a small software company, I totally agree with the article.
You need to know the low level before you learn the high level. (and often don’t need the high level at all if you know the low level).
Sometimes even really smart people like Jeff Atwood say stupid things on their blogs. But when that happens, people like Jeff fess up to it. They’re clever enough to know that on the internet, information flows two ways.
Why can’t you be more like Jeff, instead of making up “25% of people agree with me” numbers, thinking that’e even something to brag about.
I built 5 years ago a startup that is now a successful profitable business, 100% based on .NET platform.
But I admit, I started programming assembly at 11 and then did a lot of C++ before moving on to .NET in 2002.
While I agree with the article, I disagree with some of the other “details” that have emerged.
First, a 50-hour “normal” week is a sign of bad management. The more down time you have, the more likely you are to have a random idea during your down time that will actually help. Too many hours, for too long, and your people will *not* have their subconscious coming up with fresh ideas during their down time – they’ll just be reiterating over the same old, same old. They get stale. They lose the ability to step back and see the forest for the trees.
I quit my last job because of too many 60-70 hour weeks, and 36-hour “days”. In *every* case, the *emergency* was preventable. Bad planning by the boss, every time.
End result: they don’t have a product, because we *all* left (I stuck it out the longest, but 70 hours in 4 days, and not even a thank-you? Sorry, honey, I’m gone.). This is what happens when you treat your people like cogs in a wheel, or “maintain a pace just short of burnout.”
Scott Adams (Dilbert) had it right – “crunch time” or overlong hours means you’re doing something seriously wrong. Fire the person responsible for making this the norm, then fire the person who hired them as well, because a fish starts stinking from the head.
Second, the “social” aspect of the workplace. Some of us don’t want to have to pack up and travel to “exotic places” to “fit in” – we have pets and/or children. We enjoy coding, debugging, figuring out the best way to approach a problem, but we also want to have something called “a life.”
Third, I’m still amazed at how few start-ups even try to do the “virtual office” thing. We’re supposed to be “high-tech bleeding edge technology adapters”. The Russian Business Organization (Russian cyber-crooks) can run a virtual office profitably with nothing more than chat, email, the occasional skype … but high-tech startups still insist on the presence of warm bodies.
Why? Because management still hasn’t figured out how to measure developer performance, doesn’t trust developers to apportion and account for their time honestly, so it settles for a count of behinds in seats per hour. And “face time” because writing it up is too hard (or – too often – they’re making it up as they go along).
Fourth – the idea that you don’t want people who see your place as a long-term job. That’s a nice way to lose “corporate memory”, and has brought down a lot of established businesses (and made others have to pay over and over for re-learning from the same mistakes).
So, while I agree with the article on the main issue, I think at least some of the issues I outlined above are more important than whether a person has .NET on their resume.
I read the CMU dean of CS’s report http://existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/
and found some things of interest. What wasn’t talked about in that report was the overhead associated with frameworks such as .NET. I consider processors running at 1 GHz and getting less work done than a processor running at 10 MHz.
Mr. Barrett,
Thank you so much for saying what I think has needed to be said for a long time. I have slowly been losing my passion for development since transitioning over to Java/C# from C++. Your words have really hit me to the core.
Your article highlighted your relative immaturity in your perception of software development and most importantly, as an owner of a software business. This is probably the reason why many startups fail as overly generalized juvenile arguments and ideals gets in the way of unbiased and logical business thinking. The last time I had such childish thoughts over programming languages and platforms was back when I was a teenager and immature young adult. Your analogies are flawed as it shows both your lack of understanding of .NEt and even the fast food business.
Huh. We were once a startup. We wrote all of our software in VB6 and then ported it to .NET in 2001/2002. In 2005 our no-longer-startup was bought for $350 Million, making many millionaires of the original employees and investors. I’d say .NET served us well. I’m not certain why merely being a startup precludes the use of .NET. There is nothing magical about the needs of a small company.
I started programming in assembler before Microsoft existed. Today, with .NET I am able to do 90% of what I need to do in a fraction of the time it would take otherwise. I also know the difference between a hammer and a screwdriver, and when to use which. If I’m targeting a Microsoft platform, I’d simply be making more work for myself to NOT use .NET.
I would suggest you actually code in .NET for a longer period of time before writing such an opinionated article. Every programmer has opinions about the positives and negatives of the other, but to write an article such as this is ignorant.
There is something lost in the article, and I think it might be your knowledge of .NET
People who really know .NET can easily make 1.7 burgers or whatever type of thing you want. .NET as a framework is very powerful, and be used to create whatever you want in the hands of any passionate programmer. That’s the key. Are they a passionate programmer and coder? Sure. there are many passionate .NET programmers.
However, there is another side of .NET that allows non-coders to create applications. In fact, Microsoft has done a wonderful job at allowing semi-technical people to whip up code and solve business problems. These people are the McDonald’s line cooks. They can not deviate from the drag and drop toolset. Yet, they can provide a service, albeit likely not a good one for a start-up.
Now, here’s the deal: people who learn C or Java or dynamic language of choice (python, ruby, etc…) they can not be easily replicated by line-cooks. The languages and the toolsets don’t allow it for the most part.
So, What you are saying is its easier to tell the difference about a passionate (insert your favoriate non .NET language)ruby programmer, because well, to learn ruby you really have to be passionate about it.
To tell the difference between a passionate .NET programmer, you actually have to talk to them and go beyond their resume. In fact, I’ll argue that many of the passionate .NET programmers are in the enterprise and likely not applying to start-up jobs. So, that’s why you see so few qualified .NET applicants.
Good thoughts and excellent anecdotal evidence for start-up developers. Thanks for sharing.
I completely agree with people needing to learn the low-level stuff. But completely disagree about the .NET part, especially the startup part.
I’m now on my second startup in ten years, having already sold the first one. In the first case, we started off as C++, but eventually shifted to .NET. In the second case, we’re starting off on .NET.
.NET allowed us to rapidly innovate and progress our products without havint to worry about the nitty gritty (and the terrible tooling) of other environments. But at the same, we were all competent engineers, so we made solid decisions about our architecture.
Much like the argument about MySpace, it really boils down to people and basic Computer Science and Computer Engineering skills. The tools are just tools.
After taking the time to read over these comments today, I have a couple things to add to the melee:
1. Take note of what Paul Graham said in 2004: http://www.paulgraham.com/pypar.html — he is talking along similar lines. It’s a vague concept encountered by people with an entirely different focus than programmers — and a hard one to express without offending large numbers of programmers. Same could be said about anyone trying to express a perspective on race, gender, politics, ethnics, or any other “hot” issue.
2. A very high percentage of the commenters missed the point that the OP was making about his subjective issues relating to experiences in hiring (right or wrong), and turned it around into a [my platform is … / your platform is … / I am … / you are …] discussion.
3. The most important part of what the OP said was about “attitude”, in which case, I’ve seen only a small percentage of commenters who took this with a grain of salt and attempted to respond from a high level perspective. Go back and read it if you don’t recall.
4. For all the effort put into commenting (and how much more put into reading), few made an attempt to help the OP understand his error, or clarify his points if valid.
—
Those programmers who posted in an unprofessional way this weekend should be ashamed. I encourage you to re-read the original post and address it point by point if you agree or disagree.
Having the competence, attention to detail, and analytical thinking to be a programmer puts you in a small percentage of the general population. Having the passion, insight, and vision to excel at programming puts you in a very small percentage of overall programmers. Being one who excels at programming *and* excels at caring for and working with people of all kind — that is a very rare person among mankind.
The biggest reason startups don’t use .NET is because of the cost.
I think you are deluded enough to think that all of this attention is a good thing. You probably have some sort of cognitive switch that has flicked off into survival mode and is rapidly justifying each of your comments and disregarding the overwhelming counter-response… but what you have written here is pure infamy. This poor article, this arrogant abominable opinion will probably be the most significant thing you ever do for the programming community.
Your propensity for fitting people to your own mental model for the purpose of validation is further clarified by this evenings edit.
Your focus should be on what a developer does, how they approach and ultimately solve problems. There are as many half-ass php programmers as there are Msft platform developers because the target audience has been the same for the drone users (asp, vb, web forms).
Frankly your ability to ramble on about this topic is troubling. And I can’t imagine anyone wanting to work for you if you are a picture of what your company values.
Yikes!
The attitude of this blog article strikes me as reminiscent of exactly the type of people I don’t like to hire. More specifically, they are the types I’d aggressively avoid. In an environment where job #1 is to write software that diffuses the financial time bomb, I’m not that interested in people that are going to get amorous with their tools and savor the details of the journey.
I want the programmer who uses his/her tools as a means to an end and not an end unto itself. I need someone who can deliver and create business value.
The biggest hamartia of great developers that start to think of code as an art form and create self-imposed obstacles, such as using primitive tools, just to prove themselves worthy. Do puzzles on your own time, don’t turn your job into a puzzle to entertain yourself.
One good thing about .net programmer is he clearly knows that what is logistic and what is real programming!
@Jason Garber, a couple of the details in this article are “decent”, but overall, the tone, the message and the narrow over-generalized opinion disregards any tiny piece of dramatized love the man has for programming. This is not a civil presentation, and does not rightly deserve a civil response. You may feel the need to defend this trite nonsense, but I must tell you that I feel the need to defend anyone those offended by the text, and who have offered a good measure of directed anger up against it.
I would neither work for, or purchase services from, a company that clearly doesn’t understand that you use the best tools for the job; whatever platform and language that might be. Every day I solve problems using .NET, jQuery, apache, IIS, node.js, php, python, and whatever else I need to get the job done. I guess that means I cook squirrels over sticks in the Mcdonalds parking lot. I think you wrote this so you could appear hip to the open source community. All you’ve done is appear to be a jerk.
Frankly, a lot of .NET coders are not the type of coders that would suit a startup company. I can really understand your point here and it’s completely valid. On the other hand, a lot of non .NET coders are also not the type of coders that would suit a startup company.
I’ve been doing .NET for a year and a half and I’ve learned quite alot more about it by Googling keywords from these comments.
Certainly less “raw, incoherent hate” than is purported.
@Hans You obviously missed the point that I started programming almost 20 years before there was such a thing as .NET. I was a dyed in the wool UNIX head for over 10 years. C and C++ was my bread and butter I also use Java in half of my projects. My mantra is “Choose the right tool for the right job” sometimes you have to use a hammer but if I can use a nail gun I use that instead. The point is that while there are other market/lic/cost issues to that may affect a startup in a purely architectural comparison I find the .NET approach more elegant and concise. I have used more platforms and languages that I can remember over the years but I choose .NET because I have the quickest to market turnaround of any platform I have used. When someone comes up with something better I will glady switch to that.
@Khaja Minhajuddin , you are right .. u missed Moonlight too ( Silverlight implementation ) ..
So whats the big deal with it ? A startup should focus on how successful it can be rather than the programming language .
.NET will certainly fit to the startups if they really plan well and depends on their strategy .
I somehow dont agree on the authors point of view but a brave attempt indeed ..
I am a manager of a successful startup and agree 100% with the article.
The way I see it, you have two options: (1) keep digging, this goes viral, and your company is a joke; (2) apologize and/or shut up, and your company keeps bumbling along as it has been. I doubt you’ll survive either way, but (2) gives you much more of a chance than (1).
CE-Oh-no he didn’t. I’ve coded in almost every modern language and with a wide range of web 2.0 stacks. any reasonable guru in this space will agree that each approach has its pros and cons.
Broadly dissing a copmany’s strategies / decisions — I’d expect that from a misbalanced dev, very skilled in tech/coding on one side, and poor business judgement and insight on the other. And one that’s drunk the coolaid-du-jour — in this case “MS is the enemy”.
Not sure I’d want to be hired by an entity with such opinions at the top. Kinda muddies the waters from a PR perspective, and quite possibly with the folk at Sand Hill.
I’m a .net developer for the last 5 years, started 2 different companies (all profitable), and a jiu-jitsu black belt. yeah I think I can take any of your developers any time.
I’ve been among the founding team at several startups, most commonly as chief architect or engineering manager. So I have some applicable experience to this debate.
This article mixes two different discussions: 1) is .NET appropriate choice for building the product of a software startup? and 2) if your technology stack is NOT based on .NET, how valuable was the experience of a job candidate that has spent time programming in .NET?
On the first point: should a startup base its technology stack on .NET? It depends on the people and budget.
When I examined .NET as a possible technology for a new startup, it felt like being given a large set of paint colors, but I had to paint within the lines set by Microsoft or spend a lot of time learning how to erase the lines (i.e., it is possible to do other things, but not easy)
The .NET framework is turing complete on the server side, so you can get anything you want done with it. On the UI side, it may be better than many other technologies. The key is whether or not it is a suitable technology on which you can base a startup. There are companies that have, and there are companies that built on other technologies. Personally, I’d rather keep costs down for any startup that I run, and my experience is the Microsoft tool suite (and productions servers) ends up being a bit expensive. As a result, I’ve stayed away from the Microsoft tools due to the cost (remember, startups are very poor!). But there are several successful startups based on .NET, usually where the developers learned all of the nuances of the platform while working for someone else.
For the second point, if your startup is not using .NET, what about candidates that have .NET on the resume?
When interviewing a candidate, I look more at what they accomplished and how well they understood the problem and the solution. I’ve had candidates that really did not understand what they were doing, and worse, did not care and had no curiosity about what their tools did.
Remember: for a startup, hire first for personality, second for ambition, third for ability to learn, and last for skills. (but relevant skills are required)
“performance tuning and debugging requires understanding the implementation of the abstractions used”. In other words, you have to understand the tools at a deep level to get them to perform well in the real world. The ability to do this is not common, regardless of technology (an example is Grails or some java programmers). The few candidates I’ve interviewed with .NET experience usually has the comment “I’d like to be doing something different”. (But to be fair, the job listing said “java required”, so many .NET people did not apply).
When hiring a UI developer, I don’t consider people that have only used .NET — not because .NET is bad, but instead because getting good at Java and Javascript is hard and I can’t afford that time in the first few years of a startup. Too many developers take the easy route (in any technology).
All I can say is wow. This post is so laden with misunderstanding and assumption that it’s almost not worth commenting.
First off, singling out a single technology shows that you are not asking the right questions. Technology is something that builds off of itself, and at the end of the day we’re all just flipping bits. .NET does abstract a lot of details for you but it doesn’t mean that people who choose .NET as their main platform don’t understand what’s lying beneath.
Second, you seem to be concerned more with the tools than the job at hand. When all you have is a hammer, everything looks like a nail. If you are ruling out an entire group of people, and thus an entire tool from your toolbox, then at some point you will inevitably be fighting an uphill battle to solve a problem with your technology of choice that could be solved easily on the .NET platform.
The third thing I’ll touch on, which I think is a huge factor and should not have been ignored in the post, is the upfront cost. If you want to work on the .NET platform, it’s obviously not free. The upside is that, for a lot of problems out there, you can build a solution using a cohesive, comprehensive set of tools and do it very quickly. Sure, a lot of startups don’t have $1000 to throw at each developer to give them a development environment. That’s fine, but it should be mentioned (and you should not pretend that technical issues are the main thing standing in your way).
As a side note, if you really have to open up a remote session to manage your .NET servers then you are not doing something right. I suppose you would build all of your UIs with the visual designer in Visual Studio as well (that is, if you dared tread in .NET land).
I’ll sum up by drawing an analogy. I live in Minnesota. We get a lot of snow here. Epic snow many times. I decided to buy myself a snowblower. Sure, it was expensive, and sure it takes some control from me and abstracts the details of snow removal, but when there’s 18″ to get rid of, there’s nothing better. That’s not to say I don’t understand how to shovel, and it doesn’t mean that I use it every time (after all, the solution should be made to fit the problem, not the other way around). Dealing with snow removal in any other way would be inefficient and ineffective. Software development is not that much different than snow removal.
I agree with you. Its not for real chefs. I am a .net dev and have worked on MS stack for 10 years. I will say this though that their MVC platform is a decent attempt at breaking some shackles. But old habits die hard. It still doesnt make you fully feel like youre in a real kitchen. Id say its a start and hopefully someone wont start tightening the screws and pretty soon one would realize that now all you can do is make 1/2 lb burger. MS folks following this, please keep it real, keep it flexible, keep it open. I was at Myspace as well and i can tell you that technology was a problem. It wasnt the only problem, but it was a hindrance.
This in a way doesn’t surprise me. The author obviously wrote this in a manic haze of grandiosity. I’m guessing he has spent years faced down in languages like PHP and perhaps Java. I would wager to bet he was successful and was able to do the job without much effort.
I imagine he worked alone on most projects and was not a team player. I’m sure this made him feel superior to others, and gave him an over inflated sense of confidence; a common syndrome for a generally uncompetitive field. From here I am sure he began his .NET bias and made excuses for himself not to diversify.
Now I speak directly to you David when I say this, for the first time in your life you’ve met a certain reality and will suffer the consequences of your grandiose behavior. Your post will go down in programming history as an excellent example of the syndrome I spoke about above. I hope they call it the “David Syndrome”.
Do you even understand functional programming? Do you understand the power of Linq? Do you even understand that the .NET libraries are just code implementations offered by Microsoft? Anyone in the world could write their own, most do.
To vindicate yourself, please write an entire enterprise level web application, complete with a structured data layer, querying engine, REST API, and full web front end, in less than 3 hours.
If you can accomplish this without Visual Studio, .NET 4.0, and MSSQL, I hereby absolve you of your heinous ignorance and the community around you will allow you to continue your career without a bag over your head.
If anyone here is trolling thats you Barbara. You named one high profile project that failed and used .NET. I am sure people can name many such projects using other technologies too.
It is not the technology, it is the implementation thats the problem.
The premise that .NET web performance is worse than other frameworks is laughable. It is almost always the implementation
Most start-ups aren’t building hamburgers, nor are they writing custom network stacks.
They are building web and mobile application platforms.
For the web side, .NET shines. Especially if you find developers who avoid the VS GUI web-building tools and are intimate with their HTML, CSS, and Javascript. I think those WYSIWYG tools are where you find most of your proverbial standardized hamburgers.
Sure, the server licenses are expensive, but with good programmers, throwing more iron at the problem isn’t always the best solution. Example of .NET scalability: stackoverflow.com.
I’d rather have a solid software developer fluent in C# on my team any day over someone who has been charring meat over a campfire in PHP but who can’t keep an engineer a well-organized, enterprise-scale application.
It’s not the platform, it’s the programmer.
I haven’t read the replies, though I’ve read the replies to the replies. This article is a rant, and as such courts flames. I think it’s unfortunate, since it’s a mildly interesting point, which could deserve some discussion. I’m not going to address that here, just comment on what I feel about this post.
Based on its site and subject, Expensify looks like a good candidate for most-boring-job-ever, and I’m sure it’s hard to find die hard programmers who are really enthusiastic about expense reports, so I figure you have to go through a lot of less well qualified potential hires. I appreciate that it gets on your nerves and makes you want to blow off some steam.
That said, you take it too far. You say inaccurate (well, wrong) things like that Microsoft created .NET to be as completely different from everything else (no, it created it to be a better Java, which it greatly resembles). You say “They’ve tried everything. Everything, that is, but .NET.” Well, no, any good programmer would use the right too for the job. Even AAA game programmers create tools in .NET. For the things that .NET does well it’s the right tool for the job.
Now, if you’re anti-Microsoft, and it looks from this post that you are, then that’s a good reason to filter .NET programmers. It makes sense to hire people who are more likely to share your point of view, since it leads to a better working environment.
Don’t get me wrong, I do agree with the general gist of this article, that most startups don’t require people specialising in .NET, but I still feel it’d be easier to add “What do you dislike about Microsoft?” as a question on the application page. It will get you more like minded applicants. So will this post, I guess, but it’s a much less direct way of achieving that goal.
Interesting. I have to agree with the general sentiment of the post, although there are factual mistakes with some of the content. One thing that I do see many people missing in the comments is this:
“Don’t get me wrong: .NET on your resume isn’t an instant showstopper. But it will definitely raise questions during the phone screen…”
He’s saying that .NET is a /potential/ red flag. It creates a question that must be answered before hiring can continue.
I’m a php developer by trade. If I’m hiring someone, and they have php on their resume, I want to know what kind of php development experience they have. Because php is a language that makes it easy to screw up in. It’s also a potentially powerful language if used correctly. But it doesn’t make me wrong to ask the question, far from it. If I see HTML/CSS/Javascript, and I *don’t* see jQuery, I want to know why. Not because jQuery is the best thing ever invented, because it’s not. jQuery has it’s own issues. But jQuery does a good job at abstracting a lot of browser inconsistencies, and not seeing means one of three things. Either the developer is too new to JS to have used jQuery, which is a major red flag, they’ve decided that it’s better to handle DOM manually, which is a good reason not to hire them, or they’ve used something else. I won’t know unless I ask, but that provides me with a question to ask. Information is key.
The other point I’d like to bring up is as follows:
People are saying that mono exists as a cross-platform implementation of .NET standards. The real problem that people don’t seem to get is that developers in general like to push the boundaries of the technology. So when a new version of something comes out, people jump on it. Inevitably, the mono project is in perpetual catch-up mode, and I can never get applications to run correctly because they’re written in the latest-brand-new-hot-off-the-shelf-version, and my native system, which runs linux, can’t run it correctly. In other words, .NET developers tend to code to microsoft’s implementation, not to the standard. I understand why they do it, but it doesn’t make it any less frustrating.
This is really scary. I am not sure exactly what *bad* experience you have had with .net developers but clearly something went wrong.
I have a feeling that you think that any programmer can program with any language/platform that existed. You are probably a typical CEO who wants to paint the moon blue yesterday, and enforce to use his teaspoon because the appointed head of IT who happens to be his brother said it was the best tool around.
Your article will soon be forgotten, probably as quickly as your start-up.
All the best in your adventure, I hope we never have to work together.
ASP.NET WebForms from 2002 is not the same as “.NET” in 2011.
Most of this is just not true.
@Jason Garber
While people should be more civil, I can’t say the hate surprises me—many (often awesome) programmers have a profound intolerance for what appears to be willful ignorance, and will quickly dismiss as almost sub-human people who seem to refuse to learn.
I totally understand wanting to hire passionate developers. Being one myself, I hope there’s always a market for us! It worries me to see resumes that only include .NET experience just as it worries me to see nothing besides PHP on a resume. People who love to code don’t stop at the first language they use; they’ll pick up a new language no one’s heard of over a weekend as an experiment. They’ll end up like Paul Graham, evangelizing Lisp when the “it’s just a day job” programmers, if they learned Lisp at all, only learned enough to pass a languages course in school.
What I don’t understand is why merely *using* .NET is such a bad sign. It’s not as different from other environments as the author asserts, and for some applications it’s a perfectly reasonable choice. Have you ever used Stack Overflow to find an answer to a programming question? The site’s written in C#. The founders (Joel Spolsky and Jeff Atwood, BTW) are so passionate about programming that they wanted to build *the* place where long-tail programming questions get answers. Do they lose points for using .NET?
Joel Spolsky also advocates the use of .NET: see http://www.joelonsoftware.com/articles/Our.NetStrategy.html among other posts. It seems disingenuous to quote his blog in support of dismissing .NET developers as having the wrong attitude. Joel specifically railed against *only* knowing one overly dumbed down environment because it leads to programmers who can’t handle things like pointers and who are totally lost when an abstraction leaks and they’re forced to debug something they don’t fully understand.
The real concern is avoiding people who learned a few recipes in .NET (or Java or PHP or anything else) hoping to get a decent job. These people really do lack the passion you need.
First of all, I’m a C# programmer.
Before I comment on your opinion, I think much of the reason that few startups use .NET is down to cost. Sure, BizSpark goes some way to addressing this but the truth is it’s pretty much free/cheap forever using OSS, whereas you’ll get stung by MS license costs in 3 years with BizSpark. Plus the tools used by startups to grow quickly (EC2 for example) are much cheaper for linux than for Windows.
Secondly, my opinion. Not hiring .NET programmers is pretty silly – you’re missing out on a large chunk of the talent pool. The point of your interviews should be to weed out the guys who only use the automated tools in .NET, just like it should catch those who say they are rails devs as one day they took an online tutorial.
Who you want to hire are people who really understand the fundamentals and can quickly pick up new concepts and languages. IMO a good C# developer who *deeply* understands the more complex parts of the language would make me think they are inquisitive and a fast learner and I would have confidence in their ability to pick up something new.
Does .NET make them worse than others with similar skills and an equivalent zest for learning? Of course not.
“This isn’t a rant against .net”? You have got to be kidding.
Practically none of what you say about the .net framework is correct. I say this as a veteran .net coder and manager who is now taking his first steps in the OSS world.
Your post only goes to show that “open-source people” can be just as biased and narrow-minded as MS marketing drones are, if not more.
This article is really offensive. I am very passionate about coding, I started with c/c++, worked on a lot of things including compilers and Operating systems and then started with .Net. Yes, .Net does help programmers, and most of the libraries are built in so the time taken for development is less but this doesn’t means that one who is working in .Net can’t be a good programmer.
Programming is all about logic, and language is just a medium to write your logic. So I don’t really think in any way language has to do anything with one’s logical thinking and one’s way to approach a problem.
I completely disagree to your thoughts and I am really sorry to say that this is a stupid article.
n Just n FYI..Passion for programming is not dependent on language. You need to get your math right because I have never heard of any dependency formula of that kind which you have mentioned.
Thanks
Inder
I think this post would have been better titled “Why we don’t hire .NET programmers which fit our stereotype”.
Obviously a lot of .NET devs here are peeved that you apparently called them unemployable. The way the post was written was a bit ham-fisted, but to those who take issue with the general principle: are you so worried that you fit the stereotype?
I use .NET as part of my job, but my blood isn’t boiling. I use several other platforms too, and I could confidently argue in a (hypothetical) interview with Expensify that my use of .NET only strengthens my experience and objectivity.
Anybody who claims one platform is outright better than another is an idiot. Nothing in computing is “better” without a specific context. The commenters who have said “My C#/SQL Server platform is better than yours” just prove they fit the arrogant, blinkered stereotype.
I can only agree with you David.
I am a programmer from the old school, having programmed since the c64 days and done everything from demos, viruses, games, icq clients, whatever. If you really want some dirty work done, the shallow .net programmers from today just won’t do.
They are great at making websites yes, and probably also other other bussiness applications, but getting their hands dirty or doing other more complex work seperates “coders by nature” from these lightweight .net herds. Especially the motivation behind choosing only .net as their platform of choice says a lot about that person.
All this post demonstrates is your laughable lack of understanding where .NET is concerned; you don’t even seem to realise it is a framework with multiple language bindings – instead, you seem to think it is a language in and of itself. To dismiss an entire framework, one you clearly don’t understand very well, is the actions of a close-minded luddite. Your crashingly poor McDonalds analogy is a fine indication that you simply have no concept of what can be achieved with this framework – no concept and no desire to find out. I urge you to continue excluding .NET developers from your hiring pool because you’re doing them a massive favour.
I see the rage on comments. But I would really like to
share my opinion with you. I have serious problems when trying to
express myself on a linear way, and you just did it for me, you put it
right, in a concise way.
I believe I understand the nuances of what you are trying to convey.
Of course, you used .NET as a good example and some people got pissed
off. Were it 10 years ago, we could even be talking about Visual Basic
or Delphi.
Delphi was, like .NET nowadays, an excellent tool! In my homeland,
Brazil, it was largely used, and I grew up with many people taking
programming courses and learning Delphi. But that was about it. They
knew Delphi. They made impressive stuff, but once you removed the Play
button from the IDE, they were clueless about what to do. They had no
idea about the underlying compiler and so on.
Currently I’m working as a software engineer for a Qt consulting
company based in Sweden. Among other stuff, we provide trainings, and
last week I was in Berlin, attending to one, as a teaching assistant,
so that eventually I can become a trainer my own. An intern came with
me. He has just graduated, and is really excited about learning Qt. Qt
also has an IDE, called Qt Creator. It has a “play” button, which will
build your stuff. It’s very nice, specially for trainings when people
don’t know what ‘make’ and friends are. So the intern was using Qt
Creator, until the “Play” button failed on him – because something
else screwed filesystem permissions and it couldn’t output the target
binary – and he was totally lost. He got stuck. There was no “fix”
button on his IDE. And I think that’s what you mean, there will be
times we have to deal with unusual situations, and in times like
these, it’s important to understand how things work. That’s what the
commenters don’t get. They think you are targeting .NET, even though
.NET does its job pretty nicely. What I assuming you are targeting is
the culture of pushing the play button.
The same for Java people who depend on Eclipse. However many times you
don’t have Eclipse available – you have to ssh on a production server
and fix things from the console using your favorite editor. And the
list could go on.
I can even give you another example, which does not involve programming.
Recently I switched from Kubuntu to Arch Linux. For many reasons. One
of them is that, because Kubuntu is so automatized, through GUIs and
everything, I started to “dislearn” things. Many times NetworkManager
would crash or not work at all with my wifi card and I had no idea how
to fix it – I was solely dependant on NetworkManager itself. Therefore
I decided to migrate to Arch – it forced me to build my system
bottom-up from scratch. To configure everything by hand. I still like
the convinience of a GUI, and I have for example, wicd, another
network manager, running for me – but I know how to fix things when
things don’t work or when wicd fails for instance. The same intern is
messaging me right now struggling to fix someone’s laptop – it has to
be upgraded, but it also runs arch however you gotta do things on the
command line.
Even another example:
Assembly is not so often used nowadays, except in some special
domains, but learning it means that you are going to learn how a
function call actually takes place, how parameteres are passed and so
on, which is very useful to understand when you are working with C and
exporting symbols, for instance.
I could go on and on. But I just wanted you to know that it’s glad to
see that there is still people out there who still can see what really
matters. And I bet any of your programmers can do .NET pretty well, if
you ever happen to need to do it someday. Because they are simply
programmers, and not programmers.
As a side note, I still envision one day that people will start
teaching computers again from the bottom up. Think about it, with
fresh students, you begin teachimg them basic assembly. It is much
simpler to explain it, because it has no concepts of functions and
other programming structures whatsoever. And then, starting building
the knowledge upon it.
Either way, I know you are not ranting about .NET, but about a culture
of toolers, and I just wanted to express my support.
Keep rocking!
I work for a startup and we are a .NET house.
You need to understand that .NET programming doesn’t mean you HAVE to use all the hairy fairy stuff that comes with Visual Studio. A lot of people snub Entity Framework for example and go straight to Fluent NHibernate. Likewise some people snub ASP.NET MVC and use an alternate OSS framework instead like FubuMVC.
If someone had only EVER programmed in .NET. Then yes, that would be a worry. But they’d not get past initial screening anyway in all probability.
The key is to find someone with a career path where they started off as a bit of a hacker then became professional over time.
most startups dont use .net because they need the cheapest alternative. many schools also heavily favor java and unix environments which leads to grads who prefer them.
What I love about this post is how the author contradicts himself. On the one hand he says experience is not important and he would rather ask a tough interview question to get an assessment. Then he says he excludes anyone with .net experience.
I think what he is experiencing is the fact that since the .net environment is so easy to use, there are .net developers who are successful that wouldn’t be in other platforms. From a hiring point of view, it means a higher percentage of ‘no-hires’.
So while I agree with the poster that because a language is difficult to use, it makes a natural filter — its hardly disparaging to .net when you say this.
And it doesn’t mean there aren’t great .net programmers. It really means the author doesn’t know how to screen past the .net headlines because he doesn’t know enough about the platform to spot the poor performers.
If you can’t build a 1.7 oz burger in .NET, I’d wager that you’re not a good enough developer to build a 1.7 oz burger in ANY language.
Hire based on skills, understanding of software development concepts, and the ability to quickly adapt to different technologies and platforms. Automatically disregarding people because they have .NET on their resume is like a trucking company automatically disregarding any truck driver because they’ve driven a Peterbilt.
When you slam a technology preference with vague statements, nobody’s correct.
Blogged my thoughts on that: http://bit.ly/hGLNOt
“Programming with .NET is like cooking in a McDonalds kitchen. It is full of amazing tools that automate absolutely everything.”
A Formula 1 Car it’s a amazing car, full of amazing tools, Just give it to a CEO to Drive… 🙂
I’ve been coding for 29 years and over that time I have worked on Unix, Windows and Apple platforms. On each, one is typically funneled into a particular language/platform/environment. Of all of them, .NET is, by far, superior for the fact that it is well documented and broadly supported internally and externally which lends itself to reducing the pain of completing a project.
Comparing C# to Java is like comparing a car sitting in your driveway (the C# car) that you put the keys in, start the engine and then drive away, compared to a car in your driveway (the Java car) that doesn’t use a key which you must figure out how to open the door through the trunk. When one asks the Java car maker, “Hey, how do I open the door?” you get a bit of silence before another Java car owner yells at you for being stupid for asking such an asinine question. The point of my comparison is to point out that the roadblocks to development are lessened. Just because something is easier to go zero to sixty, doesn’t mean one doesn’t think about where they’re going.
I disagree with your viewpoint, but you are entitled to your opinion and it is your company. Good topic and interesting to discuss. As a software company owner myself, I won’t hire people who are stupid, and that is the single determining factor of whether I will hire someone or not.
I learned how to write thread safe code on .NET. I learned how and when to implement the factory, singleton, and visitor patterns on .NET. I learned to design systems following the abstraction principle, not repeating myself, seperating my concerns for single responsibility, on .NET. I learned the value of and how to create good unit tests, integration tests, and build verification tests on .NET.
Is my skillset still irrelevant outside of .NET?
I always wondered why ASP.NET causes me to vomit and PHP makes me smile. I totally agree .NET is programming by numbers. Without the magic of Visual Studio .NET as a platform would not exist.
Go PHP, Perl, Python, Lua, JavaScript, Java, C, C++, solder iron and multi-meter!
Your article made my day!
All the opinions aside, I’m really shocked that the CEO of a startup has put himself at such risk by openly admitting his practice of discriminating against specific applications.
As a practitioner of many languages, and only having touched .NET a few times, I can’t really understand the point of this article except that it seems like a really good attempt at linkbait.
Any person with any amount of common sense, and expertise in development, knows with certainty it has little to do with the platform and more to do with the person writing the code.
Excelent post, lets back to C for first learning language!!! lets use c++, python, php…. in our projects. Dont know about java it seems to be in mcdonalds way…
“We need people who can not only cook burgers, but cook anything, from scratch.”
Maybe I’m missing the point, but don’t you “only cook burgers”?
cheers for having the balls to speak the truth. as someone who has a similar job role (ceo) at a startup, i am well aware of the pitfalls of using certain languages e.g. java, c++ or anything microsoft produces. when the tools are too automated it allows developers with low talent to mask their lack of skills.
everyone who is complaining here likely has a vested interest in the propagation of more garbage MS software development paradigms e.g. they code .NET for publicly held company X. you know you have really spoken the truth when people become as enraged as they have in this blog post. after reading your post and seeing some of the comments i must say that your point has only been further validated, despite all the vitriol directed towards you.
This article made me laugh. As I read it I kept expecting it to reveal itself as satire. But alas, it appears the author was serious.
I started using an Apple II in 1980 and have been working as an IT professional for over 30 years. I’ve programmed in everything from mainframe assembly to .NET. Over the years I’ve heard the author’s basic premise (essentially, that programming environments which further separate the programmer from the nitty gritty underbelly of the environment reduce the quality of code) is, in my experience, completely wrong.
History repeats itself. I remember the environment at WordPerfect, where a friend of mine worked for several years. Before the company was bought out the policy was that all code – absolutely every line – had to be done in assembly. This included simple utilities that could have been written in 5 minutes using a high level language but instead took some poor chump all day.
Languages progress because we are able to build on what has already been created. Try programming in machine code if you don’t agree, see how much you get done.
I know of any number of startups that use .NET (generally C#) and which seem at least as viable as startups that don’t. Plenty of successful programs and websites are written in .NET; I myself developed and sell a utility for email systems that I wrote in C#; in four years it’s had exactly one revision that was required only to accommodate a new release of the email server it runs on. The language was easy to learn, the programming environment was powerful and stable and the code is reliable and fast. Not as fast as it would have been had I written it in assembly code of course, but fast enough that I have never received one complaint or query regarding performance issues.
I would submit this to the author: if you’re having trouble finding enough programmers, consider that it may be due to your own lack of flexibility as illustrated by your resistance to modern programming environments.
Languages are tools and it’s foolish to be passionate and irrational about a tool. Adults who are focused on getting things done understand this – when was the last time you saw construction workers refusing to use a Dewalt drill because their construction site only allowed Makita?
I think the main crux of the argument should have been stated right at the beginning, or at least made a little more clear:
You’re wary of coders who STARTED with .net as a platform/language and have not ventured out of it.
I *started* with ANSI C and FORTRAN when I was 7 years old 26 years ago. (technically I started with LOGO at 2 and BASIC at 5)
I almost exclusively use .net at this point because it’s what I do for a job. I don’t tool with server/compiled programs anymore, I work on websites with T-SQL dbs and there’s no reason at all to not use the MVC2/3 platform when I’m trying to churn out several a month for clients who all use windows servers.
Let’s be clear, 13% of 360 posts are in agreement with this “article”, including deluded fanboys, white-jacketed CEOs of In My Head I Wun A Weally Big Entepwise and the sort of people who find their day’s biggest challenge is getting dressed in the morning. A further 14% are philosophers who stroke their beards and see some merit behind the thick laquor of ignorance exhibited by the OP, but can’t quite get past the Stupid Factor and so don’t make it out of their internal dichotomy before going back to Slashdot. The majority of the remaining responses disagree, either with playground insults, by pasting in their usual responses to any claims that their preferred technologies are imperfect, or through reasoned argument which the OP wisely chooses to sidestep entirely since even a cursory attempt to answer it would be to render his position untenable. Oh, and in Bizarro World, 25% of recent posters agree with the OP; that told ’em. CEO flex.
If your Saturday edit was the main article, this would have been a great post.
“Here’s why startups don’t use .Net” is better than “.Net sucks and we’d never hire anyone who uses it.”
The article is correct for most part. While .net is more productive then C++ it mostly because Microsoft stopped making/improving tools for C++.
Also .net is SLOW!
F# is productive as a Functional language but nowhere near to Concurrent Clean.
This is why CEO’s and business people, should not be envolved in the technical hiring process. Here is what they are missing. C++. you can code in unmanaged c++ and managed c++.net at the same time with visual studio. What does that mean? it means you can code to the moon.
“However, if you need to make a 1.7 oz burger, you simply can’t”
This sentence alone is enough to prove you have no idea what you’re talking about when arguing about .net. Yes, .net related tools (Visual Studio specially) has lots of tools to automate stuff, but these tools are not the framework itself and they generate code automatically that you could write yourself.
The so called “wizards” are a bad thing because many people grow dependent on them and don’t really know how stuff work and end up limiting themselves and developing bad habits based on wrong premises. But they can be a good thing for productivity, but only if you already know what they are doing. I don’t like them myself, because I don’t like to loose control.
Having said that, the .net framework is more powerful than most frameworks/languages/VMs. Specially if we are talking about windows desktop applications. You CAN DO more than most frameworks/languages. Not only it’s not limited to on kind of application, it takes the power on them to the next level. .Net framework allows you to:
1 – Develop Desktop Apps
2 – Web Apps
3 – Embedded Circuits Apps
4 – Games (XNA Studio)
5 – User Mode Windows Drivers
6 – Cloud Apps
All of this are pretty much native capabilities of the framework. And the list goes on… What other technology allows that (and very well)?
.Net also allows you to work in relatively low levels for those who know how computers work (not like you said) and the people that don’t understand it can put that as their own fault, it’s their limitation, it’s not the fault of the framework.
I think before posting nonsense on the web, you should educate yourself about what you’re talking about. I’d never want to work for a company that takes such assumptions as truth and miss the opportunities to work with great people. Let’s see how your company lasts, I wouldn’t invest on it. As I wouldn’t in any company that dismisses any other technology in such ways.
this means you are multiplatform if you didnt get the hint
Hmmm… not sure where you got your ideas from, but you couldn’t be further from the truth. .Net doesn’t force you to turn out cookie-cutter anythings… for those among us actually able to program properly, it allows us to do away with the nitty-gritty low-level stuff (and yes, I’ve written entire systems in machine code in the past) and concentrate on higher-up things such as proper algorithms and system design.
The reason most startups don’t use it is that it isn’t free. Things like PHP, MySQL and so on are free, and trust me: you get what you pay for.
I gotta disagree with one of your Saturday points on why .Net is not used in startups.
I think it is because the LAMP stack is FREE. As in beer. As in they don’t have to pay huge licensing fees to Microsoft. And that is understandable. Hopefully this will change as Bizspark becomes more well known. Thousands of dollars for an IDE and a SQL Server license will kill a startup.
I think you are correct about some things. I was a .NET developer for years, but have recently been put on PHP projects. I quickly realized how warm and cozy I was in my insulated (abstracted) .NET world. I complain about how much more code I have to write in PHP, but I know it is good for me to learn the underlying details of Web Development. But honestly, I am far more productive in .NET. Abstractions are good if they make us more productive. .NET is extremely powerful, and you can make 1.70, 1.71, or 1.72 oz burgers if you want. You can’t discount .NET’s power and simplicity that easily.
<3. I worked for approximately 3 years at a .NET shop while actively building my own projects in Rails. My employer (fool.com) was extremely progressive, and tried as much as possible to avoid getting stuck in the trap of automated .NET tools, but the framework and its ecosystem simply aren't designed for that. There was much pain and frustration, as well as a divide between developers that wanted to do more fashionable web work, and developers that wanted to write stored procedures. I tried to bring in many development ideas from my experience working with rails, and certain groups of people would be extremely excited while others would spend all the time they could criticizing. .NET experience really does seem to transform into a mental disability in some extreme cases.
I think the most harmful aspect of .NET usage is the lack of transferable skills, as well as the lack of exposure to trends in development. Developers that really go off the deep end using the automated tools seem to have very little idea of how they could ever do something similar in another language/framework. If you don't understand the fundamental concepts behind something like web authentication because your framework hid it from you, then in my opinion there is no way you can be a truly valuable developer. This is a real tragedy.
Wow, you have just alienated your company for a large portion of the developer community. There are great tools available out there for startups in the .net toolset. Checkout appharbor, a recent YCombinator startup. Microsofts strides toward a more open codebase, such as Asp.Net MVC, are spectacular. Next time do a little research or possibly have a few developers working in the industry read your posts before spewing forth.
Started to reply, ended up blogging instead.
http://blog.matthewadams.me/2011/03/net-like-working-at-mcdonalds.html
I’m way behind the curve getting in to this discussion, and I’m not even a coder I’m an infrastructure engineer working in an HR capacity, but I still feel that I have to point out that everything you’ve said about .net is spot on.
We have something similar in the Cisco world, a pair of monsters that go by the names ASDM and CCA. Don’t ask me what they stand for, that knowledge is the sole property of the heretics that handle the beasts. What I do know is that these “tools” allow you to take some immensely powerful, complex, and malleable routers, switches, and firewalls and reduce them to a set of virtual networking tinker toys.
I’ve lost count of the number of times I’ve fielded calls from other engineers who chose this dark path of graphical interfacing, and had to fix their methodology before I could even begin to help repair their networks.
“Well, the modules are all in the correct order, I don’t know why it’s not working.”
“I opened the security screen and all the lights are green, so I don’t know how the firewall got penetrated.”
“How can I tell what’s happening? The diagnostic screen doesn’t even have anything like what you’re talking about.”
Those aren’t the statements of engineers, those are the shrieks of monkeys who don’t get the banana they have been conditioned to receive when they press the red button.
I’ve heard this too from the coders I’ve worked with. The newly minted with nothing but.net don’t understand troubleshooting. They don’t get the process that goes in to writing a good program, and they seem to be completely ignorant of the elegant hack. Instead, they slather on a thick layer of “whatever works” and learn to manage the expectations of their customers.
And that dog sir, won’t hunt.
Extending your food analogy:
“Theory is the beef. Language is just the garnish on the side.”
Looks like you confused the garnish with the beef.
Ouch.
Startups don’t use .Net? Maybe that is why so many of them fail.
I’ll go one better, than “drop dot.net”.
I stopped using Visual Basic!
I stopped using Microsoft programming languages!
I don’t use C, C++ or event C# !
So how do I program ?
I write pure Windows API code!
I use BASIC (don’t laugh)!
I use PowerBasic (anybody remember TurboBasic)!
Well, didn’t stop there.
I wrote my own GUI Engine so I don’t have to use the API to build applications.
While dot.net apps tend to be huge, I can write huge complex applications which can fit on a floppy disk.
Just about to release fifth generation of my software tool (for Powerbasic users, so sorry guys/gals if you a Microsoft language you can’t use it).
Totally drag and drop (WYSIWYG) Visual Designer front end, with a runtime (DLL’s) which do more in one meg, than dot.net in 20 meg.
GUI engine does all the Forms/Controls stuff, plus drag and drop engine, graphics engine, 2D Sprite engine (proprietary with no DirectX or OpenGL), ownerdraw, customdraw, superclassing engines, subclassing engine.
Latest version has new Hybrid (GDI and OpenGL) control which is a real window class (control) which has OpenGL 3D built in with 3D Graphics Scripting language.
Oh, did I mention it was built without dot.net, without Microsoft programming languages, without C,C++ or C#, without Visual Basic ?
Oh, and it also fits on a floppy disk !
(anybody know what that is)
No dot.net, C#,VB#, etc. for this developer.
I don’t understand why the .NET framework is so popular! It is a meta environment running on top of the operating system just like Java. The non-Windows implementations do not have all of the capabilities of the Windows version, so it’s not truly cross platform. I don’t see why someone would choose to use this bloated, sluguish, unresponsive framework? Shouldn’t Win32/64 code run just better since there is no runtime between the code and the system? I realize .NET has a large amount of built-in functionality but the same thing could be implemented in native code as well, like Delphi, C++Builder or Qt framwork for instance. C# is a grate language, .NET is a poor framework and overall concept.
The amount of frustration exibited by the .NET fanatics shows that they are indeed a bunch of loosers…
I hope the programmers you have managed to hire are as good as you claim and will never have to lower themselves by asking a question in StackOverflow.com, a system built on top of .NET and Microsoft Technology.
Remember, what makes a startup successful is not only the idea, but most importantly the people within it. So if you have to choose the right platform/language for a specific task you have to take an open minded approach and choose the right technology, wether it is PHP, Ruby, .NET, Java, Etc. But something tells me that if this startup of yours have people like you it will probably go nowhere.
Maybe I just don’t like you because your name is David: http://t.co/uOsBJE7
I was really hoping to be more offended but this is really:
My American publication doesn’t hire British editors. Yes, they may be completely competent but they’ll always stumble on the spelling of “color.”
Just keep in mind that not all publications are American just as there are lots of startups for .net devs, just not the ones you work with.
Hopefully you have a better reason to hire someone than a resume anyway.
Maybe .Net is insufficient to solve the no doubt intense problems of expense tracking software. Works fine for the 3D missile simulators I work on though.
I can code in ASM. I can code in C#. I can code in a lot of languages – don’t hate me for it.
I tend to agree with the author with regard to hiring these types of programmers, although I’m surprised this is being targeted at Microsoft programmers. For the same reason .NET is used to program at a higher level, non .NET programmers choose Python, Java or Ruby, the last of which probably is more cookie-cutter than .NET.
I don’t know what the correlation is between start-ups and tools they select. The last start-up I worked at was 15 years ago, and we targeted Mac and Windows, programming in C++ at the time.
I imagine if I was creating a start-up, many factors would go into my decision for what tool-set I’d select, but why hire programmers when you can outsource?
Developer A used a toolset that was free and super flexible with no pre-built components. Developer B used a toolset that was free and a little more rigid. Developer C used more expensive, heavy, pre-built components that he could drag and drop. Maybe you can find a small child that will tell you how the story of the three little pigs turns out and how picking the right tool for the right job is an important lesson to learn.
Then maybe they can tell you the story of making stone soup which tells you how you can do amazing things with the tools you have available if you are smart enough.
Dude… startups don’t use the Microsoft stack because it’s expensive, period. You know that’s the only reason – stop trying to pretend it’s because of some actual quality of the product – it’s because of the cost and nothing else. Why be the typical pointy-hair? You could take the time to actually educate yourself on this subject. You don’t need to do this kind of an insulting article to justify your cost-based decisions. It’s good enough to simply say “we are a startup and we don’t have the money for .NET enterprise servers or developers” – if your people don’t have the confidence to trust that reason and that reason alone, then you aren’t a good CEO.
@Jeremy
First of all, your comment was insightful, thoughtful, and well balanced. Thanks.
Not sure the hate surprises me either, however, I still find it disgraceful. We are all part of a community, like it or not, and it would be a higher road to help, rebuke, assist, correct, commend, etc… more than lash out. Which of us hasn’t been wrong at least once and not realized it? Oh well.
— Some additional perspective —
Here is a brief timeline of me:
1. Started commadore 64 programming when 6 years old.
2. Moved to gw basic, quick basic, q basic
3. Moved to Visual FoxPro, database programming in general
4. Did a stint of C and C++
5. Learned some lisp, vb6, etc…
6. Then went to PSU for Electro-Mechanical Engineering. Started to learn Linux sysadmin.
7. Left there after a couple of years, learned PHP (hard core), and started a business.
8. Built a team, wrote very high end PHP apps.
9. While waiting around in hospital after we had our 2nd kid, decided to learn .NET (Framework Version 1)
10. Started to hit serious limits in PHP for enterprise development, and saw PHP community not being lead in a proper direction. Evaluated C++, Java, .NET, PHP, Ruby… Picked python.
11. Wrote Python application server software to connect PHP on front end to Python on back end. Learned OS networking stack.
12. Decided to drop PHP all-together and focus on Python. Contributed to WSGI / Python-Postgresql Development. Wrote one of first Python 3.1 web frameworks.
13. Still running business and 2 others I started. One uses PHP, one uses Python, one uses brooms and sweepers (literally).
14. After 4th kid, started working with yet another company who is a 100% .NET shop. Putting my background in .NET to good use…
15. Got tired of Windows, so switched to OSX at home. But still use windows at work.
16. Program Arduino and Phidgets in my spare time. I have a web app that let’s me control the lighting in my house.
So here I am, with PHP, Python, VB.NET and all of the glue languages, managing server clusters on Linux and now windows…
Never interviewed for a job since the grocery store when I was a kid. Am I better than someone else with a different path? Nope. Is it a unique perspective? Yep.
I’m currently in the middle of learning all about ASP.Net MVC3 on .NET 4 with VS 2010 deployed to Windows 2008 server. Another huge learning curve for someone with mainly a Linux background.
Do I prefer to program in Python? Yeah. Is it right for this (last mentioned) company to stay on .NET? Yes, without a doubt.
I get frustrated with not knowing what to click on in Server 2008 to make it do something. But I remember the same feeling many years ago when I didn’t know what command to give to a linux terminal. It took me 10 years to get a really broad understanding of linux (just from a lot of use), and still there are dark corners of it that I haven’t even touched.
Am I concerned with automation and security aspects of deploying on Server 2008? Sure, but I’ll figure them out and make it work as good as possible.
The real question is “can we hit the business objective”, and the answer is a resounding “yes”.
—
For reasons I’ll never agree with, Microsoft did not have a free platform development language and IDE between the days of q-basic on DOS and recently with the express editions of Visual Studio.
This is an obscene failure on the part of Microsoft.
During those years, all the kids who wanted to learn about computers, programming languages, networking, compiling, etc… and had little to no money… How would they even do it on a Microsoft language? Not to mention that .NET didn’t even exist for most of that time.
I think here is where we see a lot of really innovative people went to open source ($free) languages and tools to satisfy their innate curiosity and drive to invent.
Had Microsoft been more thoughtful about this, I suspect that their would not have been so much of a difference.
(As a side note, it saddens me today to not to personally even know 1 kid who is using the .NET express editions, or programming of any kind on their own. Has Facebook, Texting, and PS3 really taken over the world?)
—
Is GOTO evil?
Do guns cause violence?
Does alcohol cause drunk driving?
Does McDonald cause obesity?
Does .NET cause a lack of innovation?
Does PHP teach garbage coding practices?
These are all real questions that people are asking today for legitimate reasons that they are personally experiencing. I’ve been touched by all of them on a personal level (including having been shot (indirectly, by accident))… Food for thought.
Your Microsoft’s kitchen / burger analogy is has some merit but your description is off. You can make any size burger you want, but every burger you make regardless of size will have some amount of fat. The tools / objects are designed to work for most cases therefore, they will carry more overhead then what is actually needed for your particular case. This is a long since complaint of .Net since it was first introduced back in 2002, and one that is reportedly finally being addressed in the next framework version. http://player.microsoftpdc.com/Session/1b127a7d-300e-4385-af8e-ac747fee677a The ability to augment / tune the compiler to meet your specific needs for a particular class. Other then that I think the rest of this article is just pure uneducated bias. And I say that from a very diverse background (Java, C, C++, C#, VB, VB.Net, Ruby, PHP, Delphi, Pascal …) and over 10 years experience not counting the Middle School and High School tinkering. And for the record startups need a working quality product fast and therefore, .Net is an excellent choice in almost any Internet based startup.
Thumbs up Jason Garber. Your post is without a doubt very intelligent. I completely agree with you in the matter that no truth is absolute and if it were, my motto would be invalid:
“Our heads are round so our thoughts can change direction.” – Francis Picabia
Having said that, my personal responses to your questions:
Is GOTO evil? – I beleive so, if you’re using coding them by hand. But in the end, every code becomes a series of GOTOs when they are compiled, so all of us programmers produce evil >:)
Do guns cause violence? – Not directly, I beleive men cause violence but I also beleive that if we did not have guns, less innocent people would die as it’s very hard to dodge or run away from bullets. It is much easier to run away from someone with a knife or his bare hands. I beleive guns cause deaths, if they didn’t exist or there was more control over them, many people would not have died.
Does alcohol cause drunk driving? – Yes, but again, alcohol cannot take full responsability, the real fault lies with the men that use it.
Does McDonald cause obesity? – It depends on the person (and how much the person eats). I for example, eat McDonald’s almost everyday (a lot of it) and weight a little over 120 pounds and I’m 5’7″ tall. Have low levels of cholesterol and triglycerides.
Does .NET cause a lack of innovation? – I think that’s true only for the article poster.
Does PHP teach garbage coding practices? – Don’t really know PHP to say anything about it. And I think the article author should’ve done the same regarding .net.
All these posts about licensing fees being the reason for not chosing .NET is just plain silly. Microsoft has addressed these start up costs through MANY programs. BizSpark, WebsiteSpark and even DreamSpark.
Do your research before posting things that haven’t been relevant for 5+ years!
Oh and before BizSpark, they had the Empowerment programs.
I agree with all of the commentators who have mentioned that the tone of this article is “rude” to say the least.
I think the main article is largely lacking in worthwhile content, but the comments have been interesting (which is why I am commenting instead of closing the browser in disgust).
Many comments have identified the “cost” of .NET/MS licenses as a reason to avoid .NET platform for startups.
I would like to point out that when considering the “cost” of technology one should also take into account the number of hours your developers will spend using outdated tools and decade-old technologies to reinvent the wheel.
Consider the documentation, the support communities, and code examples available as resources to you and your developers to inspire new ideas / provide solutions to old problems.
Finally, assess the risk of losing your developer in terms of your ability to replace them–consider the ramp-up time for a new developer to grok your code base.
Fact is, when all of this is taken into account… the state-of-the-art tools and technology, the large MSDN community support, the relative ease in finding replacement .NET developers, and their ability to quickly understanding patterns-based code… .NET starts to make a LOT of “dollars and sense” for a start-up.
Therefore, I’d say it’s incorrect to dismiss .NET for start-ups simply because Visual Studio license costs more than Eclipse.
“.NET is only more expensive if your time is worthless”
This is an interesting twist on profiling. I do think those that are interested in coding will have a lot of experence with a variety of tools and platforms, but where I disagree is that .Net encourages bad practices. I would actually say that .Net gets the nitty gritty out of the way so you can focus on the business problem and not have as much “fun” worring about a complex system running on 1s and 0s. I myself enjoy learning about the ins and outs of the modern computer, but business demands that we (working developers) work on the business problem and not the computation hundles of less refined languages/systems/platforms.
The point you use to backup this point is startups. Startups don’t have money. That is the main reason they don’t start with Microsoft. I’ve work on many projects that started off with perl, PHP, Ruby, etc… and were later converted to a Microsoft platform. This is the nature of startups. It has nothing to do with the fact that startup programmers are smarter and thus use other platforms or languages.
I think to get people to read my blog I’m going throw out false statements about those who play Uno are lazy.
I guess this post is actually good for the debate and comments. Although non-threaded comments are not a good place for a discussion I feel that if the author of the post has time he should be able to write another post, taking all the good arguments and writing a coherent post.
I am not surprised the comments keep coming in. And I think the reason the author is surprised about that on sunday no less is because he misjudged the .NET community. Even though many of them work in ‘the enterprise’ we too are very passionate about our work. We take pride in craftsmanship.
As an example I would like to point out the amazing amount of blogs, examples, podcasts etc. about design patterns, dynamic vs static, OO, SOLID principles etc. .NET rocks is one amazing podcast, those guys will tell you something about .NET!
And .NET is a pretty innovative platform too. The C# language is managing to combine OO, functional AND dynamic programming in an elegant way. You can actually learn C# in a couple of days and get started, but to master it takes years. And let’s not forget about the Singularity OS research project. Using the .NET managed runtime to create process isolation without hardware support? That’s fracking cool stuff. Did you know in .NET 4 you can code with contracts? That’s the kind of stuff that get’s added after it has been researched. Who knows what the future will bring?
Those who want to understand C# deeply should find interviews with Anders Heljsberg, that man is very smart and he knows exactly where he wants the language to go. Listening to his recent talks about dynamic programming, parallelism, the compiler as a service… man, that stuff blows my mind! I have no doubt C# and the .NET platform can be used just as well for any innovative web application or web service.
So the whole point of debate is useless. The author wants to focus (in his sunday edit) on the amount of people who agree. But I think you owe it to yourself and your company (and your clients) to have a round of interviews with .NET developers only. I think you will be pleasantly surprised and even having one good .NET developer on your team will be a tremendous bonus.
But don’t get me started about VB-programmers, those guys are morons…. :p
I still think you are pretty ignorant when it comes to modern .NET development. And as for startups, there are 35,000 registered on the BizSpark website. It might not be as cool or hip as Ruby, but it gets the job done.
http://www.bizspark.com/Partners/Pages/Startups.aspx
This has to be one of the most idiotic things I’ve read.
I program Java and C# a lot, they are very similar languages. C# gives you a few more nice tools as a programmer, but they can can slow down your code if you use them improperly (speed it up if you use them properly, as the optimizers can get hints). I can add JavaScript, C and C++ to my list.
What I can say is, C# definitely gives you more flexibility with modular code than Java, and it is comparable in terms of ease of integration (pInvoke) to C or C++ (pInvoke is probably easier to use than dlopen/dlsym, which is already pretty darn easy).
Yes, it is geared towards making certain classes tasks (a whole lot of them, in fact) easy, but I’ve never seen anything other than calling a dynamic library that exports with a convention other than cdecl, stdcall (or one other convention I can’t remember), that .NET hinders you from doing.
That includes writing cross platform applications.
I worked at a startup. They used C# and .NET. They are hugely successful. Time to market = 6 months.
.NET is not a “programming language”. Saying .NET programmer is like saying JVM programmer.
C#,VB,etc are “programming” languages that you program for .NET “environment”.
You are confusing Ruby on Rails with “.NET programming” regarding your concern on being able to make 1.7oz burgers.
Now that I have taught you some basics…. You use PHP programming ? really ? LOL…. Can you implement a custom Grid computing platform on the server side using PHP ? LOL. ROFL. Check out many financial industry companies in NewYork and Chicago area who are using a hosted solution by certain company written entirely in C# to be run on “.NET environment”. What is that you said about making 1.7oz burgers ? You use PHP ? LOL….
Lastly, do you even write code ? or do you just confuse your employees code as your own ?
-thanks
Mario
PS: I am an erstwhile C++ programmer. 14 year total experience. 10 years C++ and 4 years C# on .NET.
Only experienced .NET developers can judge the .NET framework for what it is. So only their arguments have technical merit.
For instance: some commenters who have had limited experience with ASP.NET may say that the tools are expensive, drag-and-drop is limited and web forms pages have terrible rendering. You will often hear this from people with a few months or a single project done in ASP.NET, or from people who have read these sort of arguments on the internet.
But here is the actual truth about ASP.NET: it has no limits nor implied/forced notion about how to program a web application!
– The cost of tools is very low compared to the added value. Did you know that for around 1500 USD can you get great refactoring support, unit testing, SCM and database tools integrated into one IDE? But anyway, you can get the compilers for free, either from Microsoft of from Mono.
– There are many options for building ASP.NET: 3 (THREE) frameworks, following 3 different patterns:
A) for beginners (WebPages as found in the free WebMatrix software)
B) for advanced (MVC, which is OSS and also available on Mono)
C) for lazy enterprise devs (WebForms, very friendly for component development)
– The spec for ASP.NET actually only requires an implementation of ONE interface with ONE method and ONE public property to implement any web application!
I bet most naysayers in this thread have no idea about that last point, because it takes experience to understand this, but it’s true. And I have the code to prove it.
You can compile this with the freely available csc.exe compiler and throw into a web app with 1 line to configure an endpoint in the web server (IIS or Apache with mod_mono):
using System.Web;
public class HelloWorldApp : IHttpHandler {
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = “text/plain”;
context.Response.Write(“Hello World!”);
}
public bool IsReusable { get { return true; } }
}
– Anybody telling you ASP.NET is bloated has no idea what they are talking about.
– Anybody saying ASP.NET forces you into something has no idea what they are talking about.
– Anybody saying you need expensive tools to write ASP.NET has no idea what they are talking about.
The proof is in this post, and comments that are proven false by this post can be disregarded as hearsay. This comment also invalidates some of the points made by the author of the original article, which I hope he will address in a follow-up post.
@David of Expensify: did you actually know you could have this much freedom using ASP.NET before you wrote this post? Now can you see how a good .NET developer sees no limits when using ASP.NET?
Looks like you got the attention of the top .NET blogger.
http://www.binplay.com/2011/03/why-ceos-should-not-be-hired-to-write_28.html
You are writing outside your field. It’s clear that don’t even understand the basics of .NET.
You can see my response here, I think my post was “too long” for moderation to approve:
http://www.codeproject.com/Lounge.aspx?msg=3832090#xx3832090xx
I think you have it backwards. It isn’t that .NET can’t be useful to startups, as others have pointed out. It’s that the typical startup/FOSS NIH mentality rejects .NET a priori without any real consideration of what it brings to the table, and then rationalizes its actions with half truths or even outright lies.
Big development environments invariably require a commitment, but once you make it, a lot of things get easy and fast. The challenge is to pick the environment that’s right for the project. It doesn’t sound like you have much interest in that. If I were your customer I’d be dismayed, because your article amounts to a declaration that my project will cost more than it has to.
.NET is on the same level as LabVIEW in the way of programming. You connect pre-made chunks together. You can sometimes modify a few of the internal bits, hit the GO button and you’re.
You are still a programmer, just not the on the same level as someone writing lower level code in C, Assembler, etc.
As you can see by most of the comments, Microsoft .NET is very popular. It is like a drug and like all drug users, they want you to like the same drug they do.
There are startups that use .NET libraries. These people are stuck supporting only platforms that Microsoft think are useful. That’s fine, those are most of the current computers used today and you can make a thriving business doing that.
How well does .NET work on Android, iPhone, Solaris, AIX, HP-UX or even Linux. What about the embedded systems market running non-MS operating systems?
OTOH, there are startups that do not use .NET libraries. If this is a conscious decision, then these companies are trying to avoid drinking the Microsoft koolaid and getting on the Microsoft upgrade bandwagon. They will have a tougher time, unless they provide web services – like Expensify does.
I don’t think all the lovers or haters really understand that this is just one persons opinion. We all have opinions. As a CIO at another startup, we also avoid using .NET, but that is so our code can be ported to 10 different platforms easier, not because the .NET libraries aren’t wonderful. Microsoft has some really smart people.
So does Google. How much of Google’s code do you think uses .NET libraries?
“If you ever want to work in a startup, avoid .NET. It does you no favors. ” – really? I guess by that you mean companies that are only ever start-ups?
.NET will help get your start-up concept to market (looking pretty swish and scalable) quicker and cheaper (because there are squillions of .NET developers out there) than any other technology… the sooner you start making money, the sooner you can hire the best .NET developers who will show you that you can do ANYTHING you can dream of with the technology.
We have some programmers from the .NET factory here… They are agggressive and defensive much like the ones who retaliated on this post. COBOL has been dead for years and you dont see me crying just because the world moved on!
I suppose that if you want to re-invent the wheel of most everything you do, .Net is not the right option for you. Hope your start-up has some real large bucks coming in for maintainability. As someone who has worked in PHP, Java, Javascript and .Net … I would say Microsoft outdid itself in that arena. Of course, based on your statements, I am assuming you looked at some VB .Net 1.1 entry level programmers code to judge .Net.
Yet, I don’t hear any complaints about people using SQL. I mean, SQL is a high level programming language as well right? I mean, when I start a new project, I don’t need to re-write the way it accesses cache and session or re-write how to make a connection string.
I know, I know … it’s not fair comparing .Net to SQL. In .Net, you get a canned data connection module … but you can re-write it if it doesn’t suit your needs. And you get a canned authentication/authorization system. But you can re-write that too if it doesn’t meet your needs. Oh, what’s that … you don’t like the size of the view state? Oh, so you didn’t read past the first chapter as to how to turn off view state. Hmmm?
Very instructive, thanks
This discussion seems to be 90% personal attack. If people believe their arguments are valid, and persuasive, why add all the personal abuse? Whether or not .Net-only programmers are a good fit for a small start-up is open to debate. But I would certainly advise against including abusive people into a programming team, whatever their language or platform. Today they attack people for recommending against their technology; tomorrow, who knows? Maybe you should add screening questions to your recruitment process to weed out people prone to toxic behaviour. Anyway, whether or not I agree with everything you said, all the best for your ventures.
F*** all you flamers.the man’s got a point – .net is so easy they could start teaching it to kindergarten kids. .net encourages people to not think about what the code they’re writing does…a complex subject such as threading and synchronization can be summarized in 3 lines of code for .net – trying to compress threading in 3 lines of C# code is not saying that the platform is crap or that the programmer is less gifted…it says he will know a lot less about threading than someone who just read the manual on posix threads.
to summ up:
.NET creates incompetent programmers and i’m glad for it…otherwise the rest of us would be out of a job.
Perhaps I’m overstating the obvious here:
The reason you don’t hire .NET Programmers is because GOOD programmers (with experience in a variety of platforms and languages, including .NET) don’t appreciate your kind of bias against any one platform. You’re in effect saying that you’re an auto-shop which doesn’t hire people who use power-tools. When you grow up, maybe you’ll put aside your biases and start respecting people BECAUSE they’ve worked on a variety of platforms, not in spite of it.
Oh boy, what a clueless person you are.
A mediocre programmer will build mediocre application no matter what tool they use to build applications, in the same token, a talented programmer will build great application no matter what tool they use to build these applications.
Java or .Net, if you suck at it you suck at it period, squirrels or no squirrels.
I will say though that Java technologies appear to be more stable from the point of view that they are well supported for many many-years and so this allows Java developer to master the technology at length. Compare that with Microsoft stupidly ever changing technologies stack (for no good reason other than to push their own agenda). It’s hard to keep up so you never have time to dig deep into the technology, by the time you try to dig in Microsoft obsoletes that and comes up with something new that basically does the same thing in some other stupid way.
sorry for my english, this discussion its very interesting
TRUE: nowdays newbie programers should learn C or Python, for first programming language. You should learn how to build data structures before using a pre-constructed TreeMap. You must control events manually over a button before dragging buttons with the mouse.
TRUE: for industry frameworks like those used for .Net, INCREASE productivity , you will make money faster (i supposed this assumption its for real) and you will be an efficient DEVELOPER.
TRUE: when you work with .Net for many years you forget the fun of the programing JOB (for me programming job != developer job).
TRUE: when you work only with a programing language and a editor text like VI or EMACS you take the risk of not evolve, and not letting high level programing languages (the future) to substitute the old ones.
Programing guys like me are diferent from .Net guys, i use linux , you guys use windows, you guys check your mail in a Windows 7 phone i check my mails in an Android phone.
I dont like .Net, i use cammand line editors and i dont have money for windows licence. I am an acedemic guy. I would like to see the future of programming languages, i think they would be more like .Net, but one thing its true a macdonald guy will never make a breakfast like mom.
We all like computers, we all are taking this science to the highest level. Thanks all for your post, i’ve learned a lot about .Net
“If I have been able to see further than others, it is because I have stood on the shoulders of giants.” – Sir Issac Newton
If I missed the point somewhere in the commentary, I apologize, but aren’t most development projects nowadays done using tools as their starting point? Don’t you use MVCs, compilers, cron jobs, and the like to do your projects? Doing so means that you’re not building code from scratch every single time you do a project, but, rather, finding what someone else has done which gets you, at a minimum, to a Pareto optimality, and then building from there? If you’re not using someone else’s prior work (legally, naturally) to get most of the core plumbing work done, then you’re wasting someone’s time and money – be it your own or your company’s. Rare are the cases where you’re going to do something so innovative and game-changing that nobody has ever thought of any of the components to what you’re doing – much more rare than people will acknowledge. Denying a class of potential prospects because they like to use items which work perfectly well means that you’re narrowing down your candidate pool quite dramatically, and it also means that you’re creating a serious “Not Invented Here” culture in your company. Then again, if you’re not hiring great people who happen to be .NET developers, we’d be happy to take them, and we’re a Solr consultancy! I’d rather focus on bright, motivated, malleable, and fundamentally sound than on exclusion or inclusion of a specific platform choice.
Bravo and well said. I can almost say nothing but THANK YOU!!! It plain and simply needed to be said. You’re going to receive plenty of hate but its simply true. More often than not you’ll find that the .Net folks don’t even want to try anything else. And they’ll exclaim that .Net and the surrounding tooling are the best tools out there when they have no experience with any other platform or tools. And I think the most damning evidence is the existence of Alt.Net which serves the purpose of trying to categorize the world outside .Net for the people inside.
I just can’t say it enough…nail on the head with this article. Developers rooted in most of the other platforms and languages can pretty easily move around to others. The .Net folk are usually so far disconnected that they can’t. Either everything is too foreign or theres no complete paint by numbers system. The usual complaint is that the tooling doesn’t completely integrate everything the way Visual Studio does. And from my experience once you hit the end of what the tooling and OS can do you just sit back and say it can’t be done. Thats not how startups flourish.
Again….GREAT article!!!
Wow. I have been a coder for a long time. I’ve worked in BASIC, Haskell, Java, SQL, C, C++, VB, C#, Javascript, Python, CUDA, Ruby, DOS, bash… I guess a lot of others as well.
Maybe your rant is actually targeted at VB6 (the only broadly used language that has trouble going “off the menu” is “as different as possible from everything else” and has, metaphorically, its “thawing machine” grafted almost inseparably to its “cooking machine.” These are fair cops against VB6 (and previous VBs)). Is the chip on your shoulder really against VB (or just nebulous MS), and you arbitrarily updated your rant to “.Net” just to somehow attempt to make it relevant?
My code is running well right now in universities, Fortune 500 companies, mom-and-pop businesses, power utilities, state and national governments, and, yes, a number of successful startups. Probably 75% of it is .Net, mostly C#. “Why?” you (above) ask. Because that was what the client needed, and I met or beat the spec. (Coding is what I do for a living, and I could do it in COBOL with one hand tied behind my back if I had to.)
Only maybe 10% of this code was 1.6oz burgers, contrary to your assertion above even established shops do not want a cut-and-paste, VB6-style codebase. Another 20% was probably 1.7+oz burgers, 30% was deer, squirrel, or roadkill, and the rest was probably pi/2 deciliter creme brulee. I wrote custom encryption and steganography (usually in C# and Python, even, occasionally, in VB6), implemented high-efficiency network comms, solved combinatoric problems, simulated biological models… In all cases the language (and where applicable, IDE, OS, and hardware) were simply the tools. In cases when the tools helped, I leveraged them, when I had to exceed the boundaries of the tools, I did.
I have logic among C#, Java, Python, native C++, managed C++, and VB.Net as the changing client and/or environment demanded. I have translated my C# to native Linux C++ in about the time it takes to type — good OOP is good OOP, no matter which direction the path slashes.
The fact is, any tool (e.g. a GUI SQL builder) can make you a wimp if you let it. Visual Studio is no exception to this. (The applicant to skip is the one-tool-wonder, less common in Linux, but can be found anywhere.) But just because you cooked on a gas range for a year, doesn’t mean you must spend two years learning how to cook on a campfire. Maybe if you were the type of person who never tries to learn how the igniter works, or how the fuel is consumed, but just walking into a kitchen (or even working there for years) does NOT lobotomize a camp chef.
I have been very fortunate to have a long string of challenging jobs and contracts and I have learned much from every one of them. Very likely the primary reason 75% of my code is .Net is because of the irrational prejudice of people like yourself, who believe intelligence and ingenuity are platform-specific, and are thus afraid to hire “MS-tainted” devs like me for *nix gigs. My Linux, scripting, and embedded projects have been successful, just as my MS .Net projects.
Still, according to your math, my at-least-a-dozen years of enterprise coding really amounts to only 3 years of useful experience, and even those will be useless to any startup for the next 18 years as I must spend that time aggressively napping to unlearn the 9 years of horrid, horrid damage I’ve done to my cortex from daring to walk into the .Net kitchen.
The implication that you would hire a person with “took 3 year nap” on his resume BEFORE you would hire one with “wrote C# libraries that doubled company value” is blatant, irrational prejudice.
Coders make things work. We routinely surpass our environments. If you have an applicant who cant write a text file or call a command line compiler, then, sure, toss him out (just as you should also toss out anyone who believes vi, perl, and flatfile data on Gentoo is the best-and-only-solution to every possible problem), but you are a fool to think that, just because someone can code well inside a box, he cannot also code well outside it.
The logical decomposition of the task. The clarity of the implementation. Supplanting brute force repetition with flexible invention. The met spec. The beaten deadline. The satisfied customer. The springboarding company evaluation. I can tell you from direct experience, none of that is platform specific.
Mon 3/28/2011 6:16 pm. The McDonalds comparison is silly. The .NET language is capable of immense flexibility. The problem with it is it’s a script language from Microsoft. So Microsoft can, and usually will, harm your product on a random or intentional basis from year to year. Apple is less likely to do that, simply because smaller market share, and FOSS of course is holy and kind and would *never* do that. I prefer assembler myself.
I have been working with .NET for about 8 years now. A large portion of that was C# WinForms but the last few years have been Silverlight and occasional WPF. I have also dabbled in F#, IronRuby, and IronPython.
What I don’t get is why having excellent tooling is a detriment? If it gets the job done then great. If it doesn’t then you have to dig in and figure out what’s wrong. This is the same for every language.
There is a great episode of the podcast “This Developer’s Life” called “Abstraction”. The discussion centers around how much of “the stack” do you need to know? When I was younger, C/C++ was the standard with occasional tight loops written in Assembly. In large part we had progressed beyond discussions of how reliable flip-flops were or how we needed to customize the hardware. As processor speeds grew and compilers got better, the need for Assembly fell away and things like Java and Javascript became possible. .NET is simply an abstraction of programming languages. The point of all of this abstraction isn’t that we have figured out the best ways of doing certain tasks, but we have a pretty good idea.
What is most disappointing about this article is the lack of any concrete examples. Why is that? I am genuinely curious if the .NET programmers that apply are truly bad (highly possible) or if they just don’t reinvent the wheel (more likely).
Since your guys are most likely printing custom chips for your highly optimized web servers, there really is no need for programming languages at all. Am I right?
.net guys calm down, I am sure you are capeable and very skilled guys, but how much time ago haven’t you enter to uva.onlinejudge.org/ or http://acm.pku.edu.cn/JudgeOnline and resolved a problem succesfully. Monotony and lazyness make programers not creative people, I am sure this is not only a problem for .net guys but for many other developers in other many languages, do you remember recursive algorithms or backtracking codes or deep search in a graph…. Our work and doing every day the same thing and using our every day tools make us stupid persons.
I think that the point of this article its to remember programers our roots, our beginings.
If you are a developer guy and want to do your job and make some money and no more, you probably won’t visit the web pages above.
Else, go and visit the webpages, resolve 1 or 2 problems and chalenge yourself.
Using tools its not bad, I would say it’s a good thing, we all re-use our own code, why don’t use other’s. But too much tools its boring and dangerous, we can became in obsolete professionals.
Guys, do not bother yourself – the author does not qualify for technical discussions. It was good reading this article though – it is entertaining, and also reminds me a different level discussion about the U.S. education system, which often is focused on how but not on why.
“startup companies use free programing languages, and years after that they can buy and use .Net” ??.
If your companie grows up using php or C++ keep using it. Anyway you all should know .net is dying, the future are phones and tablets for end users, and as far as I know iOS and android are leading not windows 7.
Pd; using tools is not bad, not understanding what the tool does in background is VERY BAD, as an example a hacker its a genius but the cracker its a shame.
When I used the word cracker I meant people who just use a hacking tool not programmed by themselves.
The entire monolith of Windows development, including .NET, reminds me of the similar Mainframe world: Bloated, needlessly complex (but well hidden by the tools!) and greatly removed from understanding the relationship between hardware and software.
This article is rubbish. You have clearly don’t know anything about .NET.
I could understand it if you said something along the lines that the typical .NET programmer doesn’t understand good software engineering, but your McDonalds analogy is just tripe.
I’ve been programming in .NET for many years, and I can’t remember the last time I used a wizard or designer or got stuck having to implement things the Microsoft way instead of my own custom solution.
Wow, you really have no idea what you’re talking about! And I don’t mean that as insult, it’s just obvious from your post that you’re just ignorant to the technologies you’re discussing.
Having developed across multiple languages, platforms and technologies, I’d have to say .NET (Specifically, the language, C#) is really more a choice of cuisine, than fast food over gourmet, or camp fire squirrel. You can do anything in it that you could do in your other “start-up” languages (whatever *that* means), with your choice of any, or NO, frameworks to help you.
If .NET devs haven’t learned to write their assemblers or web content management systems from *scratch* in a command-line interface it’s because they can choose NOT to.
Yes, a lot of the tools and frameworks out there for .NET devs can help churn out CRAP a lot faster, but the crap devs can make is agnostic. Yes, this can make for lazy developers, but to disparage any French chef that touches a Cuisinart by saying “WHY would you do that? French chefs are obviously idiots” is just ignorant to the art.
The most amusing thing is in his edits, when he claims that you can tell what coding platform a company uses, by what web server they host on…
Why do we use .NET? Cause it pays a hell of a lot more than most other technologies.
I learned from the start that .NET is a platform, not a language. However, after 10 years of observation, I came to realize that .NET *is* a language.
VB.NET? I am not sure how many people are using it.
IronPython/IronRuby? It’s abandoned already.
C++/CLI? Half-abandoned. Not being updated for 2 versions of Visual Stuio.
Actually, .NET to C# is what STL to C++ and vice verse by and large.
Let’s face it, .NET is sincerely for one language – C#. And C# was *created* for this very .NET library.
So,There’s not much wrong with calling .NET one language if you really think about it.
Good.
A startup isn’t the only type of company on the planet. Maybe you should be concentrating on a wider target audience Mr. CEO than which runtime your developers are most comfortable with; maybe then I would have heard of Expensify.
I would really like your precious Ruby (or whatever) be used for things apart from a website. A game (XNA), an operating system (MOSA, yes, bootable and pure MSIL), a workflow server (K2, an umbiquitous name in the enterprise workflow industry). Sure it might make cookie-cutter WEBSITES – but thats because of ASP.Net; not .Net. If that’s a problem take a look at MVC/MVC2 and the huge array of other .Net website frameworks out there.
Now I’ll tell you what your actual problem is with .Net developers. We aren’t as well suited for rapid iterative development. In your industry that’s a no-go, sure; but at least us enterprise-types are unproductive in your startup industry. You startup-types are purely destructive in mine. Building a development workflow around not wanting to plan for the long-term is laughable; to us.
Long story short: you startup-types would never even see my resume.
(@tom – no, it’s incorrect terminology. You could say it consists of one language; but not that it is a language. Is Java+JRE a language? Is Lua+LuaJIT a language? Nope. They are ‘solutions’ or ‘frameworks’ – a combination of a runtime, a framework, and one or more languages.)
Oh tom. How cute.
“VB.NET? I am not sure how many people are using it.”
I don’t have a good way to measure this, but a simple search on Dice returns the following results (a lot of these jobs overlap):
F# = 5
Haskell = 17
Erlang = 34
Fortran = 59
Scala = 76
COBOL = 693
Ruby = 1454
VB.NET = 1632
Python = 2422
PHP = 2925
C++ = 5805
C# = 7568
Java = 15668
VB.NET — less dead than Ruby!
“IronPython/IronRuby? It’s abandoned already.”
By what standards do you mean “abandoned”? Both have had releases this month. Is there something I’m missing?
“C++/CLI? Half-abandoned. Not being updated for 2 versions of Visual Stuio.”
Here is a blog post from this month about plans for C++/CLI in Visual Studio vNext:
http://blogs.msdn.com/b/vcblog/archive/2011/03/03/10136696.aspx
“Actually, .NET to C# is what STL to C++ and vice verse by and large”
I really don’t understand the analogy. C# and C++ are both languages. Got it. STL is a library written on C++. .NET is not a library. Maybe you want to use FCL instead? Even so, what, exactly, is the point you’re trying to make?
“Let’s face it, .NET is sincerely for one language – C#. And C# was *created* for this very .NET library.”
Of course C# was created for .NET and I don’t think that many people are going to disagree that it is the showcase language. That doesn’t mean that F#, VB.NET, IronPython, IronRuby, and several other .NET compatible languages don’t exist and aren’t important.
“So,There’s not much wrong with calling .NET one language if you really think about it.”
Except that .NET is not a language. Maybe… just maybe if you were making this argument for MSIL then I could buy it. Unfortunately, you’re not so you just come across as ignorant.
What do I know? I’m a programmer who uses .NET so there is no way I would ever look into how all my fancy wizards and draggy-droppies work.
So basically what you’re saying is: Do you really understand what it takes to build great software? Now that’s an interesting question, much more interesting than saying that a particular group of developers are making the wrong choice developing on a specific platform.
I would very much like to know what exactly you are looking for in a developer in general. There must be some criteria that you can write down on your blog 🙂
Can you e-mail me or better, write a post on what you expect to find in a developer? Much appreciated!
@Tom: That is like saying “Rails is a language” and justifying it by saying that “Ruby is the only language that uses it, so you can just call Rails a language”.
I agree that it is not worth it to harp on that mistake anymore… but to justify it? We’re better than that.
1. Sorry, but my rugby-judo-kendo-bust-meth-labs-knees-in-the-breeze-swat-instructor-had-malaria-and-all-kinds-of-parasites-got-a-teenager-and-a-toddler style beats your fencing-hockey-knife-catcher style.
2. When does squirrel not taste “good”, oh fancy one?
3. .NET is on my resume because I deliver quality, cost-effective solutions to the Fortune 500 world. It is the default toolset (but not the only one).
4. I’m involved in one startup. .NET/Azure is the best fit. You make some valid points above…but, remember, the cheap sex is the kind you pay for(upfront, explicitly, you know…like, with cash…get it?).
Well you can code all your stuff in Notepad, then using the command line execute and build your application. I guess it’s down to the IDE really.. I am a VB Programmer and I can code in C# and C++ too. Whatever you need can be accomplished. Some things are coded in a lower lever language. That is most probably what you mean by your burger story. Rather explain it in that sense than comparing burgers. .Net was not built for one language. VB6 and VB.Net are quite different. The thing you are missing is that C#,VB.Net, C++, F# all use the .Net Framework (that is what it’s called a FRAMEWORK). What ever code you write gets interpreted first, at the end what you write in VB or C# will still have the same effect. Java has it’s own Framework too. They are all 6 Gen languages. Turbo C/C++ is not however, so it all depends what you want to accomplish and according to that you choose the language. I am quite successfull using VB. Pants or Shirts, they are both clothes.. If you can master C# and Java, great. If you can add VB and C++ even better.
The funniest thing about this bizarrely close-minded opinion is that you’re running your entire company on… I’m trying to stifle the laughter here… PHP! Personal Home Page! Your underpinning technology is a poorly conceived and badly implemented scripting language yet you have the audacity to knock an enterprise-level framework like .NET?! This isn’t even worthy of my ridicule so let me just say thanks for the hearty laugh.
You lost all credibility (what little you had) with the “…like using backslashes in file paths rather than forward slashes like any dignified OS.”
I remember when I was in sixth grade and I first discovered *nix and was overwhelmed with how much more powerful it was compared to DOS. For the next few years I said basically the same thing.
Then I grew up.
The direction of the slash? Really?
Grow up.
come on guys why are you so defensive, the man got a point .Net in your resume does not make you more special than others (its just a tool), its like a resume with Net Beans experience.
The man has not said C# its bad, it came from C and C++ just like Java and many others, The importan thing here is being creative with a programing language.
Of course every project is diferent and there are better languages and better tools for diferent tasks or problems and platforms. Experience makes you a good developer, but using a tool does not make you smart, for using a tool all you need its experince, resolving difficult problems with the most efficent solution requires brilliant minds. Why do you think google hires genious students from harvard…. because their minds not beacuse the experience with a frameworks!!!!
Tom – Ever hear of Facebook? PHP. And Personal Home Page…that’s to current PHP as Classic ASP/VB Script is to .NET.
Maybe there’s some satisfaction to catching your own squirrels and grilling them over a camp fire, but honestly, it takes less time to go to a grocery store than chase the little buggers down.
.Net is the same kind of thing. At my start-up, I’d rather spend my time innovating where it’s needed, and not waste time re-inventing everything that .Net does provide. BTW, all those hard-formed .Net cookie cutters customize nicely through COM.
I absolutely agree with this article! The .NET platform (and J2EE) is great for maintaining monolithic, established applications, with tons of developers working simultaneously. The scripting languages (PHP, Ruby) are great at starting from scratch and evolving rapidly.
Scripting languages are perfect for a startup, while .NET and J2EE are geared towards the corporate environment.
Guys, i think you should stop explaining .NET to someone this numb. Its like trying to explain what a food processor can do, to a primitive troglodyte whos ever only used grinding stones. Instead, challenge this idiot to a showdown in .NET. Let’s have it out, readers code the same problem in C# and the author codes it in his own antediluvian language (assuming he even knows programming which I doubt, for someone equating .NET to a language. GEEZ)
I’m quite surprised by how negative the responses was to this post. I generally agree with it.
I am of the opinion that using .NET encourages a way of working in which design patterns don’t need to be thought through and chosen (and even bent), each time. I happen to thing that this is true when using any other framework (like cakePHP for example). However, rare are devs who make building apps in cakePHP their profession. More realistically, cakePHP is something that they could use here and there. For example, I have even ripped out pieces of cakePHP and used them without using the whole (because there is stuff in there that I think is not optimal). That’s a question of culture: in the culture of .NET developers, there are, I am guessing, very few developers who would quickly be able to identify a design pattern choice made by .NET as not being optimal for the application and quickly choose not to use that part of the framework and to find a way to compensate with a better solution.
I don’t write code in a way to make it easier for me. I write it so that it’s awesome, whatever awesome means for the product in question.
Also, employers that hire .NET developers tend to be quite uncool (most .NET offers I tend to get are in insurance or health-care). So .NET developers, who accept uncool jobs are often uncool people. Clearly, the author of the post doesn’t want uncool employees, which is totally his choice (and mine).
First and foremost you don’t hold a shred of credibility as it applies to knowing what makes a good software developer…You are a CEO not CIO. That’s like saying an Olympic swimmer can determine the necessary qualifications for a good Olympic gymnast. It’s obvious that if you don’t have high level experience and training in one or the other then there is no way you speak with any in depth knowledge. Now it may be possible that you have programming and software development knowledge, however you have not indicated such. So I’m going to blow that theory or more precisely your understanding of software engineering out of the sky.
1. “Now let me clarify — .NET is a dandy language.” .NET is not a language…It is a platform with runtime for executing managed code….very similar in concept to Java and its runtime.
2. “Programming with .NET is like cooking in a McDonalds kitchen”. “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” .NET does allow for executing native OS APIs…via PInvoke. You do know that right? Oh I forgot you are not an actual software engineer.
3. “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.” MS has created tools to speed Windows development…that is true. But understand that C# for instance is ECMA standardized right… the code that C# is compiled to…MSIL is standardized via ECMA. In laymen’s terms .NET is actually open for development of programming languages other than those provided by Microsoft, as well as ports to other OS platforms. Ever heard of Mono for Linux, Mono.NET, and MonoDroid. Hhhmmm, it certainly seems that you have not.
4. “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.” Well when the colonists left Europe and landed in what is now the United States of America…they choose to do their own thing…mile vs. kilometer. Pound vs. kilogram. If you don’t like it then go back Europe…metaphorically speaking.
5. “programming tools that generate a dozen complex files before you even write your first line of code”…Please show me, because there is an option to start with an empty solution, so that you can add only the files you need for your project.
Now I could go on and on and argue every point u have made…but I’ll let others continue to throw in their two cents. Oh by the way you missed the apostrophes to show possession when you referred to McDonalds…i.e. “A McDonalds kitchen makes…” It should be McDonald’s
From these comments, it sounds like an awful lot of .NET coders are sensitive about having trouble finding decent jobs.
David,
Your point is valid, but HARDLY the point of this stupid blog post. This guy went a far cry further than saying .NET is good bad or indifferent. He’s actually saying that .NET is not useful beyond building a LOB application or wiring a couple of spreadsheets together w/ code. He making a blanket implication that if you are doing .NET you are not writing real software or that you don’t have a software architect/craftsman mentality…i.e. you are a hack.
As another poster has pointed out, this is a service to handle EXPENSE reports for crying out loud. Not that it isn’t a great idea, not that it might be the best implementation out there. But come on now, this is hardly revolutionary and hardly needs anything more than .NET or any other modern language underneath it.
If you go back and look at some of this guy’s blog posts from years back, when they were starting, his job advertisements stunk of the same top shelf poo he’s putting forth now. I am all that and if you want to come work for me, show me why. One really good interview questions was ‘what is your website and if you do not have one do not bother applying and wasting my time’. That’s funny, having an HTML page or more advanced web presence up somewhere qualifies you to write software? I’ve been building enterprise software for over 15 years and I’ve yet to put up a stupid blog or website for my company. And I’m all that!
Reading the comments (since I posted on this thread yesterday) I see that roughly 90% of the people who agree with the writer also state that they’re not programmers, but instead, are members of that section of society I like to term, “The Little Minds”.
Now, I’ve been a programmer for 32 years, and here are some of the languages I’ve used to write systems during this time: Java; JavaScript; Visual BASIC 6; Visual BASIC .NET; C#; Delphi 1,4,5,6,8; FoxPro 2.5,3,5,6,8,9; C; C++; Pascal; Algol 60; BASIC; Assembly Language (Z80, 6502, 6800, 6809, 8086, 80386); Forth; PHP, Salesforce Apex, Apple Objective-C, dBase II/III/IV (that’s about it, off the top of my head — I’m sure there are more).
I have to say that C# is, without a doubt, the most beautiful of these. It’s a shame that it’s just a Microsoft thing, as opposed to being a standard like Pascal or C++ — that’s just the way it goes, I suppose.
P.S. The author of this article is an idiot.
I would personally prefer to develop everything in php rather than .net. It’s deployment is easier and I just like it better. That being said, most of the things I write are in .net. Why? Cost. We have a developer license of the telerik controls and I can have a table that has sorting, filtering, and is exportable to word, pdf, and excel in less than 15 minutes. While I could write that from scratch in php, it would take me an entire day of coding. What does that amount to? 8 hours I have to bill the client instead of 15 minutes. No offense, but your busniness sense must be built on the let’s build 300,000 web applications. My department is very profitable building 15 K web apps with .net that would be 3 times as expensive in php or some other language.
C# may be a decent language, but it’s the ecosystem that’s (pardon the colloquialism) a piece of shit. Run your web server as a “Windows Service”, ah that seems like a grand idea! Reduce the power of your networking stack (which you bought from IBM to begin with, ahem, NetBios) by hiding it away and adding layers of ridiculous security, that sounds even better.
It’s the .NET “play in our sandbox” mentality that is dangerous. Microsoft stripped away the power of Win32 and MFC (which are hideously ugly APIs to begin with, but still they are powerful) to further dumb down the system. That’s what this is about. From the proprietary dev tools to the ECMA “vote buying” that went into the CLR, it’s a ridiculous “end-to-end” solution that locks you into one way of thinking and ends up making you pretty far removed from the sort of CS savvy generalist that more and more companies need.
In hindsight, the “defense of .NET” posts are telling enough. This is one of the funniest things I’ve read in a while. It’s analogous to a discussion on GG Allin’s lyrics at Bob Jones University: you people just don’t get it. I salute you!
I’ve just noticed the “Monday edit” and this speaks volumes to me. You obviously read the linked blog post some time ago and decided that it nicely fitted your world view; unfortunately, you appear to lack the pragmatism of Matt Swanson and you certainly lack his writing skills. So when you came to present his opinion as your own, your maladroit rehash turned into something very different. And now, seemingly in desperation, you have linked his article and are encouraging people to read it; what a painfully sheepish admission that you were just repeating another’s point of view. I’ll give you this: you fit the CEO mould like a glove.
The Monday edit doesn’t help at all… it is just another attempt at defending this gaff.
The irony of a company that lives on PHP is run by someone who dislikes frameworks is delicious and kind of sad.
Let’s skip for a moment that the author has no understanding of .NET or any of the tools that surround it. Skip that he obviously has no real understanding of the developers who use it. Skip for a moment as well all the other aspects of this that are silly and just sit with that one fact for a bit.
This guy is saying .NET sucks as a valid startup framework but thinks PHP is a technically superior choice.
Just… wow.
Wow… The level of idiocy in this article was painful to read. The author clearly does not understand the context or subject that he is writing about. I’m not saying that .NET is the right tool for every job, and I’m not going to bore you listing all of the inaccuracies of this post (other comments have already done that) but it is clear that this is an irrational and misguided conclusion.
I’m not sure why this has any relevance at a CEO level at all. I can’t imagine the CEO of Ford coming out and talking about the type of oil or welding equipment that the factories are going to start using to build cars. Please – focus on building your business, and leave the tool building to the people who know what they are talking about.
I disagree that .Net is wrong for startups.
Simply: the technology doesn’t matter, the implementor does.
I thought everyone knew this.
Mr. CEO:
Tools never make people smart or dumb.
However, smart people do judge you by how you think. By seeing how you express your thought, I so like to see how you attract smart people to join your company and work peacefully together.
Also this article should be a good hint for investors.
Hahaha. This guy is perfect. His metaphors are perfect.
He ABSOLUTELY has a startup wanting to make 1.7 oz McDonald’s burgers out of squirrel meat over a campfire where the developers have to also hunt their own squirrels.
This is so Freudian it’s not funny. The question is not whether or not you are angering the McDonald’s cook union, it is who are you – the squirrel whisperer?
I wish you hadn’t back tracked so much after the negative comments. Of course .NET folks are going to get mad. The truth can be painful.
I agree with you for the most part. However, it should be noted that C# does allow for the adept programmer to extend a control’s capability, or write new controls.
You know it, and I know it: Attacking an entire community of developers is probably not the best idea you’ve had lately. Especially since what I think you meant to say is that you’d rather not have to pay Microsoft licensing fees and .NET engineering rates. Look, I’m no CEO, but allow me to offer you a bit of advice for future posts. Consult your public relations team before posting about things your clearly do not understand. Kthnxbai.
If I need a 1.7 oz burger then I just make a class and inherit the 1.6 oz burger and make the changes I want. Programming is not about the tools you use it is about what you imagine you can do with them.
I started off as an open source java, PHP dev and hated the amount of time it took to get anything done for anything and working for OS fanboy managers that were quite happy to use anything becuase it was free regardless of the fact that it might not have been the best way to go. The documentation is often crap, nothing is consistent, learning a new enterprise framework involves re-inventing the wheel. Quite frankly i hated it. I am happy to say that I am now a full on .Net dev and have never looked back, often wondering why i wasted my time with the former platforms. Everything is efficient, consistent and quite frankly c# is hands down a better language to code in compared to java (which has been trying to mimic stuff like lambda expressions that have already been a part of c# for many many years), PHP (I refuse to use anything that involves crap like :: or => as part of its normal syntax, thats just painful). Whats worse about your post is that, despite your fairly big comments, given the apt responses to your opinions, you were quite happy to change your opinion on certain matters to quell some justified anger towards your biggeted comments on vermin meat preparation which shows you are probably a manager that doesnt stick to his guns when hes put against the wall and loves pushing his one dimensional agenda at other people without any proper research. I hope I never end up working for someone as fake
So personally, I wholly buy into the idea that both J2EE and .NET culture are incompatible with startups. Different languages have different strengths, and assembling things really fast with duct tape and bailing wire is not C#’s strength. Hell, the design patterns that it convinces people to use aren’t even good for that. Startups need to be nimble, because your business plan will never completely be what you set out to do. This means the first order of business is to get it to work. You can make a lot of stuff work with 50 line shell scripts, cron and a simple web language.
C# and J2EE development culture doesn’t think like that. It doesn’t encourage those attributes. And it means that highlighting either one on your resume is a very big warning sign for me with my hiring.
I never knew there were so many microsoft developers!!
It’s awesome! I can see it on both sides but man is this entertaining!
Well you’re kind of right, but only at a superficial level. .NET, the technology, is very capable. It gives other platforms a run for their money and in the right hands it can be as productive and diverse a platform as any.
For those of us who have spent most of our career “cooking squirrels over a campfire with sharpened sticks” .NET represents “just another technology” and certainly not something to avoid nor a means to tar the backs of a significant section of the developer workforce.
Yes, the barrier to entry for .NET is a lower than other platforms because of how great Microsoft’s tools are at making it easy to deliver common features or behaviours. The side effect of this low barrier is that the “.NET developer” is a many leveled beast. I know many who could code you under the floor before you even cracked open your favourite editor.
I’ve been in the industry for 23 years and still use assembler, C, C++, Perl, Ruby, Java, and C# in anger every day of my working life and I don’t see much difference between any of the technologies; they make some stuff easier, some stuff a little more painful. They are all a different way of doing the same thing.
Perhaps the biggest difference between C#/.NET and the others is the cost to market; who wants to design a system that scales out when every box you need costs a lot of money to license? That IMO is the killer for a startup. Crap coders exist in every technology and even then great leaders can make million dollar products with teams of them.
Perhaps the limitation is closer to home?
I think I know a little about making something found in the woods yummy.
My first programming was BASIC on a TRS-80. I quickly moved to BASIC on a Commodore 64. Then, I learned 6502 assembly. I call it assembly, but I didn’t have an assembler. All I had was a programmer’s reference and a list of 6502 instructions. I wrote programs on a notepad (this was 1984, so the real kind of notepad), and did the assembly to machine language by hand, then “poked” the values into memory and executed the programs. I wrote a racing game this way, complete with interrupt-handling, sprites, and collision detection.
How did I learn ODBC programming? I loaded osql.exe into ntsd and unassembled it and manually converted it to ‘C’ so that I could see how the ODBC APIs were being used.
How did I write a Quakeworld/Quake 2 master server? I sniffed traffic to ID Software’s master server and reverse-engineered the protocol. Then I released it (with John Carmack’s permission) as freeware.
My point? I happen to be an excellent C# programmer who also has in-depth C/C++ and Win32 experience. My knowledge of what goes on “under the covers” makes me able to work around YOUR limitation with making 1.7 oz patties.
Good talent is hard to recruit. Recruiting for specific knowledge is never a good idea. You recruit for raw smarts and ability to quickly learn. Kneecapping yourself by having a bias against anyone who has certain knowledge just hurts you.
ez, are you kidding? what kind of CS ‘generalist’ are you talking about, that’s the EXACT problem that is created by CS people playing in 100 different sandboxes at once b/c a company has a dolt ‘generalist’ or group of these kinds of people building software, playing ‘dba’, BI expert, network admin, etc. yea, that’s what we need, a CS generalist. if you can’t afford to have each of these disciplines covered by qualified staff you should either A contract it out or B close your doors since you are an idiot and most likely ‘playing’ like you have a well managed company.
RJ, what ‘truth’ do you find in the original blog post, i find little other than giving the benefit of the doubt that there are a LOT of bad .NET developers out there. but like viruses, if 99% of desktops run Windows, 99% of the viruses target it…so 99% of bad developers live where 99% of the work is being done, not exactly rocket science. there are idiots cutting code in every language out there, the tool doesn’t produce bad code, bad standards, bad anything…it’s almost always the idiot operating the keyboard.
devon, you really think that you cannot move like fire with .net, php, j2ee in a startup environment, really? either you just got out of college where they didn’t teach anything really current, or you are just misinformed. if it’s startups we are talking about, i can take a copy of visual studio express edition (free) and run circles around anything you can do w/ a simple web language and cron scripts. i’ll be done, off having and ice cream cone while you are still hacking something marginally functional out w/ notepad. nope, wrong again folks, modern software development tools and advanced ide environments are EXACTLY what a startup should be considering based on Devon’s fast moving/changing argument. i can then take that startup/prototype work i’ve done and build it up to enterprise level using the same stack, same toolset for the most part. i’ll take that bet any day of the week.
Time for a reality check Mr Ceo. Even if it was possible to quantify, it is most unlikely you have the best programmers in the world, and it is most unlikely that you will be able to hire them.
The reason being that the best programmers are going to seek out interesting and challenging projects. They are not going to work on a php web app. They are going to be writing compilers, database servers, web servers, application servers, platforms such as rails, webkit, .net, php….
BTW. Expense reports suck, whether you are filling them out or coding them.
it came as no surprise that I am claimed to be ignorant/wrong by saying .NET is one language even after the OP corrected *this mistake*.
Having seen how this baby borned as COM, then grown up to be COM+, .NET 1.0, 1.1, 2.0, 3.5, 4.0 and to be 5.0, I know exactly what the worrect terminology is, and who on the earth has the final say. It’s MS’s baby and they named it a platform. That’s final.
So why did I make this deliberate mistake?
Since I do not work for MS, I decide to be practical and open some minds by stressing the ignored truth: When you start a new app, You do not use .NET without C#, you do not use C# with out .NET. Being a language or a platform is just two sides of the same face.
The main purpose of all other so-called supported languages are glues to existing apps, they are just well-done language bindings in a sense. Mono is just a toy unless MS throws funds in.
It’s also interesting that Java has been trying to be pose the percetion of *a cross-platform language*, in stead of a platform. It succeeds now because there are now 2 implmentationsn with Google’s Dalvik.
.Net’s been trying to sell the idea of being *a cross-languge platform*, even when they have two implementations of one platform(classic .NET and SL). Seems it’s successful too judging from the comments here.
To the the one who boasted everywhere that he’s been programming for 8 years, do you know it takes 10 years to be a good programmer(http://norvig.com/21-days.html), you have 2 year left before graduation.
And there’s an excersice for you, try persuade yourself to understand all the points in my previous comment until you are convinced. Hint: You may try google.com or bing.com for or reading the link you provided carefully between the lines and other recent blogs on this VCblog site. No, you do need a dictionary to tell me language and platform are too entries with different interpretations.
it came as no surprise that I am claimed to be ignorant/wrong by saying .NET is one language even after the OP corrected *this mistake*.
Having seen how this baby borned as COM, then grown up to be COM+, .NET 1.0, 1.1, 2.0, 3.5, 4.0 and to be 5.0, I know exactly what the worrect terminology is, and who on the earth has the final say. It’s MS’s baby and they named it a platform. That’s final.
So why did I make this deliberate mistake?
Since I do not work for MS, I decide to be practical and open some minds by stressing the ignored truth: When you start a new app, You do not use .NET without C#, you do not use C# with out .NET. Being a language or a platform is just two sides of the same face.
The main purpose of all other so-called supported languages are glues to existing apps, they are just well-done language bindings in a sense. Mono is just a toy unless MS throws funds in.
It’s also interesting that Java has been trying to be pose the percetion of *a cross-platform language*, in stead of a platform. It succeeds now because there are now 2 implmentationsn with Google’s Dalvik.
.Net’s been trying to sell the idea of being *a cross-languge platform*, even when they have two implementations of one platform(classic .NET and SL). Seems it’s successful too judging from the comments here.
To the the one who boasted everywhere that he’s been programming for 8 years, do you know it takes 10 years to be a good programmer(http://norvig.com/21-days.html), you have 2 year left before graduation.
And there’s an excersice for you, try persuade yourself to understand all the points in my previous comment until you are convinced. Hint: You may try google.com or bing.com or reading the link you provided carefully between the lines and other recent blogs on this VCblog site. No, you do need a dictionary to tell me language and platform are too entries with different interpretations.
I am a hard core .Net Developer. I honestly dream code. But truthfully, I don’t always use the built in framework. I sometimes write an entire set of code to only find out later Microsoft already has libraries hidden somewhere that does it. I then will compare the performance of both. I have never hit a hurdle that I couldn’t smash threw and write it so optimized your entirely shocked that it was possible. I constantly re-write and poke holes in other team members code that gets huge performance gains. (They are crappy .Net developers) I rewrote a dynamic search API that initially took minutes over a huge dynamic set of data. I got it down to a google instant effect.
The true power is that newer libraries allow you to completely re-write them if you desire. You are not confined to the way the Microsoft standard. One good example is the the way Microsoft reads the .ASPX files. Many developer have wrote their own engines that out perform Microsoft’s, and Microsoft embraces this. In the MVC Framework you can plug in what ever you want into the different sections. You can use third party engines if you want, or write your own.
Chrissy, you got me all finger tied. Well there now, pardner I don’t know ’bout what kinda readin’ and writin’ you done learned, but in these here parts ain’t nothing very Computer Science bout DBA or network admin, if thems the words you meant. Yup, those seem like downright IT positions in what we here recon as Comp Sci. Maybe I been drinkin’ too much o’ that corn whiskey, but iffin’ my eyes ain’t finally giving out on me, not due to the liquor, just mostly the women (or the cows, when a man’s lonely), I’d have to say that a savvy CS generalist mightin be the type a fella (or lady, pardon me mam) who’d not be too shy ’bout writin’ some NIO or maybe taking all things into consideration when sending some data afore he done fills up a buffer on some type a Reno loving network. Yup, and maybe he’s not afraid o’ doing a lil digging in GDB, backtracing and what not, just ta see why the kernel’s acting so weird. And maybe he’s a rolling through Olly Dbg ta see what them crazy security services are doing to his executable code.
Why I reckon that a Computer Science generalist mightn’ be a person of a certain airs, who’s just as likely to be talking about an LR parser as he is to take a gander at a design pattern or two. Maybe he’s gonna understand the benefits a using a language that does some a tail recursin’ for a lil of the old divide and conquer and maybe he ain’t ascared of thinking bout his big O. But he ain’t gonna back down from a tool, he’s just gonna learn it real good ta make sure it ain’t just snake oil.
Yessiree, a fella like that, who kin thinka efficiency and ain’t afraid to poke under a skirt or two is just the typea chap who might find himself a livin’ in this wild world.
Now I ain’t saying that no .NET developers is good at what they do, but I’d be just confounded to think that even in them parts data base administration is a Computer Science endeavor. Maybe the administrationator is a implementin his own bit sort buckets and write ahead log, I’m just a simple folk type who ain’t thinkin in them big fancy terms.
The world’s a mighty big place and I’m the kinda type who takes a shinin’ to different tools for different problems, but I do have to take offense at the notion that a big fancy framework like .NET is gonna help me solve my problems. Sometimes you gotta look that calf in the face and make him a steer and sometimes he’s gonna be a bull, but you can’t be fraid to get your hands round his testes, no sir. I’m a type a fella that likes a certain wide open (source) ness to his tools, if he can get em. And iffin I want ta know something, I can downright find it out. Now I ain’t gonna be all like that senor mr stallman, but I do like the cut of his stetson, as they say.
I think I’m just gonna sit back and chew on my thoughts and maybe iffin’ this man has ruffled some feathers, there’s some feathers that a needed rufflin’.