Not posting a question of my own per se, but I am a ".NET developer". I read the following article about one startup CEO's opinion of hiring .NET experienced developers. He has some comments on the blog but not much of a discussion format as what's possible here. I also know nothing about this man, or am promoting his blog in any way, but the article did throw me off some, and I would like to hear some feedback from developers.

Personally, I see his point as it's very easy for some people to create a basic ASP.NET website or some other automated solutions without much knowledge of anything beyond that, and thus would not make them good programmers. But I also think he largely ignores the reality that while many pieces of the framework have been automated and work just fine, you can come up with some very advanced solutions if you really have the know-how and the drive to explore the full capabilities of the framework. Much of their automated tools are "black box", but I've never had a problem where if I needed to get more "low-level" or extend some base class to give me what I really needed in a way that wasn't already available.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

23

The guy just did a deliberate provocative blog post to promote his unknown company...
–
VitorMar 27 '11 at 3:43

1

The easiest way to sound authoritative on a topic is to learn a little about an opposing view point and then trash it. It's easier to tear things down than it is to build things up. A friend of my wife runs a small software house, he's constantly banging on about how powerful and portable Java is compared to .net. He's right about the portable bit, but as he's never used or evaluated .net, he hasn't a clue what he's talking about. Empty vessels make most noise.
–
Binary WorrierMar 27 '11 at 4:07

6

The ignorance is spectacular. Luckily, his company isn't working on anything technically difficult - just a product to "import expenses and receipts from your credit card or bank account, submit PDF expense reports by email, and reimburses reports online". Their success or failure will not be determined by the fact that the CEO's technical cluelessness results in talented developers being overlooked for no reason other than mindless prejudice.
–
Carson63000Mar 27 '11 at 4:55

If that had been a comment on another article, the author would instantly be labeled as a troll; since it was published as an article, it is troll bait. Great hyperbole, zero facts.
–
Steven A. LoweMar 27 '11 at 17:01

8 Answers
8

Aside from the obvious inaccuracies in that CEO's post (.Net is not a language, it's a managed runtime, analogous to the JVM), he's obviously not spent much time with .Net, and his knowledge of it sounds limited to what you'd find in an advertisement for Visual Studio about 7 years ago. It's about as accurate as saying PHP is the best language to build a web startup because so many sites on the web use it. (Yeah, please stop that, I don't want to clean anymore of that up. I'm going to self-select against startups that choose PHP because only about 1 in 50 PHP shops have code that's even worth trying to maintain).

I've spent time with just about every mainstream language and platform, a fair number of not-so-mainstream ones, and cut my teeth on Basic, Logo, and Assembly language programming on a TI-99/4A and the Commodore 64/128. The reason I have done this is because I like learning these things.

The one valid, useful point that that CEO makes in his rant is that developers like to develop. I chose to learn .Net partly because I worked for Microsoft in the late 90s, but also because I saw some value in it and thought it might improve my productivity. It's now a much better ecosystem than it was when it was widely perceived as a tepid response to Java; C# and F# are far more expressive and productive as languages than Java appears to ever hope to be, and frameworks like Asp.Net MVC make up for most of the frustrations I ever had with the old-school VB forms inspired WebForms feature of Asp.Net.

There are some cultural issues that I've encountered in the .Net world; a number of long-time Microsoft-stack developers were relatively slow to warm to ORMs, dependency injection, TDD, loose coupling, and similar techniques even though long-time, syntactically frustrated Java developers had presumed these things were just What You Do (TM). But I've encountered crap code in every possible technology stack.

Given my druthers, I'd definitely pick a Rails shop over an Asp.Net Webforms shop, but it's pretty much a wash if I were choosing between Rails and Asp.Net MVC and FluentNhibernate and all the tools money can buy. On the other hand, I will never again choose to work in a shop that decides to build out their architecture in Perl or PHP, unless that Perl is written by Brian D Foy, or the developers at least had the good sense to build their PHP app in a decent MVC framework, and everything else about the company rubs me the right way. (Full disclosure: I am, in fact, working for a company that built out their architecture in Perl and PHP. Ugh. But we're trying to fix that.). Life's short; I want to program in something that brings me joy.

But, most importantly, I'd never go to work for a CEO who thinks that because you've learned something, you're less valuable than someone who hasn't learned it.

Your mention of cultural issues is interesting. The .NET culture is large enough that there are certainly large numbers of hidebound devs basically writing classic VB code in VB.NET - but interestingly, every modern technique you mention (ORMs, DI, TDD, etc.) is something that I first encountered myself due to it being advocated by a .NET developer, people like Rob Conery, Steve Sanderson, Phil Haack, Scott Guthrie, etc.
–
Carson63000Mar 27 '11 at 4:59

You're right, and would say most of the same things. I had started to pay attention to those techniques only after working primarily outside of the Microsoft world for a couple of years, and things started to finally shift in the Dotnet stack circa 2007. It took cross-pollination for that to happen, though, which is another reason why one shouldn't be dismissive of people who have experiences in unfamiliar technologies. The Lispers, and the Hindley-Milner type systems geeks, after all, are finally getting the attention they deserve in mainstream development.
–
JasonTrueMar 27 '11 at 5:41

6

well said. And that just further backs up your statement "I'd never go to work for a CEO who thinks that because you've learned something, you're less valuable than someone who hasn't learned it." Seems he wants in-breeding, not cross-pollination.
–
Carson63000Mar 27 '11 at 5:50

You can build solid apps on a ton of different platforms. They have various characteristics and associated trade-offs but just remember that the "free" solutions are only "free" in that you probably won't bother buying support (like some big companies do) for them and it depends on a mature version that just works or already having developers who know how it works and/or can fix issues with relatively little effort.

IF you get more productivity or scalability out of a commercial offering relative to the money saved building the product then it could be worthwhile to pay the license fees. Case in point: StackExchange runs the Microsoft stack. From their blog posts it sounds like their architecture is very hardware-efficient so that would help mitigate the cost of licenses.

The key is solid architecture much more than the particular platform choice. That said, some platforms help you more than others in doing the hard things.

Very good point in reference to StackExchange! Would he really NOT want to hire any of the devs behind this project including the founders who are by all means wildy successful programmers and startup owners and who obviously choose .NET as their preferred framework?
–
jaywonMar 27 '11 at 7:30

I can see his point, but I would say that every language, paradigm, methodology, etc has developers of all ranges employing them. I don't know how exactly he is defining startup, but I would assume it refers to a new venture capital backed company that is looking to grow big as fast as it possibly can. If this is indeed the definition, then I would argue one of his main points (very few "startups" running windows server) with this:

The Microsoft technology stack is expensive. Very expensive when you consider that the main alternative can be had for free. Might that not sway decisions for some startups?

I would agree that .Net lowers the price of admission for developers, and as a result you will have a lot of .Net programmers that don't progress much past the basics. The argument that you just "can't" make a 1.7 oz patty is pretty ridiculous; experienced .Net programmers certainly can make make that 1.7 oz patty when necessary, and could arguably benefit from the productivity boost of those 1.6 oz patties when 1.6 patties are all that is required for the problem at hand.

The bottom line is that you'll find extremely talented developers in just about any language out there.

The .Net stack isn't that expensive. While there is a cost to the Microsoft Server license the development can be done a zero cost... including the SQL database of SQL Express. Even the server license for a web server is pretty much a moot point (Getting Linux admins and getting a GNU stack 100% up-to-date can have a pretty high maintenance cost.)
–
Matthew WhitedMar 27 '11 at 5:00

3

-1: it's not expensive. Startups that don't know how to get the MS stack for free deserve to work for this guy.
–
Steve EversMar 27 '11 at 5:38

Does it matter that SQL development can be done at zero cost when you'll still have to license the server as soon as you move past the limits of sql server express?
–
jlnorsworthyMar 27 '11 at 5:44

Sure, if the cost of administering and deploying the MySql servers ends up being more than the equivalent cost of SQL Server including licensing. There isn't necessarily a one-size-fits-all answer to that cost question, though, since it depends on team expertise, specific feature needs, and how one choice or the other affects the number of servers you end up needing, to name a few.
–
JasonTrueMar 27 '11 at 6:05

@jlnorsworthy: what software startup buys their own servers these days? That's just asking for trouble. Hosting costs between windows/non-windows are practically equivalent from what I can tell.
–
Steve EversMar 27 '11 at 18:03

As others have said the guy writing that blog post is both ignorant and uninformed, and probably wrote a provocative post simply for attention.

IMO the problem is one of licensing cost; it costs pretty much nothing beyond the price of a domain name and server hosting, and possibly a CC processing account to start up a company using open-source technology. With .NET you have very expensive licensing fees; even with the Bizspark program you only get use rights for three years, and then you need to pay out the nose to continue to use it - while three years is plenty of time to get money if your startup is of any value, it's still a turnoff because that money can be used for marketing and other things that will get your name out there and drive business.

I speak from experience as I am/was in the process of trying my hand at a startup and had to choose between open source and .NET (and my day job is a .NET developer). I ultimately chose open source even though I am a Bizspark member because longterm IMO the open-source route is more stable, and there is typically a much larger and more involved community.

Seems like the author of the blog is looking for certain types of people to join his team (young, hip, and totes a Mac). I do think a high percentage of .NET developers come from the corporate world or learned it in college. They're looking for natural born entrepreneurs, so if you didn't have the highest grossing lemonade stand when you were a kid or worked on an open source project while climbing the Andes, don't apply.

You can switch on a dime between C++,
PHP, Bash, Cron, HTML, CSS,
JavaScript, jQuery, Dwoo, SQL — not
because you know them all, but because
you're the sort of person who can just
pick it up and figure it out.

Sort of a good point, but when you claim to hire the best they should know the current stuff and pick up on the new (I just found out we bought a company that uses Salesforce and I may need to do some integration.). Can't beat on the job training, but can startups afford that?

I just find the attitude depressing, when I know for a fact that there are young, hip people in the .NET world, who are always pushing for better practices, always looking for great ideas from other camps. I mean, that's basically how the ALT.NET movement describe themselves. That CEO's blog post seems to be an the mental age of a high-school kid who only listens to bands that aren't commercial, mainstream and/or popular.
–
Carson63000Mar 27 '11 at 20:08

I began with C (on my own), then learned assembly (still on my own) and now, at school, C#. What I've noticed is, C# (and the .NET) allows you to forget so many things and still be able to do awesome things. It is too easy. It may be ok for good programmers, but higher level ones must know what's going on behind the scenes. That's why that guy don't want .NET programmers, they might not know exactly what they're doing, and this is not good for

Yet the best programmers in the world also don't want to rewrite the same thing 30 billion times, as they already know how to do it. For example, if they want a garbage collector because of the known productivity and performance increases it can bring to a project, then they're not going to go write their own. They can fully well write their own, but that's not what they're being paid to do. The best "can" build the stuff, they would just prefer not to unless the currently existing stuff won't fit their needs.
–
jsternbergMar 27 '11 at 18:12

@jsternberg: yes yes, I'm just saying knowing .NET isn't enough. Using it with the knowledge it is
–
BlackBearMar 27 '11 at 18:14

2

That applies to every higher level language, not just those in the .NET ecosystem. Abstractions are everywhere; if they weren't useful, we'd just be writing everything in assembly languages. Yes, 'the best programmers in the world' should know how everything works behind the scenes, but that doesn't mean they should have to explicitly go through it every single time they want to do something that could just as easily be abstracted.
–
MatthewKingMar 28 '11 at 0:57

If I wanted to hire 'the best programmers in the world', I certainly wouldn't hire someone who reinvented every wheel, every time :)
–
MatthewKingMar 28 '11 at 0:58

There is a big difference between automation and abstraction. It is great to program at high levels of abstraction. But automatic code generation is a terrible work-around for languages that don't allow high levels of abstraction.
–
kevin clineApr 8 '11 at 18:57

Whenever I have worked on a Windows project, I'm was always wondering how to automate all the things I am accustomed to automating on Unix. For example, how do I automate the creation of a visual studio workspace when a new developer joins the team? (I know, Eclipse is no better).

In general, I have seen Windows developers repeatedly performing multi-step procedures with some GUI, when a Unix developer would have written a script the second time around. Unix developers are constantly building little tools, but I haven't seen Windows developers doing the same.

It's been some years now since I've done .NET development, so maybe things have improved dramatically. Still, I think this is a factor in Mr. Barret's poor opinion of developers who have only worked in the Microsoft environment.