【转载】 中国软件开发工程师之痛

本文转载自http://blog.csdn.net/hzliyun/article/details/9417085

在近期的一次会议上,有高层谈到之前在中国觉得自己做得很牛,但与美国同行接触后却发现与人家存在很大的差距,这一点我在外企工作时也有过同样的体会。真正与外国同行接触后才会知道什么是差距,在这篇文章中我从软件开发工程师的角度以“痛点”的形式来谈一谈我所认为的差距。

技能之痛

相当数量的软件开发工程师(后面简称为工程师)认为除了与编码相关的内容外,其他技能都不重要。在这种意识的引导下,很容易出现的一个普遍现象是技术能力不错,但开发能力却不行。这种现象的另一种表现是:单干可以,合作不行。

技术能力是指个体对某些技术知识掌握的深度和广度,而开发能力除了包含技术能力外,还涵盖个体在项目运作过程中所需掌握的其他能力。

高效的团队一定离不开通过知识管理将个体所掌握的知识通过分享而沉淀下来。分享途径无外乎通过一定形式的文字和(或)图,这就要求工程师掌握使用象Word、PowerPoint、Excel、Visio(和UML)这类工具的基本能力,并具备良好的写作与表达能力。表面看来这种能力与编码能力无关,因而也得不到工程师的普遍重视,也因此成了一个痛点。其实,写作与表达能力与编程水平息息相关,因为它们都在考验我们的逻辑思维和概念能力。忽视掌握必要工具软件的工程师难道以为编程语言是知识分享的万能工具?

个体具备良好的沟通能力是项目顺利运作的基石。不良沟通表现为:工程师在团队合作中更多采用被动询问而非主动汇报、不会辩论、对于他人指出的错误表现得“自尊”和狡辩而非感谢或承认、对于被邀请的各类审查活动(如设计审查、代码审查、文档审查)不是积极响应而需别人催促。在团队中,如果技术管理者不能很好地引导,个体沟通能力的缺乏很容易在团队中引发“一言堂”或“无政府主义”问题,工作效率低下则是必然。

专业精神之痛

不少工程师对于自己的职业缺乏精神上的追求,工作起来不求专业,只求“代码能工作就行”。这类工程师容易将经验与资历等同,以为工作年份越长就越有经验,实则不然。工作年份越长资历是越老,但如果专业水准没有在过程中不断提高的话,所获得的经验很可能趋零。

什么是专业?专业是指我们应以业内所广泛达成的共识去从事软件开发活动。这里的“业内”并非只指“国内的”,而是指“国际的”;“专业”也并非单指技术内容(比如,编程语言、算法等),还包含软件项目运作中的其他各个方面(比如,开发方法、建模工具、流程、质量保证手段等)。要做到专业做事一定离不开不断地学习,只有这样才能了解行业的动向。

软件行业虽然没有“银弹”,但仍存在不少有效改善开发质量与效率的方法。只有抱着专业做事的态度去工作,我们才有可能去实践这些方法,并在实践过程中思考这些方法的内涵与不足,进而为自己的工作量体裁衣。千万不要认为“反正业内没有银弹,我要去学那么多方法干什么?”

强调专业做事的根本目的,是使我们的做事方法更科学。与我所了解的美国、俄罗斯这些国家的工程师相比,我国工程师的专业化还有很长的路要走。

速度之痛

除非你完全认可中国近些年以GDP为导向的经济发展策略,否则很可能得反思一下软件行业所鼓吹的“唯快不破”策略,尤其是互联网领域。

在商业环境中,“快”能获得很多竞争优势,这毋庸置疑。工程师的价值虽得(最终)体现在商业产品上,但千万不要忘记了我们始终是一名工程师,在实现商业价值的道路上不断提高自己的专业水准无论如何都不应被忘记。工程师始终要明白,公司的发展与自身的职业发展并非完全统一。如果在公司的发展过程中我们的专业水准并没有“水涨船高”,那除了说明我们在吃老本外,还表明我们很可能是在“拖后腿”。在这种情形下,即使公司蒸蒸日上地给我们发薪水,但从个体职业发展的角度说来,公司发展其实与我们“一毛钱关系都没有”。我想不致于有人认为自己以后只会在这一家公司干吧!如果真是那样想,你能保公司几十年存在?届时万一得无奈地离开公司,单薄的专业水准又如何在人才市场与他人竞争?

对“唯快不破”的误解所带来的不良后果是,有些工程师为了快速实现软件功能而忽略了专业精神。他们一味地为了速度而筑下高额的“技术债”,甚至在“速度”的幌子下过得心安理得。

如果将“唯快不破”改为“唯效率与质量不破”或许更不容易形成误解。一说到“快”,给人的感觉往往是投入更多的时间就能达成目的,容易让人忽视做事的方法与效率。与之不同的是,强调效率需要我们考量投入时间的产出比,且暗示做事的方法只有对路才能获得效率;强调质量则提醒我们尽量别做“豆腐渣”之事,而这隐含的内容是我们必须专业做事,即使欠下了“技术债”它也时刻提醒着我们那是一定要还的。

软件行业的长期被动加班成为了速度之痛的一个缩影,它让不少工程师过着有工作没生活的日子。软件行业要避免偶尔、短期的加班是不可能的,但长期的被动加班绝对是个问题。不重视效率与质量的“勤劳”除了是在浪费外,更是一种透支将来的短视行为。

视野之痛

视野之痛体现在工程师在从事技术工作时,忽视了解国外的发展状况。他们因为不知道同质开源项目的存在而走上“重新发明轮子”的道路,甚至发明出“三角形的轮子”;也因为对英文资料缺乏阅读的耐心而不去了解相关国际标准、订阅开源项目的mailing list和专业网站的newsletters等。

狭窄的视野很容易让人自满,以为软件开发就是那么简单,最后导致成长慢、意识与技能“不入流”。

以我的经验来看,工程师如果不能很好地阅读英文资料则要达到高技术水平实在很难,视野狭窄也恐成必然。另外,编程活动中的命名环节其实对我们的英语水准提出了一定的要求,不然很容易动名词不分而写出只有自己容易读懂的程序,或常出现命名时找不到合适的单词去精确表达程序意图。

持续发展之痛

以上各痛点的最终结果又给我们带来了持续发展之痛。其表现为:少有人会在项目中通过文档提升开发效率;鲜有人会持续改善软件的设计质量;大部分人只关注短期完成工作,而忽视短期行为所带来的高额隐性成本。

持续发展之痛使得工程师很难轻装上阵,工作精力过多花费在重复、低级的琐事上,而非用于学习和思考。最终结果是将工作变成了“青春饭”,辛苦但却看不到美好的未来。

所有痛点可以归结为意识的陈旧,或虽有意识却无力于将其转变为能力!(注:意识是一种行为,而非能力)

当然,这些“痛”与我国的社会大环境有着紧密的联系。但无论是怎样的环境,总有人做得出色,或许他们身上有我们所没有的内容。是什么?只有自己去想、去悟,成长之痛! 即使大环境好了、大家都很“专业”,职场的“金字塔”总是摆在那的。谁能向上走?走多远?全靠个人,没有shortcut!只不过每个人都平等地拥有向上走的机会与权力!

时间: 2024-10-31 12:08:02

【转载】 中国软件开发工程师之痛的相关文章

中国软件开发project师之痛

用C#实现文件夹拷贝 C#中没有拷贝整个文件夹的方法,最近需要用到,就写了一个Demo,拿出来跟大家分享一下 主要思想: 1.写一个拷贝文件夹的函数CopyFolder,传入源文件夹路径和目的文件夹路径 2.判断目的文件夹路径是否存在,如果不存在,创建此文件夹 3.获取源文件夹下的所有文件,拷贝这些文件到目的文件夹 4.获取源文件夹下的所有文件夹,循环调用CopyFolder(此处利用了递归) 代码: using System; using System.IO; namespace Folder

Web前端开发工程师养成计划【转载】

Web前端开发工程师养成计划(入门篇) 最原始的忠告:这个世界上有想法的人很多,但是有想法又能实现它的人太少! 首先要感谢伟大的Web2.0概念.产品概念.用户体验概念.jQuery插件,是它们在中国日渐成熟才解放了一直以来姥姥不疼舅舅不爱的前端开发工程师们. 有没有发现从09年下半年到现在全中国的互联网公司都在招聘前端开发工程师?如果你注意到了,那么恭喜你,你已经拥有那么一点点预测互联网职场动向的能力. 可能令你感到遗憾的是你从没从事过前端开发工作,不过没关系,只要你肯努力,一切都是可以学会的

对测试开发工程师的理解

随着测试在软件开发周期中越来越受到重视,国内测试的缺口一直比较大,各种软件和互联网公司都大肆招收测试工程师,有些走在前面的公司甚至从今年开始取消了测试工程师职位,全部变成了测试开发职位,比如百度.一方面测试开发表明了对工程师有更高的要求,需要在具有测试能力的基础上兼备开发能力:另一方面自动化测试成为趋势,利用开发的技巧解决测试中的问题以提高测试效率,降低QA与RD的人力比. 1.技术含量 面试过许多的应届毕业生,问及为什么选择测试开发这个职位时,经常听到以下的回答: “我觉得自己开发能力比较弱,

六个前端开发工程师必备的Web设计模式/模块资源(转)

[导读] Yahoo的设计模式库Yahoo的设计模式库包含了很多可以帮助开发设计人员解决遇到的问题的资源,包括开发中常常需要处理的导航,互动效果及其布局网格等大家常用的组件和模块响应式设计模式库这个响应式的设计模式库 Yahoo的设计模式库 Yahoo的设计模式库包含了很多可以帮助开发设计人员解决遇到的问题的资源,包括开发中常常需要处理的导航,互动效果及其布局网格等大家常用的组件和模块 响应式设计模式库 这个响应式的设计模式库包含了在响应式开发过程中常常需要处理的相关组件,例如,导航,图片,布局

Android开发工程师的不同层次

从事Android开发这个职业,若想仅仅通过不断地为技术充电就能在未来的职场上有不错的前景,那则是不正确的.区别不同层次开发工程师的东西,就是感性思维.只靠理性思维的技术,你只是打工者:若还具备感性思维(比如对用户的了解)你便是领导者. <?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"> ?xml:namespace> 好技术是Android开发者共有的,

Java软件开发工程师市场需求大不大

Java编程语言是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异.多线程的动态语言.为什么Java开发工程师的待遇一直那么高呢? Java行业市场需求存在巨大的缺口 这几年中国在移动互联网这块发展非常迅猛,各种创业公司.小团队如雨后春笋般冒出来,对Java开发的需要变大.但存在人才发展跟不上市场的需求的现状,相对应的给优秀Java人才开出的薪资待遇随之水涨船高,为此很多大学生看中了这一前景,纷纷加入了动力节点Java培训机构,接受专业的培训,与企业零距离对

2015,C/C++开发工程师生存现状调查

C/C++作为一门成熟的重量级的语言,一直吸引众多的编程学习者.C/C++强大灵活的语言机制.深邃的内涵.广博丰富的外延使它成为一个时代的经典语言.从市面上编程书籍中C/C++的书所占的比例即可见一斑,其中体现出的编程思想的美感使深入学习过它的人叹为观止!假如在这个时代你错过了C/C++,必将会在你的IT职业生涯中,留下不可忽视的缺憾. 历经40年兴衰替代,今天C语言在编程界仍是霸主 C/C++语言发展至今已经有近40年历史,由于C/C++语言的稳定性及跨平台性,使得C/C++是在国内乃至全世界

[web建站] 极客WEB大前端专家级开发工程师培训视频教程

极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5与HTML4的区别2.HTML5新增的主体结构元素3.HTML5新增的的非主体结构元素 4.HTML5表单新增元素与属性5.HTML5表单新增元素与属性(续)6.HTML5改良的input元素的种类 7.HTML5增强的页面元素8.HTML5编辑API之Range对象(一)9.HTML5编辑API之

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti