TearSnow Fan


[转载] Why we don’t hire .NET programmers / 为什么我们不要.NET程序员

为什么我们不需要.NET程序员

 

也许你已经知道了,我们正在招聘最优秀的程序员。不错,每个人都这样说。但是我们的程序员能打败你们的——任何时候。比如,米奇虽然只有5英尺高,但他是一个有相当实力的击剑手。维托尔德以前是一个6’3″的职业冰球选手。内特喜欢以丢匕首为乐。当然,他们都是很有水平的程序员。

发现这些人才,并不是你好好上班就能完成的事。事实上,我生活的一半时间都花在了上面,而丽莎差不多投入了她全部的时间。我们有一支招聘大军,搜遍世界任何一个角落,没有一份简历漏掉。总共算起来,我们有大量的简历。很多我们根本不看,因为简历——说实话——完全没有价值。相反,我们把所有的重点都放在了 几个关键问题上,我们会问所有的应聘者,每个问题的主旨都是要揭示一个关键信息:这是我们真的想要的人吗?

你知道,经验是廉价的。只要有时间,你就能有经验。技术本领难求,但事实上只要你努力就能得到——很多人都能做到。但是态度就不一样了。你要么有,要么没有。我们要找的是对编程有热情的人,他们离不开编程。他们大多是大学之前——有些是中学之前——就开始编程了,而且一开始就停不下来。他们开发各种程序,从汇编到jQuery,从个人电脑到移动手机,从复杂的底层计算图形到高端的社交网络。他们各个领域无所不至。

无所不至,但是,不包括 .NET。

让我来解释一下——.NET是一个很不错的语言。它很新潮,很独特,各种花哨的东西应有尽有。如果你要是开发Windows Mobile 7应用(统计数据显示你应该不是),它应该是你的不二选择。选择 .NET 也是一种选择,如果有谁要做这样的选择,我不会阻止,但要问一声“为什么?”

不要误解我的意思:.NET 在你的简历上并不意味着一个大红叉。但在电话筛选中的确会引起我的疑问,其中的理由让我们用个开心的比喻来解释:

用 .NET 进行编程就像是在麦当劳做烹饪。那里有全套神奇的设备能够自动的造出所有的东西。只有你按一下正确的按钮,跟着提示灯的指示,你就可以批量的制造出完美无缺的1.6盎司的汉堡,比地球上的任何其他人都要快。

然而,如果你想做出一个1.7盎司的汉堡,很抱歉,你做不到。很简单,没有这样的按钮。馅饼是预先做成了那样的尺寸。它们做出来之后就被冷冻,所有你无法把它们揉到一起做成其它尺寸,解冻机和烹饪机是一体的,你没有办法在它们之间进行拦截。麦当劳的厨房产出的食品精确的和麦当劳的菜单保持一致的——这种模式使你的大脑不需要任何的思考。可是,它不能偏离菜单,对烹饪机器的任何你妄想的压挤变形都会导致它停止工作,而被送回返厂维修。

然而,我们要找的是另外一种人。一种能够用削尖的树棍在野外篝火上烧烤松鼠的人——那是在深山老林里为了生存而捕捉并剥了皮的松鼠。我们不需要快餐店厨师长,我们要的是由野狼带入文明社会的《蝇王(Lord of the Flies)》,在堆满铜钱底壶和精选香料的法国厨房里喂养大的人。我们要的人不仅仅能做汉堡,他要能够从无到有做出任何东西。

你也看见了,微软是特意这么做的(而且非常成功)。.NET要跟其它所有东西都表现出尽可能的不同,让程序员们远离细节,这样就导致他们完全彻底的依赖微软神奇的编程工具套件,让这些工具替他们思考。微软早在舞台上只有他一个演员时就这样做,明确的使这些东西要么很难移植到非Windows平台,要么看起来很难实现,以此来保持他的垄断地位。

这种做法——或者这种对立的思维——导致了无数的分歧。小的方面,比如在文件路径中使用反斜杠,而不是像其它经典系统中使用正斜杠,或在DirectX中使用左旋坐标系统,而不是使用自从计算机诞生以来就采用的右旋坐标系统。大的方面,比如通过无数的分层把网络架构搞的晦涩难解,使人们很难想象出字节在网络中如何传输的。还有成百上千这样的事情:他们的开发工具在你没有写任何代码前就先生成了一大堆复杂的文件,笨重的服务器上本来对于任何人只需要敲几下键盘的操作却非要启动一个远程的GUI终端,那是一个对开源许可协议过敏的编程文化。这样的事情举不胜举。

这些并不会让你成为一个“差程序员”。如果你只想尽快的做出一个1.6盎司的汉堡,把余生奉献到无尽的系列菜单上,那所有的这些特立独行对你来说不会有任何影响。但是,每天你在那种厨房里的日子并不是真正的厨房生活,学不到如何做真正的食物,写不出真正的代码。

更糟糕的是,在微软厨房里学一天的东西需要两天去忘记,我是说,一旦你心安理得的走上了.NET的事业道路,你很难再走回头路。因为你被深深的桎梏到了这些工具和技术里,而这些工具和技术跟 .NET 之外的东西毫不相干,这样一来,对于一个创业公司来说,你实际上没有什么价值,你的这些年就如南柯一梦。

那么,这篇文章是要告诉你什么?两个事情:

  • 如果你想着在一家创业公司工作,别用.NET。它会让你不受欢迎。
  • 如果你创办了一个公司,想招聘真正的人才,留心那些简历上有 .NET 的人,问他们为什么要写上它。

这些听起来很刺耳,但却是事实。有时候我们只有松鼠可以吃,我们需要能把它做出好的味道。

 

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

 

As you might know, we’re hiring the best programmers in the world.  Sure, everyone says that.  But my coders will 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)

 

原文: http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/

译文:http://www.aqee.net/why-we-dont-hire-net-programmers/

 

本文固定链接: http://blog.xieyc.com/reposted-why-we-do-not-hire-dot-net-programmers/ | 小谢的小站

该日志由 xieyc 于2012年08月16日发表在 编程 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: [转载] Why we don’t hire .NET programmers / 为什么我们不要.NET程序员 | 小谢的小站
关键字:

目前共有 1 条留言 【 访客:1 条, 博主:0 条 】 访客以 1:0 暂时领先博主!

  1. 沙发
    hupo:

    哎,我是踏上了net不归路,C++都不会了

    2014-06-27 09:01

发表评论

:wink: :neutral: :mad: :twisted: :smile: :shock: :sad: :roll: :oops: :eek: :mrgreen: :lol: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

快捷键:Ctrl+Enter