阅读更多

69顶
9踩

非技术

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

  

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

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

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

为什么?

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

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

如何跳出困境

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

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

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

  • 大小: 24.8 KB
来自: csdn
69
9
评论 共 113 条 请登录后发表评论
33 楼 沙舟狼客 2013-08-21 10:45
成年的兔子 写道
不敢认同

软件领域分工使然

不要以为大家都是“工程师/程序员”,累砖的和画图纸的是完全不同的两类生物

一个砖都累不好,甚至没见过转的“生物”,不知道那个图纸是怎么画出来的,敢用不
32 楼 成年的兔子 2013-08-21 10:41
不敢认同

软件领域分工使然

不要以为大家都是“工程师/程序员”,累砖的和画图纸的是完全不同的两类生物
31 楼 Tyrion 2013-08-21 10:16
 
30 楼 jnoee 2013-08-21 09:20
倒退的思想,就像有些人觉得用记事本敲代码是件很高级的事情一样。
29 楼 rubskin 2013-08-21 09:09
心声啊,我所在的圈子确实也是这样,甚至包括我在内,也许是国内普遍加班严重,老一辈都 “退休”了,也许是现在大多是80末90初的一些“后起之秀”影响了,大家没时间,没有精力,更没有毅力和钻研的精神。
28 楼 zhangzhenjj 2013-08-21 08:34
顶,共鸣ing
27 楼 redhacker 2013-08-21 08:31
zoozooll 写道
他们却无法回答一些基本的问题:当调用标准的malloc函数时,内核发生了什么?


你去問google的android高級技術顧問,activity的生命周期,他們一樣答不出來.基礎的扎實,不是在於處理這些概念性的問題的,而是在於他們遇到一些問題,是其它人沒有遇到過的,處理過的.
這個問題問c語言之父,他也許也答不出來,要不可能答出來的是一些東西,連問問題的人都不懂.

有名的印度片<三傻>裏面問一個問題,給"機械"下個定義,估計又有幾多國家院士領導(一定要十年以上)能夠答出來


很同意你的观点!
26 楼 yinjh 2013-08-20 23:30
系统和开发本来就应该是分层次的,为什么一定要强调底层编码?
做web开发的人有必要去学汇编语言吗?
框架的目的就是让开发者不去关系一些东西,
把注意力集中到业务逻辑上
学框架都要精通到底层,看源码,那要框架做什么呢?
学抽象interface,不学具体实现,才是王道。
为什么要重复的发明轮子,自己写什么hash,LRU...
什么事都要底层,你怎么不学如何做CPU硬件呢。

25 楼 xiaxiaorui2003 2013-08-20 23:02
分研发和实施的团队,研发的还好点,实施的就彻底不行了
24 楼 轻指飞扬 2013-08-20 22:48
还是比较浮躁,我们研究某一项技术多数是因为工作上要用到,而不是对它感兴趣。
23 楼 oham_一1一 2013-08-20 22:17
说到点子上了,在下自己就是个例子,虽然实际工作只有两年,但呆在一个团队越是久,就越是觉得自己深陷其中的框架。。。说是程序员,但做来做去都是改改业务代码而已,几乎没有涉及什么底层的东西,说白了只是在用现成的一套工具去搭建业务模块,感觉跟“程序”这个概念不太搭边。
当然,公司有公司自己的考量,最终目的是取得最大盈利,而这跟程序员本身的技术发展这事在下感觉是两回事。
嘛,有个观点在下比较认同,国内环境不太适宜搞技术,都想着赚钱了,根本不会给研究技术的太多资源,这不单只限与行业环境,连教育也如此,想想我们大学里都学些什么了,再看看外国的公开课程。。。基本素养很重要。
22 楼 wxyzyu 2013-08-20 20:19
“工作仅仅是维护现有的代码,带有一些细微的功能添加和改善”< 对日外包+维护
21 楼 lvwenwen 2013-08-20 20:09
虽然没看完,但是很赞同
20 楼 gaoyanbest 2013-08-20 18:53
思想出发很好,但是偏离了正规。 公司之所以出现成熟的框架,是因为公司要考虑很多,例如:成本控制,进度控制,质量控制等等问题,成熟的框架是由时间积累出来的,是由更高级的工程师、架构是建设搭建的,能把程序员从底层的工作摆脱出来做更多的,能够解决客户需求的事情,这是必然的,也是发展的趋势。

上文最后的跳出困境的方法最为失败,怎么可能要随便跳槽呢?我觉得现在年轻人要脚踏实地,在企业多多学习如何做人做事。中国的信用体系不完整,国外更不能随便的跳槽了。

如何成为精良的程序员?如果一个真的具有思想的程序员,希望在编码架构方面发展,是需要一个过程的,要从自身的修养开始做起,而不是要求所在企业或者环境因素。有志者事竟成,提升自己的方法很多,可以在工作之余,做好自己的知识补充与技术实践,拓宽思路,多参与国内外论坛,活跃在相关领域,提升自己对专业技能的知识,不断学习才能进步;不要一味的埋怨社会,埋怨体制,如果你改变不了,那就学会在逆境中求生存,生存一段时间,就是精英。

而企业,营造的是一个专业的企业环境,企业文化,这包含太多了。

凡是要中道,不能乱批评,要有自己的思想,不要乱跟风。
19 楼 skytianye 2013-08-20 17:49
同感啊!现在就在公司里,干了3年,发现了自己很多东西都不会写了
18 楼 zhxh007 2013-08-20 17:20
17 楼 maleo 2013-08-20 17:17
cosmo1987 写道
其实所有的工程项目都会有这样子的问题。IT软件和建筑业很类似。建筑行业已经经历几百年分工相当细致,现在的高级职业建筑设计师,你要他给你设计一个建筑,可能他可以给你一副相当漂亮的设计图,当你说要他明白从最简单的一砖一瓦去盖房子,那就为难它了。


国内的体制问题,生存都成问题了,所以Quick Money is King!! 靠技术赚钱,没有若干年的积累是做不起来的,问题是在这若干年里面,能有多少公司能靠静下心来钻研技术生存呢? 所以国内没有VMware,没有Redhat, 没有mozilla
16 楼 wb1991wb 2013-08-20 16:51
跳出框架!自己我养成!
15 楼 as283594218 2013-08-20 16:09
很多领域发展都是这样啊,现在这一块的东西这么多了,你怎么面面俱到。
现在你还需要懂汇编才能编程吗,你需要知道做打孔纸带吗。
亚马逊用jQuery做出了快速响应菜单,你研究再多jQuery底层代码,甚至原生js,你不会利用不会使用它去创造自己东西,实现自己的想法有什么用。
14 楼 zoozooll 2013-08-20 13:58
他们却无法回答一些基本的问题:当调用标准的malloc函数时,内核发生了什么?


你去問google的android高級技術顧問,activity的生命周期,他們一樣答不出來.基礎的扎實,不是在於處理這些概念性的問題的,而是在於他們遇到一些問題,是其它人沒有遇到過的,處理過的.
這個問題問c語言之父,他也許也答不出來,要不可能答出來的是一些東西,連問問題的人都不懂.

有名的印度片<三傻>裏面問一個問題,給"機械"下個定義,估計又有幾多國家院士領導(一定要十年以上)能夠答出來

发表评论

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

相关推荐

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

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

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

    原文: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 程序员生存定律这书是陆续发的,所以做个目录让想从头读的方便些: 前言:解码程序人生

  • 谈谈技术能力

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

  • texmacs-fedora-fonts-2.1-1.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统texmacs-fedora-fonts-2.1-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf texmacs-fedora-fonts-2.1-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

  • 基于Matlab/Simulink的直流电动机双闭环调速系统建模与仿真

    内容概要:本文详细介绍了如何使用Matlab/Simulink对直流电动机双闭环调速系统进行建模与仿真。文中首先解释了双闭环调速系统的原理,即通过转速外环和电流内环的协同工作,使电机快速达到并维持稳定的运行状态。接着,逐步指导读者在Simulink中搭建模型,包括设置信号源、配置PI控制器参数、选择电机模块以及连接各个组件。此外,还提供了具体的参数设置示例和优化技巧,如调整PI控制器的比例系数和积分系数,确保系统的快速响应和平稳过渡。最后,通过对仿真结果的分析,展示了双闭环调速系统的优势及其在实际应用中的价值。 适合人群:从事电力电子实验的研究人员和技术爱好者,尤其是那些希望深入了解直流电动机控制系统原理的人。 使用场景及目标:适用于需要精确控制直流电动机转速的应用场合,如工业自动化设备、机器人等领域。通过学习本文,读者可以掌握使用Matlab/Simulink进行系统建模和仿真的方法,提高对复杂控制系统的理解和应用能力。 其他说明:文中提到的一些参数设置和优化技巧来源于实践经验,对于初学者来说可能需要多次尝试才能找到最适合自己的解决方案。同时,在撰写相关实验报告时,可以根据提供的建议整理和展示仿真数据,以便更好地表达研究成果。

  • 电气设备状态监测:温度监测与分析.zip

    电子仿真教程,从基础到精通,每个压缩包15篇教程,每篇教程5000字以上。

  • 电路仿真:电路基础理论.zip

    电子仿真教程,从基础到精通,每个压缩包15篇教程,每篇教程5000字以上。

  • 【Linux网络与Proxmox虚拟化】核心网络组件及虚拟化模型习题解析:掌握桥接、VLAN、Bonding与SDN配置技巧Linux网络基础

    内容概要:本文档详细介绍了Proxmox网络组件(vmbr、SDN)、Linux网络基础(桥接、VLAN、Bonding)以及虚拟化网络模型的核心概念,并通过一系列课后习题及其答案帮助读者巩固所学知识。第一部分讲解了Linux网桥与物理交换机的异同、桥接设备的配置方法、VLAN的相关概念及配置步骤;第二部分探讨了Proxmox中vmbr0的作用和创建新桥接接口的方法,以及SDN的核心组件和多租户场景下的优势;第三部分对比了桥接模型与NAT模型的适用场景及局限性,并提供了虚拟机无法访问互联网的排查步骤;第四部分通过故障案例分析和设计题,进一步加深对网络隔离和SDN网络设计的理解。 适合人群:具有Linux和网络基础知识的IT技术人员,特别是从事虚拟化、网络管理和云计算领域的工程师。 使用场景及目标:① 掌握Linux网络基础,包括桥接、VLAN、Bonding的配置与原理;② 理解Proxmox网络组件的功能及配置方法;③ 学习虚拟化网络模型的不同应用场景及优缺点;④ 提升网络故障排查能力和复杂网络的设计能力。 阅读建议:此文档不仅提供了理论知识,还结合了大量实际操作题目,建议读者在学习过程中动手实践,通过配置真实环境来加深理解。同时,对于关键知识点,可以查阅相关资料进行补充学习。

  • 立式插秧机sw16可编辑_三维3D设计图纸_包括零件图_机械3D图可修改打包下载_三维3D设计图纸_包括零件图_机械3D图可修改打包下载.zip

    立式插秧机sw16可编辑_三维3D设计图纸_包括零件图_机械3D图可修改打包下载_三维3D设计图纸_包括零件图_机械3D图可修改打包下载.zip

  • 机器人路径规划中A*与JPS+结合DWA算法的改进及多机器人场景应用

    内容概要:本文深入探讨了A*算法和跳点搜索算法(JPS+)在机器人路径规划领域的应用及其与动态窗口算法(DWA)相结合的改进。首先介绍了A*算法的基本原理和实现方式,然后详细解释了JPS+算法如何通过跳点搜索提高效率。接着讨论了这两种算法与DWA结合的具体方法,特别是在多机器人场景下的路径冲突避免和动态避障策略。文中还展示了多种改进措施的效果,如通过八叉树预处理地图、引入朝向变化惩罚以及采用异步优先级协商机制等。最后比较了单机器人和多机器人场景下的性能差异,强调了算法选择的重要性。 适合人群:从事机器人技术研发的专业人士,尤其是关注路径规划算法的研究人员和技术开发者。 使用场景及目标:适用于希望深入了解并优化机器人路径规划系统的团队和个人。目标是在单机器人和多机器人场景中提升路径规划的效率和灵活性,确保机器人能够在复杂的环境中稳定运行。 其他说明:文章不仅提供了理论分析,还包括了大量的代码片段和实际案例,有助于读者更好地理解和应用这些先进的路径规划技术。

  • 异步电机转差频率控制矢量仿真实验模型解析及应用

    内容概要:本文深入探讨了转差频率控制的异步电机矢量控制系统仿真模型。首先介绍了转差频率控制的基本原理,即通过控制转差频率间接调控电机转矩。接着阐述了矢量控制的思想,即将定子电流分解为励磁和转矩两个独立控制的分量。随后展示了仿真模型的具体实现,包括电机参数设定、状态空间模型构建、PI控制器参数配置以及关键模块如转差频率计算、坐标变换、磁链观测等的代码示例。最后强调了配套的50页说明文档对于理解和调试模型的重要价值。 适用人群:适用于电气工程专业学生、电机控制领域的研究人员和技术人员。 使用场景及目标:帮助读者掌握异步电机矢量控制的技术细节,提高对复杂控制系统的设计能力,同时提供实践指导,便于进行相关实验和项目开发。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为实例,有助于加深理解并应用于实际工作中。此外,还分享了一些调试技巧和注意事项,如坐标变换系数选择、积分抗饱和处理等。

  • Simulink黑鹰直升机非线性动力学模型解析及其MATLAB源码实现

    内容概要:本文详细介绍了基于Simulink平台构建的黑鹰单旋翼直升机非线性动力学模型。该模型涵盖了主旋翼挥舞角动力学、尾桨控制、机身气动力等多个关键模块,并提供了完整的MATLAB源码。文章深入剖析了各个模块的工作原理,如挥舞角计算、气动耦合补偿、侧向力计算等,并分享了多个实用的仿真技巧和常见问题解决方案。此外,文中还提到了一些优化建议,如调整时间常数、改进积分方法以及处理代数环错误等。 适合人群:从事直升机仿真研究的技术人员、航空航天领域的研究人员、高校相关专业的师生。 使用场景及目标:帮助读者理解和掌握直升机非线性动力学建模的方法和技术,提高仿真的精度和效率。适用于教学、科研项目以及工业应用中的直升机性能评估和控制系统设计。 其他说明:附带的文献资料进一步补充了模型背后的理论依据,特别是关于旋翼失速特性和地面效应的研究成果。对于希望深入了解直升机空气动力学特性的读者来说,这些资料非常有价值。

  • python 基础:个人自用输入输出

    python 基础:个人自用输入输出

Global site tag (gtag.js) - Google Analytics