阅读更多

69顶
9踩

非技术

不同的公司环境会培养出不同的员工,程序员也不例外,由于大公司的开发框架十分成熟,稳定,而且充满盈利能力,所以开发者容易陷入拿来主义思维,而底层代码的编写能力正在逐渐退化。

  

前段时间,@developerworks在微博上向大家推荐了一篇引人深思的文章《程序员困境》,这篇文章的作者描述了在招聘内核程序员时所遇到的一个现象,一些来自大公司的“高级”程序员,却连最简单最基本的问题都无法回答,这不禁引发了作者的思考,下面是笔者的简译:

最近,我为招聘内核程序员而面试了数万个应聘者,有一些是来自有名的大公司,比如非常有名的芯片/嵌入式系统开发公司。许多人的简历制作的非常完美——涉及的各种项目、获得的各种奖项等,并有一些人声称,他们在内核研发上有10多年的工作经验,然而,令人惊奇地是,他们却无法回答一些基本的问题:当调用标准的malloc函数时,内核发生了什么?

别吃惊,当我让一个应聘者编写一个基于glib哈希函数的LRU缓存框架时,他首先声称自己从未使用过glib,于是我向他演示glib哈希API页面,并且详细地解释,然而一个小时后,他只写了几行凌乱的代码。我不知道在其它国家是否会有类似的情形,但在中国,或者更具体地说,在北京,这就是现实。那些“高级”程序员,在有名的外企工作几年后,连一些简单的、基本的问题都无法实现。

为什么?

我愈加思考就愈加认为,这不仅仅是与程序员自身有关,更与其所在的公司环境有关。这些公司通常会提供稳定的堆栈代码,并且多年来一直沿用着,几行没有任何变化。程序员整天围绕着这些代码工作,按照已有的思路去开发,无需自己动脑、去思考。如果长期在这样的环境下工作,并且也没有在外部进行提升和开阔,多年以后,你会发现自己处于很可怜的位置——在公司内部或团队里声称是“专家”,然而不幸地是,你却不能在市场找到一个与之平等的工作。

这就是所谓的“专家陷阱”。在当程序员的第一天,我们就梦想着成为团队/公司的专家,然而,当这一天到来,大家却陷入了困惑。越深入到当前的代码中,陷的就越深。渐渐地,我们丧失了那种从头开始创建完整项目的能力,因为现有的代码如此稳定。更糟糕的是,如果我们的主要工作仅仅是维护现有的代码,带有一些细微的功能添加和改善,一段时间后,无论你读过或学习过多么牛逼的代码,你将会发现自己不再会写代码——甚至是刚毕业那种简单的代码。这就是程序员困境:我们通过编码谋生,但环境却正在摧毁我们这种谋生的能力。

如何跳出困境

对程序员个人来说,首先,做自己的项目;其次不要待在同一团队超过两年时间。

给团队/公司的建议,给员工压力和挑战:轮流工作,让“专家”有机会拓宽自己的技能。定期举行黑客马拉松:这将有助于创建一个拥抱创新和创造的文化氛围。

对此,各位程序员,你们又是持何种观点呢?本文作者主要描述了程序员在大公司所面临的问题,你们身处的环境如何呢?不妨和我们一起分享下吧。

  • 大小: 24.8 KB
来自: csdn
69
9
评论 共 113 条 请登录后发表评论
13 楼 QuarterLifeForJava 2013-08-20 13:21
“师夷长技以制夷”。。。。。。输的不是技术、智力而是一些公司制度、体制及氛围
12 楼 331875787 2013-08-20 12:59
环境确实是个很重要的因素,不过关键还是在于自己。
11 楼 kittychina 2013-08-20 12:59
问问普天下的中国,有几个搞技术的公司赚钱?财富榜前十位都是什么行业的?公司里面有几个搞技术的人是公司高层?这个环境还指望出技术牛人,做梦去吧
10 楼 qiaoyupeng 2013-08-20 12:53
人总是要往上走的,不同的阶段关注点不一样...

我工作两年,半年以前我还在想如何深入研究技术;但现在我更关心的是如何向上走...
9 楼 沙舟狼客 2013-08-20 12:19
看看国外。都能静下来。中国这环境让每个人都浮躁,哪有心思一直研究底层。即使研究有没有公司愿意给你掏钱。。。。。最终只能饿死。。每次都是国外以用新技术或者新框架研究出来。。。国内疯狂的。。。可到底有几个能写出来。。。一直受限与老外。。。你们tm的有意思吗。。。。。。中国的公司基本上都是解决方案提供商。。。哪有技术提供商啊。。。啥不会都是用老外。。。。不说了。。。。。越说越生气。你们这群猪。。。
8 楼 cosmo1987 2013-08-20 11:24
其实所有的工程项目都会有这样子的问题。IT软件和建筑业很类似。建筑行业已经经历几百年分工相当细致,现在的高级职业建筑设计师,你要他给你设计一个建筑,可能他可以给你一副相当漂亮的设计图,当你说要他明白从最简单的一砖一瓦去盖房子,那就为难它了。
7 楼 eric860 2013-08-20 11:06
其实就是基本功不过关,靠经验吃饭罢了。
6 楼 denger 2013-08-20 11:04
说的太对了。现实确实如此
5 楼 haojinghua 2013-08-20 10:58
看来要换工作了
4 楼 yixiandave 2013-08-20 10:43
所以偶尔自己造一下轮子是很有必要的
3 楼 thinkx 2013-08-20 10:13
说到点上了。
可能和科学界类似,过大规模的项目导致人员细分,导致领域过窄,各种创新性的东西就会削弱。
早个30多年,很多工程师都可软硬通吃,从硬件、操作系统、应用层软件都可开发,现在这种人是很少见了
2 楼 sir_jun 2013-08-20 10:04
跟我公司太像了,
1 楼 pengmj 2013-08-20 09:34
虽然没看完,但是很赞同

发表评论

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

相关推荐

  • 程序员职业生涯系列:关于技术能力的思考与总结

    重复琐碎类工作的不同做法 抽象复杂类工作的不同做法 成长的维度 技术能力层次模型 术:硬核技术能力 法:技术架构能力 道:技术领导力 如何提升技术能力 寻找成长的源动力 常态化的总结与反思 实用技巧 程序员的...

  • [转][自勉]程序员困境:底层编码能力正逐步丧失

    原文:http://www.csdn.net/article/2013-08-19/2816613-Programmer%E2%80%99s-dilemma前段时间,@developerworks在微博上向大家推荐了一篇引人深思的文章《程序员困境》,这篇文章的作者描述了在招聘内核程序员时所...

  • 底层编码能力正逐步丧失

    不同的公司环境会培养出不同的员工,程序员也不例外,由于大公司的开发框架十分成熟,稳定,而且充满盈利能力,所以开发者容易陷入拿来主义思维,而底层代码的编写能力正在逐渐退化。   前段时间,@...

  • 技术能力的思考和总结

    在程序员界有一个悖论持续在困惑着很多技术人:在写代码的人的困惑是一直写代码是不是会丧失竞争力,会不会被后面年轻的更能加班写代码的人汰换。典型代表就是工作5年左右的核心技术骨干,此时正处于编码正嗨但也...

  • 阿里技术专家:最牛逼的技术能力,是技术领导力

    来源:阿里巴巴中间件01技术人成长的悖论Aliware在程序员界有一个悖论持续在困惑着很多技术人:在写代码的人的困惑是一直写代码是不是会丧失竞争力,会不会被后面年轻的更能加班写代码的人汰换。典型代表就是工作 5 ...

  • 从程序员到项目经理

    从程序员到项目经理(一):为什么要当项目经理 “从程序员到项目经理”,这个标题让我想起了很久以前一本书的名字《从Javascript到Java》。然而,从Javascript到Java充其量只是工具的更新,而从程序员到项目经理,...

  • 从房产中介到程序员--80后张江男

    一个80后程序员、张江男的成长史

  • 程序员生存定律

    http://blog.csdn.net/leezy_2000/article/details/29407747#comments 程序员生存定律这书是陆续发的,所以做个目录让想从头读的方便些: 前言:解码程序人生

  • 谈谈技术能力

    在程序员中,围城现象非常严重,是技术人在职业发展过程中必定会面临的困境。但要回答清楚这个问题,其根源不在于是写不写代码或者代码量的多少,其本质还是要回到什么叫技术能力以及如何提升技术能力这个根节点上来...

  • 第五次作业函数第一题代码

    第五次作业函数第一题--

  • 基于深度学习的作物病害诊断内含数据集和运行环境说明.zip

    本项目旨在利用深度学习方法实现作物病害的自动诊断。作物病害是农业生产中的重要问题,及时诊断和处理对于减少产量损失至关重要。 我们采用深度学习算法,通过分析作物的图像,实现对病害的自动识别和分类。项目使用的数据集包括公开的作物病害图像数据集,如ISIC等,并进行了预处理,包括图像增强、分割和特征提取等。 在运行环境方面,我们使用Python编程语言,基于TensorFlow、PyTorch等深度学习框架进行开发。为了提高计算效率,我们还使用了GPU加速计算。此外,我们还采用了Docker容器技术,确保实验结果的可重复性。 项目完成后,将实现对作物病害的快速、准确诊断,为农业生产提供有力支持,有助于减少产量损失。同时,项目成果也可应用于其他图像识别和分类任务。

  • 机械设计CD驱动印刷设备step非常好的设计图纸100%好用.zip

    机械设计CD驱动印刷设备step非常好的设计图纸100%好用.zip

  • tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl

    python烟花代码

  • python烟花代码示例

    附件中是一个简单的烟花效果的代码示例: 在Python中,可以使用多种方式来模拟烟花效果,其中一种常用的方法是使用turtle模块,它提供了一个画布和一个小海龟,可以用来绘制各种图形。 这段代码首先导入了turtle模块和random模块,然后在屏幕上绘制了10次烟花爆炸的效果。每次爆炸都是由5个小圆组成,颜色随机选择,圆的大小也是随机的。 请注意,这段代码需要在支持turtle模块的Python环境中运行,并且需要有图形界面的支持。如果你在没有图形界面的环境中(比如某些服务器或者命令行界面),这段代码可能无法正常运行。

  • 商业化产品经理,到底如何实现产品商业化?.docx

    商业化产品经理,到底如何实现产品商业化?.docx

  • Panduit 工业以太网部件内部销售指南

    Panduit 工业以太网部件内部销售指南

  • Java版三维装箱代码示例

    在Java中,实现一个三维装箱(也称为三维背包问题)的算法通常涉及到组合优化和动态规划。这个问题是一个典型的优化问题,其中目标是在三个维度的限制下最大化价值的总和。下面是一个简单的Java代码示例,它使用动态规划来解决三维装箱问题。 请注意,这个代码只是一个简单的示例,它假设所有物品的第三个维度的大小都是1,并且没有给出如何回溯选择物品的完整逻辑。在实际应用中,三维装箱问题可能更加复杂,需要考虑所有三个维度的限制,并且可能需要更复杂的算法来解决。 此外,这个问题的解决方案可能需要根据具体问题的要求进行调整,例如物品是否可以分割、是否允许超过一个的物品等。如果你有特定的问题描述或者需要进一步的帮助,请提供更多的细节。

  • 常用品牌EPLAN部件库

    常用品牌EPLAN部件库

  • 单片机开发的教程.doc

    单片机开发的教程可以分为以下几个步骤: 1. 了解单片机基础知识:在学习单片机开发之前,需要了解单片机的相关知识,包括单片机的基本结构、指令系统、编程语言等。 2. 选择开发板:选择一款适合自己学习开发板的型号和厂商,通常需要关注开发板的性价比、开发环境是否友好等因素。 3. 学习开发环境:根据所选的开发板,学习相关的开发环境和使用方法,例如Keil、IAR等集成开发环境。 4. 掌握编程语言:单片机常用的编程语言包括C语言和汇编语言,根据实际情况选择其中一种进行学习。 5. 基础操作:熟悉单片机的引脚定义和IO口配置,了解单片机的启动代码,可以通过修改启动代码进行基本功能调试。 6. 综合实践:根据具体项目需求,进行单片机开发的综合实践。在实践中需要掌握如何编写程序、如何进行硬件调试、如何使用相关工具软件等技能。 下面是一个单片机开发的简单教程介绍: 首先,确定所使用的单片机型号和开发板类型。在这个阶段,需要查阅相关资料,了解开发板的规格书、芯片规格等基本资料。 其次,安装并配置开发环境。根据所选的开发板,安装相应的集成开发环境(IDE),并配置好开发环境。 接着,学习并掌

Global site tag (gtag.js) - Google Analytics