Expensify CEO On 'Why We Won't Hire .NET Developers'
TheGrapeApe writes "The CEO of San Francisco-based, VC-backed startup Expensify wrote a post on the company's blog about why he considers .NET experience on a resume a general liability, saying that it will 'definitely raise questions' when screening for developers in his shop. Quoting: '.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?"' Does he have a point? Or is it counterproductive to screen devs out based on what platforms or languages they have used in the past?"
But choosing .NET is a choice, and whenever anybody does it, I can't help but ask "why?"
I do .NET because that's where the money is. Next question please!
I've been using C# at work for some time now as a co-op, not because it was my first choice, but because that was what we were told to use. I know other languages, and I'm quite good with them.
It's just as well. Anyone who thinks .NET itself is a *language* isn't someone I want to work for.
Only known ONE .NET programmer, and he was damned fine, thing is, he was a damned-fine C++ programmer too, so ...
I don't know the meaning of the word 'don't' - J
I'll make sure not to hire Expensify. Why? Well if they have a language-zealot mentality, then I'm not going to like what I get. That is the sign of code hacks, not developers. Real developers can develop in more or less any language. They'll have their favourites, of course, and use different ones for different jobs, but they won't write off a given language for ideological reasons.
I can totally understand and support not hiring .NET only developers, particularly if your market is non-Windows. I mean someone who only does .NET may well be the aforementioned "code hack" and of course is little use if you are doing Android development. but that you'd count it against someone that they have done it? That just speaks of ideological zealotry, not anything practical.
One of my coworkers is our UNIX and Linux lead. He runs those servers and so so well. He has hacked many a script to make Linux work well in our unique environment. He does back end development on our website, which is LAMP. However can can truthfully put .NET development on his resume. He has done some .NET stuff for the Windows side, and also does it as a consultant. It is not the only thing he does, but it is one of his many tools and I'd expect him to list it.
He's a very skilled individual and to exclude him because he has additional knowledge of MS development would be really stupid.
So to me, this CEO has proclaimed "Don't hire my company. We are zealots who will insist in coding in a certain language, even if your project would be better served by something else."
Thanks for the warning bud.
.NET (like Java and old versions of Visual Basic) lets stupid programmers who usually wouldn't be able to do anything at all, do a bad job of something. So I can see where it gets it's bad reputation from.
However, for intelligent and talented programmers, .NET increases the speed that they can write code greatly. Unless you are someone like Amazon, Google or Oracle then developer time is much more expensive than CPU and RAM costs. Desktop computers have been faster than we need them for years.
.NET is also simultaneously lower level than Java (it supports pointers and pointer arithmetic), and higher level (LINQ, extension methods, better generic support, F#, TPL), so I can't see why you could pick on .NET devs and not on Java devs.
You can't claim .NET is Microsoft only either, Mono runs on *nix and works absolutely fine for server code and most windows forms code.
I dream of a nation where a man is not judged by his skin color but by an number assigned by a credit rating agency.
Dear Slashdot,
Thank you for propagating this non-news publicity stunt in true Slashbot form. You never disappoint.
Love, Expensify
Who the fuck are Expensify? What, if any, notable things have they accomplished?
The dude doesn't understand the first thing about .NET
It is not different from everything else out there.
WTF? This dude is on crack.
Why did this even get posted on /.
Some pointy haired moron goes on a rant (that will likely be accepted on face value by a plurality of /. readers), why is this newsworthy. Why would anybody want to work for this twit. This story should be moderated flamebait and troll.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Here, let me help. Perl was, is, and always will be better than Python at everything forever.
Motorcycles, Robots, Space Gossip and More!
but I kept running out of wire.
It's a dead end because you've inextricably tied yourself to one, and only one vendor. And recognizing this trap for what it is goes a long way in my evaluation of a candidate.
Why? Most people take jobs to make money. If someone got hired at a place that was using Microsoft tools, and now they'd like a shot at a position you're looking to fill, how does that experience make them a less attractive candidate? How were they "trapped"? Most in-the-trenches coders don't get to make the big purchasing decisions; they work with what they're given. I'd be more impressed with someone who can be flexible, adaptable, and inventive than someone who stormed off a job because the boss wanted to use .Net.
Breakfast served all day!
If you think you've identified an easy way to judge a job applicant, you're probably wrong. A programmer can be good in any language, you need to test his aptitude for logical thinking and learning new things - requires more effort but is more likely to do justice to both you and the applicant.
Every CIO makes choices for the technologies used inside their companies. They also make choices for technologies to be avoided for a variety of reasons.
I'm a CIO and to be certain my company isn't stuck with single platform solutions or poor library choices,
a) all our software runs on Solaris, AIX, HP-UX, Linux, Mac and Windows
b) The Linux client cannot use Mono (my choice). PERIOD. We don't allow those libraries on Linux at all.
c) The Windows client cannot have divergent capabilities from the other systems and needs to look and feel like other platforms.
d) We prefer BSD, MIT, Apache licensed FLOSS over GPL or LGPL. I have to sign-off on GPL/LGPL stuff. Commercial stuff needs my sign-off too, obviously.
I agree that this CIO may be going too far, but I do not disagree that .NET programmers have to work harder to write cross-platform. All parts of the world are churning out .NET programmers with that a single skill. THOSE are the developers I want to avoid on my teams. Cross-platform developers who happen to know .NET are not a liability unless they enjoy .NET programming too much.
OTOH, we do have clients that force .NET development for specific projects due to 3rd party mandated tools - ArcGIS, for example. My dev team hates working on that software, so we charge 30% higher rates for that work. ArcGIS is a specialized skill and easily supports the higher costs.
If I were running a Windows-only shop, then I wouldn't make the same decisions. Thank your-favorite-deity that I'm not.
People normally don't flamewar over common knowledge, sorry.
It is critical, absolutely critical, to hire the very best people you can find. The output difference in going from a bad to competent to good to great in a developer is exponential, but the difference in cost is merely logarithmic. Only a fool lets his personal prejudices stand in the way of finding talent, whether that prejudice is about race, religion, sexual orientation ... even development languages and platforms.
Maybe the candidate developed in dotNet because that's what he was asked to do by his boss. Maybe he thought C# was interesting, or would get him the job he wanted. Maybe he just *thinks* differently than you do, and so prefers dotNet to Java, Python, Ruby or whatever rings *your* bell.
What you are looking for is somebody whose talent ideally transcends languages and platforms. Somebody you could ask to write something in x86 assembler, and he'd learn it and turn out something pretty good, maybe not as fast as the average assembler programmer could, but the second time around he'd be on par in getting the job done and by the third he'd leave the average programmer in the dust. You want a creative problem solver, a deep thinker, a team player who knows when to take initiative, somebody with real grit and dedication to the success of the project.
What you want is all of that. But you'll never get it. That means *right from the get-go* you're talking about compromises. And this guy's thinking about blackballing applicants because they have experience he doesn't? Jackass.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Its a great way to screen candidates. If you program in .NET you're probably less sophisticated and skilled than if you programmed in C or Java on Linux.
Do you have any idea how much better a language C# is compared to Java?
Do you have any idea how much better C or C++ are compared to C#?
Actually I do; well, that is to say, I know that they're not really directly comparable most of the time. C is great for low level stuff. I wrote a small C-subset compiler in it once. C++ is great for mid-level development. I had a lot of fun writing games in C++ in high school. Both of these languages are great when you need them, but they are not the same type of tool that Java and C# are. If you need to write maintainable business apps (which is what 90% of us have to do to put food on the table), you're going to use a managed environment with reflection capabilities and good standard APIs. You'd be crazy to write an accounting program in C, just as you'd be crazy to write an OS in C#.
Alright, time for some standards: "Why do you feel that Python is so bad? What do you find wrong with it?"
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
FTA: ". 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"
using System.Net.Sockets ...
IPEndPoint _p = new IPEndPoint (127.0.0.1, 80);
Socket _s = new Socket(_p, SocketType.Stream, ProtocolType.Tcp);
_s.Connect(_p);
_s.Send(...bytestream...);
Boy howdy, that's just buried in layers.
My Other Computer Is A Data General Nova III.
thank you for summing up the economy of the United States, circa 2000-2010
It's not like every job I've ever had I was thinking "what will this make my resume look like, in the event I run into some language snob in the future?"
I'm in it to get paid. If there was money in it, I'd write COBOL apps to run on mainframes that are beowulf clusters of iPads. I have a family to feed and a mortgage to pay so I don't wind up homeless. I don't give a rats ass about much else. Pay me and I write code - that's it.
Weaselmancer
rediculous.
Questioning the use of the .Net framework when doing Windows development is like questioning the use of the J2EE framework for web interface development. Why in the world would you want someone who doesn't know the fundamental frameworks of the environment they're deploying to?
The days of simple APIs is long gone. Every major product or project I've worked on for the past 10-15 years has started with the choice of a framework, followed by the choice of reusable add-ons for that framework. Only the "leftover" custom functionality actually gets programmed by hand.
Doing otherwise is not only foolish, it's a sign of criminal negligence and incompetence.
I do not fail; I succeed at finding out what does not work.
I've often called Microsoft Windows McWindows because I constantly heard people explaining their choice of platform and software because it was popular. This guy doesn't like MS .NET developers because they picked a platform and SDK which is locked down and dictates too many things which you'll have a tough time doing differently. I was blown away in the 90s when there were all these Windows CE clamshell devices and Palm blew them away with a portrait format device( even though the screen was square(160x160) ) and they all closed shop until Microsoft came out with new version of Windows CE which had a different screen resolution designed for portrait layout instead of landscape. I thought WTF, Microsoft was dictating the display format.
So that's the deal, the guy doesn't want developers who pick a platform that'll get them stuff on their screen fast but when the hard stuff shows up, the stuff outside the box, their platform restricts what they can do or how they approach the solution. That's what I got out of it. And it was fun seeing the McDonalds reference. That "everyone else is using it" shit always pissed me off when other technologies were far far better at solving the task and I've even quit a couple of jobs over it. Both those project failed because the lowest common denominator is not often the choice that you'll succeed with. But money just gets wasted and nobody gets fired for picking Microsoft. You just move onto another project and say thanks for the 1, 2, or 3 years of salary. To some, it's more about building it right, building it to last, building it with just a bit if pride. IMO.
LoB
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
Seriously. I'll do it.
I RTFA expecting, like most of you, to want to rip this guy a new one, but here's the thing.
He didn't say he won't hire .net developers. He said he considers it a liability and will want to know why you chose to learn it. He never said there were no good reasons. Hell, a lot of you have posted some. I don't know .net, but if it's what I had to learn to get something done that my client needed, it's what I would do.
So, dearest editors, how about not massively misrepresenting what people are saying? That, or let someone else do it.
I wouldn't hire anyone with majority Windows experience in general. It speaks to their judgement. You decided to use Windows instead of a Mac or other UNIX? In this century? In San Francisco and Silicon Valley? I'm not impressed, because you are not going to know how to do the real version of a task. You're missing key tools. You're hobbled by Microsoft's involvement, not enabled.
For example, when interviewing Photoshop pros, I'm always looking for Wacom Tablet experience (it is amazing that people think they are "using Photoshop" with a mouse) and rarely does someone with Windows experience actually know how to use a tablet. I'm always looking for Photoshop automation experience, because there is a lot of grunt work in graphics, you can make it all go away with a little AppleScript. Rarely does a Windows user know how to automate Photoshop, because it is 1000 times harder on Windows. Further, Windows users don't know color management, which is a bolt-on for Windows, but built-into the Mac. Then a guy or gal comes in who knows Photoshop, the Mac, the Tablet, AppleScript, and ColorSync, and they can sit down and be immediately productive all day. And they won't need I-T help all day, either.
So I get what this guy is saying.
I have a chef friend who told me the most important lesson a chef can learn is to use great ingredients. She said a chef with organic, grass-fed beef and organic vegetables and a little olive oil and fresh oregano and garlic is going to out-cook a more-skilled chef who has to use typical mediocre supermarket ingredients. The great ingredients already have flavor from the start, and the mediocre ones lack flavor from the start. So she said when she is hiring people, the first thing she looks for is their attention to ingredients, because that means they are paying attention to the big picture, they are going to make more flavorful food no matter what circumstance you put them into, what kitchen, what challenge you set for them. I took her advice and even with my very limited cooking skills, I suddenly make great-tasting food because I start with great-tasting ingredients.
The equivalent advice I give people who ask me how can they make digital art or applications as good as mine is "get a Mac." Start with good ingredients like ColorSync, AppleScript, QuickTime, WebKit, Apache, PHP, Python, Perl, Ruby. People come back to me a month or two later and thank me for making them into better artists with that one bit of advice in the same way I thanked my chef friend for dramatically improving my cooking by opening my eyes to the importance of ingredients.
Somebody who chooses to use a Windows machine in the 21st century is not paying attention to the big picture. They may be able to cook you a meal, they may know how to bake and broil, but they will not make you any great tasting food.
And if you are talking about mobile applications specifically, then somebody who went through 2008-2011 and did not get into Xcode? You have to wonder is their passion mobile apps? There is a whole PC replacement cycle between 2008-2011 and they didn't buy a Mac, on which you can also run Windows, so that they could make an iPhone or iPad app? Even with my limited Windows experience, if Microsoft had done iPhone in 2007 and iPad in 2010 instead of Apple, I would have a copy of Windows 7 and Visual Studio and would have made apps for those devices. So someone who spent 2008-2011 doing .NET is not part of the mobile game. You have to be suspicious of that person at an interview. You want somebody who makes mobile apps, not Microsoft apps.
Funny, I communicate with Perl web developers quite well. I learn a little about Perl, they learn a little about .NET, and magic happens. Amazingly, those Perl developers happen to know (sometimes quite a fair bit) of C++. Amazingly, I happen to know some Perl. What a diverse world we live in! Welcome to it!
Consequently when you write a .NET application for the Internet, not a single term in your vocabulary is the same as that of a Perl, Python or Ruby programmer. WWW standards are rarely, if at all, referenced.
Yep - all those things I hear like SOAP and RESTful web services in WCF, or Atom in WCF Data Services, or AJAX and jQuery in ASP.NET MVC, are all just figments of my imagination.
Seriously, did you ever write any web app in .NET? Was it, perhaps, in 2003?
That comment alone gives me the image of a clueless Dilbert-esque pointy-haired boss who has no business leading anything. Whoever is funding the start-up, needs to fire him and get someone else.
If he's going to make broad (and stupid) decisions based on something like this, he should at least be able to distinguish between a framework and a programming language. And even then, he's STILL an idiot...
'The unexamined life is not worth living' - Socrates