阅读更多

39顶
22踩

行业应用

原创新闻 为什么新人不会编程

2011-06-20 10:54 by 见习编辑 jobbole 评论(45) 有27353人浏览

  我们都生活在一个这样的噩梦中:一个新手开发人员前来工作,你欢迎他的参与,却发现他达不到你对进度的要求,而且他的提问也显示出他对基础知识的无 知。即使他最终把工作完成了,编写的程序也很笨拙,需要更能干的人从头重写。然而录取他的面试官们或人力资源部门(如果你的公司中也有这种官僚体制的寄生 虫的话)却信誓旦旦地表示,他们只聘用精英人才。

  这是一个大问题,尤其是现在,有愈演愈烈的趋势。每天我都从招聘人员那儿收到骚扰邮件,每个IT公司都极度渴望聘请程序开发者,但是优秀的程序员是不可替代的。一个优秀的程序员可以轻易完成相当于一个平庸的程序员五十倍的工作,而拙劣的程序员最终只会产生消极的生产力(参见《一些鲜为人知的编程真相》)。因此,对任何公司来说雇佣这样的人都 是一个可怕的错误;对新创公司来说,这简直就是具有毁灭性的公司杀手。既然这样,为什么这种情况出现得如此频繁呢?

  就如同有很多残留问题困扰着现代软件工程一样,这都是微软的错。当微软还是一个人人都暗自想去工作的邪恶帝国时,就以用令人绞尽脑汁的问题面试而著名。例如:为什么井盖是圆的?当然,他们也问刚毕业的大学生一些关于计算机科学理论的问题,如:请写一个二分查找程序。

  每个IT公司都希望能像微软一样,甚至Google也这么希望过,直到目前大家都想成为Google这样的公司。因此这种相互模仿的面试传统就延续 了下来。看看这两个关于面试问题的最新信息,一个来自准员工,一个来自Google面试官。这里引用了两句Google面试官说的话,很有启发性。“我甚至不必说这是一个 很好的标准。”和“如果 有任何值得欣慰的地方,至少我们再也不问复杂的谜语问题了,那个实在是相当令人反感。”

  令人高兴的是,Google似乎有点意识到他们的招聘方法存在问题,可惜的是他们没有设法解决。Jean Hsu也撰文表明她对技术面试效用的疑问。根本问题是,目前通过行业标准化的软件面试所需要的技能并不是一个优秀的软件开发人员所需要的技能,或许这其中有某些相关性,但这个相关性就跟奥克兰突袭者队挑选出跑得最快的人,却无尽沮丧地发现国家橄榄球联盟并不是一个跑步比赛是一样的。

  事实上更糟糕。因为至少接球员是需要跑的,而我却可以无所畏惧的向你保证,没有哪个被聘用的软件工程师必须写一个二分查找程序。这就如你选择承包商一 样, 因为他们知道怎样用煤、铁、炉子和风箱来锻造和浇铸钢材。事实上他们只需要知道最近的一家家得宝(全球最大的家居建材零售商,美国第二大零售商)的地址, 以及用在那里买的钢材来做什么用。

  你通常试图在雇员身上找寻的东西,Joel Spolsky曾给出了准确的解释,即:就是聪明(Smart)并且能做事(Get things done)的人。(大学院校中到处都是具备前者而不具备后者的人。)不过,首先你必须构建一些其它的能力,也就是说不能完全不具备任何能力。你会惊奇的发 现,如此多的完全不胜任的应聘者出现在技术面试中。Google的二分搜索大概是打算作为他们的“FizzBuzz”(分支切换)——一个你进入Google大门必须越过 的障碍。这个“FizzBuzz”在真正的面试开始前占据了足足五分钟。

  那么,一场真正的面试包括什么呢?请允许我提出一个愚见:不聘用没有任何成就的人。证书和学位从来都不是成就,我是指有实际用户的真实项目。现在 Google App Engine和Amazon Web Services提供免费的第三方服务,而且要注册成为一名Android开发人员,并在Android Market发布程序也总共只需25美元。在这样一个世界里,任何软件开发人员没有借口说他没有自己制作的网站、应用程序或服务。(编注:因此,新人在参 加全职工作前,去承接网站开发项目或者软件开发项目,从中学到的知识和积累的经验,对新人而言是一项非常宝贵的财富。)

  旧的面试体系以有限的信息为基础,你只能通过应聘者的简历了解他们。但是,如果你只面试有成就的人,你将会有一个更宽广的平台来开展工作。避开 “FizzBuzz”,直接让应聘者展示他们的代码,并解释他们的设计决策,如果让他们现在重新做的话,又会有什么不同。你在一旁观看时,让他们实现一个 或者两个功能,这样你就能知道他们实际上是怎样工作的以及他们在工作中的想法。这才是你想从一场技术面试中得到的,而不是通过一些过时的算法和数据结构来 对此进行估量。这个世界总在不断前进。


  原文:Jon Evans 翻译:唐瑭

来自: www.jobbole.com
39
22
评论 共 45 条 请登录后发表评论
25 楼 skypengyc 2011-06-21 08:14
偏题了吧。你这个是讲面试机制
24 楼 yxbwzx 2011-06-21 08:03
大部分公司不需要高超的技术,他们只需要廉价的码农,新人是最好的选择
23 楼 s929498110 2011-06-20 23:56
jdnull 写道
现在明显感觉公司非常急于求成,如果希望员工一进公司就能投入开发,除非把别的公司已经有了十年开发经验的员工挖过来,否则就是妄想。一个公司只注重产品的开发而不注重员工的培养肯定是没有前途的。ps:从这篇文章可以看出一点,该作者对于大学对于一个人能力的培养、人格的塑造和人生的影响的认识很肤浅


呵呵、 作为一个一本大学在校生、 我只看到了90%以上的酱油党。

又看到那种非常“抽象”的描述大学对人发展的帮助
“人能力的培养、人格的塑造和人生的影响”
典型的大学虚度者的打肿脸充胖子推辞
22 楼 wenrow 2011-06-20 22:47
我也不想急功近利,问题是老板催我我完成,那我又要去怪谁?
每一个刚进入软件行业的人都期望自己能有所为。
公司不愿培养人,愿意培养的人的公司又要求高,挤破头都挤不进去。
我请问,到底是谁得错?这就他吗的一个鸡生蛋的问题。
你公司培养人有风险,新人进错公司有风险。
这都是不同的角度有不同的观点。到底谁的问题,谁也弄不清楚
21 楼 motianyixian 2011-06-20 22:25
晕。发这样的帖子有意思吗,没有人一出生就会编程,不都是从新人开始的吗!
20 楼 jackra 2011-06-20 22:09
不会编程不是罪。罪过的是,让不会编程的人编程。
首先我们得承认,现在是市场经济的时代,尽管一些地方还不市场,但部分行为还是市场的。在市场行为中,到底什么才是核心,那就是产生利润,产生价值。
真正能衡量精英的方式,是在竞争中胜出,任何一个精英,都不是希望混日子的,都不是希望混口饭吃的,所有的源动力,来自于“超越”,超越别人,超越自己。
19 楼 liyaxi 2011-06-20 21:40
我有同感, 公司招的信任, 啥都不会, 脾气还大得很。
18 楼 exe 2011-06-20 21:33
exe 写道
很多人在学校不学东西的,什么都不会

企业也不能要求太高,期望越高失望越大。
要求高的话,还是多花点钱找熟手吧。
17 楼 exe 2011-06-20 21:31
很多人在学校不学东西的,什么都不会
16 楼 汗青boy 2011-06-20 21:24
新人也需要企业的培养,如果进来就能独自接活干,那还能叫新人吗
15 楼 beiyangshuishi 2011-06-20 21:00
我自己的经验是,在去应聘前,临摹别人的项目从头到尾,敲一遍。(例如:实现某一个.net的考试系统,用java SSH框架去实现所有逻辑和功能)。这样你去面试JAVA程序员的成功几率要比任何无开发经验的人强。
14 楼 houankun 2011-06-20 20:29
其实辩证的看问题比较好
13 楼 whoshaofeng 2011-06-20 17:24
如果我是老板,一万个赞同你的观点,如果我是新人,我很难认同。所以角度不同,观点也不一样。
12 楼 lkj107 2011-06-20 16:58
假如一个关羽可以干掉50个士兵,给你100个关羽,你能打进一个有正常的2000部队守的城池吗?

你还需要弓箭兵,撞城门的

团队需要各种角色,如何驾驭,这个是开发经理的问题
11 楼 xieye 2011-06-20 16:41
无聊的Android广告贴
10 楼 jdnull 2011-06-20 15:53
现在明显感觉公司非常急于求成,如果希望员工一进公司就能投入开发,除非把别的公司已经有了十年开发经验的员工挖过来,否则就是妄想。一个公司只注重产品的开发而不注重员工的培养肯定是没有前途的。ps:从这篇文章可以看出一点,该作者对于大学对于一个人能力的培养、人格的塑造和人生的影响的认识很肤浅
9 楼 lc7cl 2011-06-20 14:27
这个新闻cnbeta早就出来了 javaeye太慢了 太慢了 太慢了
8 楼 fys124974704 2011-06-20 14:04
我觉得这文章不错,这是作者对面试和新人的一些看法,在最后,作者还说到了新人应该如何提升自己,如何在面试中脱颖而出的做法。总的来说有一定的教育意义。
7 楼 lvlin1983 2011-06-20 13:51
谁又不是从新人过来的呀? 一分钱,一分货,
6 楼 tiannet 2011-06-20 13:49
个人觉得面试作品是最有效的面试方法。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 容器网络的灵活使用

    本篇是第七部分“网络篇”的第二篇。在这个部分,我会为你由浅入深的介绍 Docker 网络相关的内容。包括 Docker 网络基础及其实现和内部原理等。上篇,我为你介绍了如何使用用户自定义的 bridge 网络。本篇,我们将学习如何灵活的使用容器网络。 Docker 在网络方面也提供了多种功能,可用于满足不同的需求。本篇,我来为你介绍几种灵活使用 Docker 网络的方法。 域名解析 上篇我...

  • 查找局域网广播风暴的工具及NetworkActivPIAFCTMv的使用教程

    查找局域网广播风暴的工具 局域网广播风暴检测监听软件 内附详细图文教程一看就会 NetworkActivPIAFCTMv的用法

  • 快速上手:iperf网络性能测试工具

    iperf命令是一个网络性能测试工具,可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能,是一个非常实用的工具。目录iperf安装带宽测试(TCP、UDP分开测试)网络收发包性能测试iperf安装可以直接通过官网下载对应系统版本进行安装(https://iperf.fr/iperf-download.php)1.对于windows版的iPerf,直接将解压出来的ipe...

  • 广播风暴的成因以及解决办法有哪些?

    1. 广播风暴的检测和故障解决 首先,广播风暴的产生有两种可能性: 不合理的网络划分。比如很多客户机处于同一个网段内。由于ARP、DHCP都是广播包的形式,那么有时候就会产生广播风暴。 环路。环路时,数据包会不断的重复传输,也一样会产生广播风暴。 这两者中,环路的情况比较恶性,需要网管人员立即进行排除;而网段划分引起的广播风暴比较良性,一般对网络的影响较小。   网络...

  • 通过ping来测试网络带宽

    假设ping 5500字节平均耗费0.696ms而ping 65500字节平均耗费4.207ms,因此,往返额外花费3.511ms单程额外花费1.7555ms,多发送60000字节即480000比特。假设ping 5000字节平均耗费1ms而ping 45000字节平均耗费4ms,因此,往返额外花费3ms单程额外花费1.5ms,多发送40000字节即320000比特。当然这一估算是非常粗略的,假设路径上其他数据流基本不变的情况,也没有考虑路径上所有链路的异常情况。在windows下通过。

  • 网络调试指令ping、telnet、curl

    背景:最近遇到了复杂网络下的网络联通测试,记录一下命令 一、ping 命令 ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常;若远端主机断开网络连接,就不会有回应信息; ping无法检查系统端口是否开放。 ping baidu.com PING baidu.com (123.125.115.110): 56 data bytes 64 bytes from 123.1..

  • WireShark网络安全之链路层安全-广播风暴

    影响:ARP和DHCP在局域网中广播,占用网络资源 网络性能下降 原因: 1.网络短路 2.网络存在回路 3.网卡损坏 4.蠕虫病毒 ////////////////// 说白了就是数据包在网络中来回穿梭 没人要 或者是有人要了但是又抛弃了 反正就是数据包没有归路 然后越来越多 形成网络拥堵 ...

  • 如何向目标IP地址发送数据包…

    原文地址:如何向目标IP地址发送数据包呢作者:wshuyun89 ping IP或是主机名 它发送的实际上是一个ICMP数据包。 不知道你有没有基础,看看下面的吧 是DOS命令,一般用于检测网络通与不通 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声清求消息给目的地并报告是否收到所希望的ICMP回声应答...

  • 无线广播风暴问题定位分析(omnipeek工具)

    问题描述 三台mesh设备组网,下级连接7台电视盒子,5个摄像头,2台平板,测试过程中出现网络卡顿,视频无法播放,丢包严重 问题分析 首先确认上级网络正常,

  • 网络丢包带宽测试工具 iperf3 简单认知

    iperf3 是一种网络性能测试工具 工作中用到,这里简单介绍 理解不足小伙伴帮忙指正

  • 使用Fiddler进行移动端抓包和模拟弱网络测试

    在移动端chrome浏览器/自带浏览器中输入192.168.X.XX:8888,打开如下页面,点击FiddlerRootcertificate,下载并安装即可。勾选Decrypt HTTPS traffic,下拉框选择from remote clients only,只获取远程客户端的https请求。设置完成后,Rules->Performance->Simulate Modem Speeds,开启后才生效。多个请求:Ctrl+鼠标,选中多个请求。从chart图上可直观的看到耗时的请求。

  • Windows网络诊断和配置常用命令详解

    Windows网络诊断和配置常用命令详解

  • 测试网络性能系列之netperf 与网络性能测量

    本文首先介绍网络性能测量的一些基本概念和方法,然后结合 netperf 工具的使用,具体的讨论如何测试不同情况下的网络性能。 在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多,或者即使考虑到性能的问题,但是却发现没有合适的手段去测试网络的性能。 当开发出一个...

  • 网络风暴简介

    什么是网络风暴?         由于网络拓扑的设计和连接问题,或其他原因,导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪。这样的现象就是网络风暴。 怎样抑制网络风暴?         广播域:是在在网端上,所有设备的集合。这些设备可以接听送往每个网段的所有广播。         冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。         冲突域基于第...

  • 网络风暴

    刚刚经历了一下网络风暴。导致服务器不能启动了。 原因可能是网络形成了环路,导致的。 可能是我这里通过bub连接了2个网口,2个网口间又有数据转发造成的。

  • 嵌入式linux设备网口带宽-测试方法

    cd xxx_install # 进入安装目录 $ arm-linux-gnueabi-strip bin/iperf3 # 去除iperf3镜像调试信息 $ arm-linux-gnueabi-strip lib/libiperf.so.0.0.0 # 去除共享库的调试信息 $ rm lib/libiperf.a lib/libiperf.la # 删除两个不用的库文件 $ tar cvf iperf-exec-3.0.1.tar.gz bin lib # 压缩bin和lib目录。

  • [计算机通信网络]跳(hop) 的概念,tracert指令来查看访问站点经过了多少个路由器

    跳(hop)的概念,windows的tracert指令

  • ARP局域网检测工具

    很好用的ARP局域网检测工具,专门针对局域网内的ARP攻击,可以扫描到攻击源。方便大家对局域网的维护、诊断。

Global site tag (gtag.js) - Google Analytics