为什么新人不会编程

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

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

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

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

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

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

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

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


  旧的面试体系以有限的信息为基础,你只能通过应聘者的简历了解他们。但是,如果你只面试有成就的人,你将会有一个更宽广的平台来开展工作。避开“FizzBuzz”,直接让应聘者展示他们的代码,并解释他们的设计决策,如果让他们现在重新做的话,又会有什么不同。你在一旁观看时,让他们实现一个或者两个功能,这样你就能知道他们实际上是怎样工作的以及他们在工作中的想法。这才是你想从一场技术面试中得到的,而不是通过一些过时的算法和数据结构来对此进行估量。这个世界总在不断前进。
目录
打赏
0
0
0
0
33
分享
相关文章
从小白到专家:我的编程自学之路
【10月更文挑战第30天】在数字时代的浪潮中,掌握编程技能已成为一项宝贵的财富。本文将分享我从一个对代码一窍不通的小白成长为一名能够独立解决问题的程序员的心路历程。通过真实的经历和感悟,我将揭示如何利用网络资源、社区交流和个人项目实践来提升编程技能。无论你是编程新手还是希望进一步提升的老手,这篇文章都将为你提供宝贵的经验和启示。
65 4
|
3月前
|
从新手到高手:我的编程之旅与技术感悟####
在技术的浩瀚星海里,我以代码为舟,从懵懂的新手驶向渐趋熟练的彼岸。本文不仅是一份个人成长的记录,更是对编程世界深度探索后的心灵独白。它不简单概述成就或技能树,而是聚焦于那些在键盘敲击间闪烁的智慧火花,以及它们如何照亮了我的思考路径,塑造了我对编程艺术的独特见解。 ####
47 2
|
6月前
|
探索代码的奥秘:从新手到高手的技术感悟
在技术的海洋中,每一行代码都如同一颗璀璨的星辰,引领着我们探索未知的宇宙。本文将分享一段从编程新手逐步成长为技术高手的旅程,以及在这个过程中积累的一些心得与感悟。
29 4
探索代码之美:从小白到大师的编程旅程
【9月更文挑战第15天】本文将带领读者走进编程的世界,从最初的困惑与挫败,到逐步掌握编程技能并发现其乐趣。我们将通过具体案例和代码示例,展示如何从基础语法学习,到解决实际问题,再到优化代码的过程。这不仅是技术上的提升,更是一个思维和解决问题能力成长的故事。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和启发。
快来get策略模式,告别编程困惑,轻松变身编程高手✨
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
零基础同学自学编程的正确姿势
编程这件事现在有点热门了,经常能在网上看到有人问该怎么学编程。不用说,问这种题的同学都是对编程没啥经验的,有不少甚至是完全零基础的。 要搞清该怎样学编程,先得问自己一个问题:为什么要学编程?学来想干什么?
144 0
零基础同学自学编程的正确姿势
面向对象小白的飞天加速计划参与感受
尽管我主要是通过ESC平台vscode编程,可能的话会在自己的网站上发表解题报告。但是,ESC的功能肯定不止我所说的这些啦,非常感谢阿里能给高校学生提供如此方便而又有效快捷的平台,对大家编程实力的提升大有裨益。
2020年程序员/工程师必看的三本编程书籍
因为新冠肺炎疫情,很多同学都宅在家中,所以有大把的时间进行学习和充电。作为程序员或工程师的你,想要在代码方面更精进一步的话,应该看哪些书?
3724 0
2020年程序员/工程师必看的三本编程书籍
新人程序员读书推荐
转载一篇阿里内部大牛的文章,非常nice的老大! ---------------------------------------------------------------------------------------------------------------- 团队实习生要回学校了
2913 0