英文原文:Why we don’t hire .NET programmers,编译:外刊IT评论

http://blog.jobbole.com/10389/

也许你已经知道了,我们正在招聘最优秀的程序员。不错,每个人都这样说。但是我们的程序员能打败你们的——任何时候。比如,米奇虽然只有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 之外的东西毫不相干,这样一来,对于一个创业公司来说,你实际上没有什么价值,你的这些年就如南柯一梦。

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

1. 如果你想着在一家创业公司工作,别用.NET。它会让你不受欢迎。

2. 如果你创办了一个公司,想招聘真正的人才,留心那些简历上有 .NET 的人,问他们为什么要写上它。

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

为什么我们不要 .NET 程序员的更多相关文章

  1. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  2. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  3. 传播正能量——做一个快乐的程序员

    引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...

  4. SQL Server 致程序员(容易忽略的错误)

    标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...

  5. 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波

    注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...

  6. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  7. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  8. [转载]一个标准java程序员的进阶过程

    第一阶段:Java程序员 技术名称 内                 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...

  9. 【读书】PHP程序员要读的书目(不断完善中)

    本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...

  10. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

随机推荐

  1. 1. Two Sum&&15. 3Sum&&18. 4Sum

    题目: 1. Two Sum Given an array of integers, return indices of the two numbers such that they add up t ...

  2. sharing-jdbc实现读写分离及分库分表

    需求: 分库:按业务线business_id将不同业务线的订单存储在不同的数据库上: 分表:按user_id字段将不同用户的订单存储在不同的表上,为方便直接用非分片字段order_id查询,可使用基因 ...

  3. 深入剖析Java中的装箱和拆箱(缓存池技术)

    以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 简单一点说,装箱就是  自动将基本数据类型转换为包装器类型:拆箱就是  自动将包装器类型转换为基本数据类型. 二.装箱和拆箱是如何实现的 1:反编 ...

  4. VSTO:使用C#开发Excel、Word【12】

    Excel对象模型中的事件了解excel对象模型中的事件至关重要,因为这通常是代码运行的主要方式.本章将检查Excel对象模型中的所有事件,引发事件以及可能与这些事件关联的代码类型. Excel对象模 ...

  5. timeline server介绍

    1. timeline是什么 2. timeline能做什么 3. timeline结构 4. timeline怎么配置   1). timeline是什么? 它能存储和检索应用当前和历史信息在yar ...

  6. wed

    先有一个无后缀的flag 文件 第一次改成 TXT 收索FLAG 得到了一段 flag.txt f返回到第一次修改后缀 改成RAR 打开RAR 发现一个 flag.txt 的文件 打开,即得到 fla ...

  7. Java的基本数据类型大小及其包装类

     Java的基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义 ...

  8. 最短路,dijstra算法

    #include<iostream> #include<stdio.h> #include<math.h> #include<vector> using ...

  9. 问题 Duplicate entry '0' for key 'PRIMARY'

    今天使用了触发器,在一个表中执行增删改操作,然后在另一个表中执行相应的记录时,出现了这个问题 其实这个问题应该算是细节问题,有两种情况: 1.就是在插入数据的时候将id设置为not nul但是在插入数 ...

  10. 神州数码OSPF基于区域认证(简单、MD5认证)

    实验要求:掌握基于区域的简单认证及MD5认证 拓扑如下 简单认证 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 i ...