导读:本文是从《Why we don’t hire .NET programmers》这篇文章翻译而来。
也许你已经知道了,我们正在招聘最优秀的程序员。不错,每个人都这样说。但是我们的程序员能打败你们的——任何时候。比如,米奇虽然只有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的人,问他们为什么要写上它。
这些听起来很刺耳,但却是事实。有时候我们只有松鼠可以吃,我们需要能把它做出好的味道。
文章出自:外刊IT评论
译文出自:expensify
原文 :http://sd.csdn.net/a/20111220/309383.html
偶是。net程序员。。。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
可能是翻译人不是做技术的,导致文章中的部分内容理解有歧义。原文作者(仅从译文看)说他不喜欢用.net是因为部分功能代码都封装好了,无法自由编程,而且平台移植局限性很大。而没有说过任何一句.net开发语言不好之类的话。请你们这些讨论"什么语言好什么语言不好"的人看完后再做评论,别再做“断章取义”的事情了,毕竟,开发人员的逻辑思维严密性是很重要的。个人觉得:讨论语言好坏本身就是无意义的事情,哪里有需要哪里就有市场。
回复(0)支持成功(2)反对(0)举报(0) | 0条回复..
你们要看懂作者的意思,作者有比较两种语言优劣吗?并没有。
作者的中心思想就是 .net使人思想惰性化,缺少创新意识。微软这么做的原因就是为了垄断。
但对程序员来说,这不是什么好事情。工具帮你做好了一切,你只需要按部就班。这就像把双刃剑,在给你带来便利的同时,也把你囚禁其中。
回复(0)支持成功(3)反对(0)举报(0) | 0条回复..
csdn的编辑们,我真怀疑你们的知识的专业程度!!!这么多年了,关于语言的你强我弱的争论早已经是一个说的太烂的话题了。语言没有强弱,只有使用这种语言的人强弱不同而已。作为一个受广大程序员关注的媒体,总找这样一些误导人的话题来让人争辩,是不是有悖媒体的“良心”二字呢?
回复(1)支持(3)反对(0)举报(0) | 1条回复..
如果你们今天用的网易的邮箱,你就知道csdn昨天被人家黑了,所有的注册的帐号密码邮件都被黑客填在网络上。。 你们知道为什么csdn网被人家黑了吗?
回复(0)支持(0)反对(0)举报(0)
.NET是一个很不错的语言。它很新潮,很独特...看到这里哥就看不下去了,.NET不是们语言,这是常识性的东西
回复(5)支持(9)反对(1)举报(0) | 5条回复..
.net是一门技术 我淡定...
回复(0)支持(0)反对(0)举报(0)
还有Windows Mobile 7。。估计这作者根本就不了解.NET,但又对.NET存在偏见
回复(0)支持(3)反对(0)举报(0)
说.net是语言的都是2 13
回复(0)支持(5)反对(0)举报(0)
c#才是语言啊。
回复(0)支持(0)反对(0)举报(0)
.NET是一种架构……
回复(0)支持(0)反对(0)举报(0)
支持本文的作者及其公司,可以告诉大家的是,哥也是搞.net的,不过哥现在这个后悔啊。
哥认为,在你没有熟练掌握C++/QT, Java之前,你没有任何理由接触微软.net技术。
不仅仅是.net的人不能要,而且连只懂Windows平台开发的人也不能要。
我们不应该仅仅是抵制.net,我们应该抵制的是微软的一切东西!~
回复(16)支持(12)反对(42)举报(0) | 16条回复..
这人有问题!
回复(0)支持(12)反对(1)举报(0)
你对.net的认识是错误的,或许你不是程序员
回复(0)支持(5)反对(3)举报(0)
支持啊,不管做啥都得装上visual studio,买一套挺贵的,java的开发工具全部免费,C++也能用免费的开发工具,学习成本很低啊。而且编程编久了会发现在图像界面里面改一个参数比在配置文件里面改更繁琐。
回复(5)支持(2)反对(14)举报(0)
那你不要用windows啊
回复(1)支持(6)反对(1)举报(0)
DreamSpark,只要你是学习的话,那么Windows Server(标准版)都是可以免费给你用的。
回复(0)支持(4)反对(0)举报(0)
又看见你了 怎么老是能看到你的身影啊
回复(0)支持(1)反对(0)举报(0)
证明你没学好,还说自己搞.NET的,脑子有问题,不跟你讲编程。
回复(0)支持(2)反对(1)举报(0)
你不会用速成版啊?那是免费的,而且功能很强大。
回复(0)支持(2)反对(0)举报(0)
我觉得全世界都该抵制你,发什么神经
回复(1)支持(2)反对(1)举报(0)
用windows做开发,但是做出来的程序都是在linux上运行。
回复(0)支持(0)反对(2)举报(0)
我觉得全世界都该抵制你,发什么神经!果断同意!
回复(0)支持(2)反对(1)举报(0)
C#也有免费的工具,功能跟VS差不多
回复(0)支持(1)反对(1)举报(0)
你还是转行吧。
回复(0)支持(1)反对(0)举报(0)
你又出现了,看了你这个头像就知道是你了。
回复(0)支持(0)反对(0)举报(0)
你买过?不管你买没买,我反正是没买过。
回复(0)支持(0)反对(0)举报(0)
你听说过SharpDevelop没有?
回复(0)支持(0)反对(0)举报(0)
争了好多年了,还在说这事情!烦不烦?!举个简单例子:傻子终归是傻子,天才终归是天才;傻子毕业后写C++,和一个聪明人毕业后写Java或C#,傻子难道就做得比聪明人好?! 答案自然每个人都懂,无需在这唧唧歪歪评论哪个语言好,每种语言的出现和发展都有其市场背景。造大桥不需要从铁锤做起!
回复(1)支持(2)反对(0)举报(0) | 1条回复..
用什么语言开发无关紧要.
java也好 c#也好 做开发是理解编程的精髓. 转平台一点都不难 写这个文章的 要么就是脑子有问题 要么就是天生的仇恨微软.
ps:我就是做.net的 现在转到windowsphone 平台 还有自学flex 一样没难度
回复(0)支持(0)反对(0)举报(0)
什么破文章?写这个文章的人技术肯定是个半桶水,编程的水平还没有升华。 对于高手来说,到什么上山唱什么歌。合适的开发用合适的工具。
其实作为程序员的跟才是最重要的,数据结构+算法才是王道。语言只不过是工具罢了。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
你们都忽略的左下角 网易魔兽世界的广告。它默默的看着你们大战。
回复(6)支持(2)反对(0)举报(0) | 6条回复..
错了,是右下角。
回复(1)支持(3)反对(0)举报(0)
错了,是361的。哈哈
回复(1)支持(1)反对(0)举报(0)
对的,现在是361官方旗舰店的广告了
回复(1)支持(2)反对(0)举报(0)
我这还是魔兽世界的
回复(1)支持(0)反对(0)举报(0)
我现在看到的已经是暮光审判了
回复(1)支持(1)反对(0)举报(0)
AdBlock,整个世界清静晒!
回复(0)支持(0)反对(0)举报(0)
哎呦,众说纷纭呀,让我这个技术外行(鄙人在一市场研究公司服务,对国内IT行业工资就就业状况非常了解)说一句吧,根据我们调查结果:单单做程序员的话,C、C++工程师的待遇比Java高,JAVA的待遇比.net高,.net比php略高一点带,这是行业状况。
回复(4)支持(13)反对(0)举报(0) | 4条回复..
Delphi的什么状况啊,哈哈。
回复(0)支持(1)反对(0)举报(0)
C++有精英化的趋势,C++是比java和.net高,但C++也比较难找工作。
只有在不得不用C++的情况下才会有人用。
有人说java和.net能做的,C++都能做;前者不能做的,后者也能做。
我同意,但实际上,能用java和.net做的,肯定不会用c++来做。
因为C++的成本太高。比如一个网站,用java或c#.net做,成本300万,用C++就要600万。而市场价大概500万,前者公司能开心赚钱,c++的公司就只能倒闭或转行。
回复(0)支持(3)反对(0)举报(0)
PHP。。杯具了。。。垫底
回复(0)支持(0)反对(0)举报(0)
我想问问最高的是什么,C?C++?object-c?还是其他
回复(0)支持(0)反对(0)举报(0)
让我来解释一下——.NET是一个很不错的语言。”
我不蛋定了。.NET是语言吗?难道我才疏学浅?求楼主调教啊
回复(0)支持(2)反对(0)举报(0) | 0条回复..
看了评论,我觉得大多数人有一个误区,就是C++比C#难,比C#更原始。
事实并非如此,我在CSDN说过很多次了,C++缺的是类库和一个易用的图像界面,别跟我说MFC,一方面MFC是个平台绑定的东西,另一方面,太大,太笨,而且不好用。
所有用惯C++的人都会觉得其他语法太繁琐,而且别扭。
我其实第一次接触的语言是VB6.0,然后是C#,但是我做的最多的是调系统的API,后来我发现在C++下,这些东西可以直接调,不用那么繁琐。我们都知道,C#或者VB以及Java之类的语言,要编个基本功能的东西,都有现成的控件可用,从xml到网络下载,真的是写几行代码。但是C++有吗,没有。即使有,你也需要自己找类库,下载,安装,配置,编译,然后一大堆错误警告,自己慢慢调吧。
造成这种状况的原因是多方面的,比如没有一个公司想在C++上大显身手,Borland有前车之鉴,这是个费力不讨好的事,还是自己发明一套新语言,来的商业价值高。
C++的基础部分是最简洁的语言,而你平时用到的实际有就是那一点,复杂部分用的并不多。我认为作者说的非常对,高级的语言的受限,你只有体验了C++的自由之后,才会觉得。
回复(10)支持(5)反对(16)举报(0) | 10条回复..
所以,没用过C++的人继续你们的组装编程吧,你当然不可能了解作者的感受了。某位说自己在C#下写全部功能的人,我想告诉你,如果你在C++下写同样的功能,你会把C#丢的远远的,再也不愿意碰一下。
回复(3)支持(4)反对(4)举报(0)
如果我用C++写个web应用,我会死的...
回复(1)支持(4)反对(1)举报(0)
我刚刚用C++写了个htt/p服务器,代码不过几百行,支持静态页面和下载,音频视频。
回复(2)支持(0)反对(1)举报(0)
能直接调的原因是因为操作系统是用C/C++写的.
你真是个天才,终于发现了这个秘密..哈
回复(0)支持(0)反对(1)举报(0)
我写过C++的库也写过C#的库,C++的模板功能比C#的泛型强不知多少倍,然而只能以源码形式存在,永远别像做成动态连接库,而C#的泛型正好相反。我在C++中做过引用计数式的包装类,论效率自然比那GC快不知多少,然而没有引用类型的支持,终于在虚调度这里败了,而且代码量那个大啊。我还曾经试过模拟属性,最后觉得又慢又别扭。所以我虽然以C++为主(因为我的工作对效率要求比较高),但也不会像你说的把C#丢得远远的。
回复(1)支持(2)反对(2)举报(0)
C++其实不缺类库,缺的是一个权威主持的,大家普遍认可的,通用的集成的类库。各自为政,各立山头的类库太多了,大家无所适从。
回复(0)支持(0)反对(1)举报(0)
几百行支持静态页面,支持下载和音视频播放。
看样子你确实没有做过企业应用。
你的工作如果多需要接触底层API,首选肯定是c++,术业有专攻。不过如果你因为自己只接触得到这些而断言这个世界只需要C++的话。。。
回复(0)支持(0)反对(0)举报(0)
。。。。如果你只是想写个socket。输出html.这玩意用哪门语言都能做到。你要就写一个稍大一点的项目。不能少基本交互。你写出来后再看看跟php。asp.net,jsp等看看。各种优势
回复(0)支持(3)反对(1)举报(0)
不是你这么说; C#的类库很方便用.
C++尽管很多类库, 但是要拿过来用, 要改很多东西.
回复(0)支持(1)反对(0)举报(0)
我曾经也做过模拟属性这种事,因为用惯VB、C#的人难免有这种想法,但是仔细想想,属性本质上还是函数调用,C++非常直接的把属性消灭了。使用属性,仅仅是习惯,而并不是说它真的很方便,很好。
回复(0)支持(0)反对(0)举报(0)
其实我觉得底层要学习,但是.NET确实提供了便捷快速的渠道,我想没人想在一些无关紧要的细节上浪费时间吧。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
是这样的,我们这个民族呢,比之希腊差了2500年的是辩论:不会辩论---文章的意思是,不要那些‘只会.Net的程序员’。有人说最牛的.net程序员云云...这都不是辩论中有力的论据,因为这是极少数情况,不代表普遍情况。这也就是西方法庭辩论中,都要涉及到的一个普通法(普遍通行)。或许存在若干及其NB的C#高手。。。但这不是普遍情况。通常高手,他只是恰好那段时间在写C#或者Java,或者Python和Ruby,但是往往他们都是C/C++高手,那些第一语言和唯一语言只是C#和Java的,确实大多数都不是高手。
回复(7)支持(27)反对(1)举报(0) | 7条回复..
对你说的,赞同
回复(0)支持(5)反对(0)举报(0)
谢谢对小生的支持~
回复(0)支持(0)反对(0)举报(0)
实在看不出C#开发者比C/C++高手们差在什么地方。
程序运行效率低?麻烦不要想当然,确定的算法下是差不了几个点的,甚至由于即时编译的特性在某些特定的环境与应用中好上一些也有可能。
内存占用大?对于小应用来说,这个问题确实存在。当应用多一些或者较大一些的时候,这个问题就和运行效率问题类似了,没什么好说的。可现实是,现在的PC真的需要开发者为那几M的内存伤脑筋吗?如果内存真不够用,多出几M就能够用了?
不可否认的是.net平台有它的局限性,但是平台与开发者优劣应该没有直接关系吧。
回复(0)支持(0)反对(0)举报(0)
难道高手们都习惯于盯着那几个点的运行效率与内存占用吗?我想应该把眼光放远一点吧。
程序的高可维护性,高可扩展性也许比那几个点的效率重要得多,这些东西在C#开发中可以轻松的获得。
高开发效率才是C#真正卓越之处,它可以让我们只关注业务逻辑,从复杂的细节中解放出来,为我们节省更多的时间,有了更多可用时间才能将注意力集中在值得深入的问题上。
C#强大的元数据描述,很容易实现高效的代码生成,对于程序的运行效率与开发效率绝对是C/C++高手们难以想像的,也许高手们从来就没听说过程序还可以这样实现。
比如:定义一些类与并实现一堆函数,生成Socket服务端与客户端代码,客户端调用服务端的代码与调用本地基本没有差别,网络流量相对于手工C/C++代码也没有多余字节。
比如:定义一些类,直接生成面向对象的数据搜索服务。不仅有强过lisence运行效率,同时具有面向对象的灵活性。
比如:定义一些类,直接生成面向对象的内置数据库服务。综合运行效率不比任何商业数据库或NoSql差,多数时候只会表现得更好,因为程序对于每个细节都可控,能够真正实现数据查%
回复(0)支持(0)反对(0)举报(0)
汗!这回复功能也太差了,截了一半也不通知一下。
比如:定义一些类,直接生成面向对象的内置数据库服务。综合运行效率不比任何商业数据库或NoSql差,多数时候只会表现得更好,因为程序对于每个细节都可控,能够真正实现数据查询的算法复杂度。
比如二进制序列化;比如不同应用调用的参数处理;比如代码模板生成;比如自动化测试;比如...还有很多,所有与类相关的,所有与元数据相关的。只有你想不到的,没有你做不到,这就是真正的C#。
不知道这样的信息是否会让你对于C#的概念瞬间崩溃?
回复(0)支持(0)反对(0)举报(0)
难道C/C++的开发者大多数是高手?
当前来说,论“高手”的比例与数量,C#比不过C/C++。
我相信,C#代表的是末来。
回复(1)支持(0)反对(0)举报(0)
不是你不会辩论,是你逻辑不清。。。我从来没说用C/C++的都是高手。另外你有反对意见好,但是为了反对而反对,本身就是个错误。
回复(0)支持(0)反对(0)举报(0)
这个人的脑袋被驴踢了...现在Java是开源,并且我发现拿来主义的Java程序员比.Net程序员还要多...因为他们没有类库, 只好用别人的..
再看看, 各种参差不齐的Java类库的实现..感觉就像一个汇编程序员在笑C++程序员一样无知.
回复(1)支持(2)反对(0)举报(0) | 1条回复..
用别人的类库没什么不可啊!可以学习别人的经验,如果功能不满足还可以进行改进
回复(0)支持(0)反对(0)举报(0)
说的不错。。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
没文化,真可怕,更可怕的是没文化,却装的很有文化。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
没文化,真可怕
回复(0)支持(0)反对(0)举报(0) | 0条回复..
看了这篇文章,才知作者竟是如此的粗浅…… csdn也是,这样没品位的文章也转,这不是降低自己网络平台的专业水平品味吗?
回复(1)支持(1)反对(0)举报(0) | 1条回复..
应该是个招聘广告
回复(0)支持(0)反对(0)举报(0)
VC很高级?,一堆的API+MFC,Java很高级?90%的人都在使用别人现成的框架和库,Delphi很高级?组件和库也是一大把。如果只是爱好,你什么都可以自己编,但做企业中绝大部分的公司是需要工程思想的,都重新来?成本啊,利润啊,时间啊。
回复(0)支持(0)反对(0)举报(0) | 0条回复..
其实任何语言都仅仅只是语言,打口水战不值得,哥还搞过打孔编程(直接拿机器指令,比汇编还低级)那种方式,是不是我就很高手呢?其实最核心的是思想,其实就是要有分析问题和解决问题的方法和思路。当然,CSDN转这种脑残的文章,其实不过是为了提高点人气点击而已。
大家散了吧。
回复(0)支持(1)反对(0)举报(0) | 0条回复..
10多年前,本人在英国一所大学工作,发现他们的教师(包括教授)多用Unix、Linux,很多教授都是Unix高手! 这大概也是中外的不同!
很多中国人非常仰慕微软,被人洗脑了!可怜的人啊!
回复(0)支持(5)反对(3)举报(0) | 0条回复..
你们都这么闲吗?为了用这个语言那个语言在那里争?
根据不同的需求,对不同的东西用不同的实现不久完了。
那些总想用自己会什么语言来体现优越感的人,其实正是没有自信的表现。
说白了,不久是种语言嘛,又没有多难,。
正常智商的人,花不了多少时间久可以学会。
而更多的东西,各个语言是共通的。
回复(0)支持(1)反对(0)举报(0) | 0条回复..
“让我来解释一下——.NET是一个很不错的语言。”
一看这句,作者就可以滚蛋了
连.net是什么都不知道,还在这里喷什么好不好……
回复(0)支持(6)反对(0)举报(0) | 0条回复..
发表这篇文章的人绝对是个素人,不管你学什么,只要你学就对了,等到没人学或者没公司要的那天,比等外星人入侵还要困难。你要知道,学了就会有成就,觉得别的平台更能赚钱或者更有前途,你怎么不去银行
回复(0)支持(0)反对(0)举报(0) | 0条回复