`
netcome
  • 浏览: 466086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

你是一个努力工作的程序员,还是一个懒惰的程序员?

阅读更多

当一个人在完成一件体力工作时,你很容易评估他是否在努力的工作。你可以观察他的物理动作,看他流了多少汗水。你还可以看到他工作的成功:砖墙在砌高,地面上挖的坑在变大。对努力工作的认可和褒奖是人性中非常基本的本能反应。这也正是为什么人们对体力耐力体育活动如此着迷的原因之一。这种对体力上的辛苦工作的本能的赏识,在遇到管理一群技术创造型的员工时,却成了一个麻烦问题。高效的脑力工作者通常会被看作并没有在努力的工作。

早在2004年,我还是一个初级程序员,工作在一家有线电视公司,在一个大型团队中开发财务和供销系统。跟所有的大型系统一样,这个系统由很多的相对独立的模块组成,分别由一些个人或小团队负责。其中模拟电视和数字电视的财务和供销系统几乎完全独立,分别由两个团队开发。

模拟电视开发组决定在早期的微软Biztalk平台上开发他们的系统。由这个公司的4个小伙和微软的一个团队共同开发,并负责产品环境的运行。他们看起来真的工作的十分辛苦和努力。你经常能看到他们加班到深夜或周末加班。每个人都会随时放下手中的活儿来解决正式环境中突现的问题,经常会在一张桌子前一群人围绕着一个小伙,各自说出自己的见解,讨论什么地方错了,应该如何修正。工作气氛永远是热火朝天,每个人都能看到这些——即使只是经过瞟一眼,不仅仅从整个团队讲,而是他们每个人都真的真的工作的很努力。

数字电视供销系统开发团队却是完全的不同。代码几乎是由一个家伙写的,我们就叫他大卫吧。我是一个初级程序员,在团队里做维护工作。起初我在理解他的代码时遇到了很大的麻烦。他的代码里没有很长的过程,通常我的代码会把很多操作放到一起,相反,他的代码里有大量的很小的类文件和只有几行代码的小方法。好几个同事都抱怨大卫把代码搞的过度复杂了。但大卫耐心教导我,建议我去读几本面向对象编程的书籍。他给我讲设计模式,SOLID编程原则,单元测试等知识。很快,我对他的代码开始有了理解,我越研究他的代码,越欣赏这些程序中优雅的设计。这些代码放到产品环境中非常好用,运行稳定的干着它们的工作。这些代码修改起来也相当简单,因此,一些新功能的增加变得轻松容易。单元测试保证了大部分的bug都阻挡到了正式环境之外。

这些做法产生的结果就是,我们看起来完全不是在十分努力的工作。我们5点半准时下班,周末从来没有加过班,我们从来没有发生过一大群人围绕着一个人数小时的讨论正式环境中的错误是怎么发生的场景。在外人看来,我们肯定是被分配了一件相对容易的任务。但事实上,需求都是十分相似的,我们只是更好的设计和实现了这个系统,有更好的支持系统基础架构,特别是单元测试。

管理部门宣称他们要根据员工的工作表现涨薪。当轮到老板跟我谈话时,老板说只给那些工作真的努力的员工涨工资才显的公平。而我们的团队看起来对公司发展的好坏并不太在意——跟那些放弃了自己的晚上和周末的英雄们相比。

这家公司是一个稀有的实验室,你可以将好的软件设计和坏的软件设计、好的团队特征和不好的团队特征的影响效果做一个直接的对比观察。大多数的公司里不可能提供这种比较的机会。你很难说这些挥汗如雨、工作到深夜和周末、坚持冲在灭火第一线的小伙们是为了开发一个真的非常非常复杂的系统而展示了伟大的付出,还是就是一次失败。除非你有能力提供两个团队来竞争,让他们解决同样的问题,可是哪个公司愿意做这样的事情呢。相反,如何看待那些坐在角落里,朝九晚五,看着像是整天上网读什么东西的程序员呢?是他们善于写出强健稳定的代码吗?还是分配的活儿比其他人容易?在常人的眼里,前一个团队的小伙们是在努力的工作,而第二个不是。努力工作值得赞扬,懒惰可耻,不是吗?

我敢断言,表面上看起来工作很努力通常会是一种失败的信号。在高压下,在一个不断被打搅的环境中,软件开发通常是不能干好的。长时间的工作往往不是一个好的方式。有时解决一个难题的最好的方法是停止思考,出去散散步,或更好的,去睡一个好觉,让潜意识帮你解决。我最喜欢的一本书就是20世纪英国数学界领军人物G. H. Hardy先生写的《A Mathematician’s Apology》。在这本书里,Hardy先生描述他的日常规律:上午4小时的工作,下午看板球比赛。他说一天超过四小时的高强度脑力劳动都是无意义的,也是无效率的。

对于那些管理者们,我想说的是,判断一个人要看结果,要看开发出的软件的好用与否,而不是看他们表现的是如何在努力的工作。很反直觉吧,你其实最好不要坐在这些程序员中间,这样能保证你不受传统的、本能上的评判指标的影响,这样你才能对他们的产出有更好的认识。远程工作是特别有效的一种做法,你只能通常他们的产出来评判他们,而不是省事的观察他们是否8小时都坐在办公桌前对着IDE噼里啪啦的敲着键盘或“热心的”围聚在另外一个人的桌前提供着“有效的”建议。

[英文原文:Are Your Programmers Working Hard, Or Are They Lazy? ]

9
6
分享到:
评论
9 楼 怪兽00 2013-12-25  
8 楼 sunway00 2013-12-25  
这个事情不是内行外行那么简单的。
1. 再内行的老板,也不会更不能去查看员工的源代码来评判,这个应该是部门经理要做的事情。再说看代码也不见得能评价的出来;

2. 软件的特点决定了完全不像制造业那样便于衡量。对于制造业,数量、面积、重量、大小、浓度.....都能衡量出工作量和质量,但是软件业不是那么回事的。 不同模块或业务有不同的需求复杂度,即使同样需求也有的不同理解和设计,同样的设计也可以有不同的实现思路和编码风格。用什么单位来衡量工作量呢?不管是人日、故事点数、代码行数都有着很大的弊端,那大家说对于老板用什么来评判不同团队或个人活干的多少?

3. 软件的质量也不是那么好衡量的。制造业可以用PPM或者DPPM(百万分不良)来衡量,但是软件,质量也一样是难以评价的。

至少我还是对此有困惑的,请大家指点吧。
7 楼 gufengyy 2013-12-25  
同意楼主的说法。中国的软件行业发展时间还是相对较短,因此大部分老板对软件开发的技术和成本并不十分了解,便造成了这样的现象。
6 楼 kedazhaoguowei 2013-12-25  
楼主肯定读过重构这本书。
5 楼 cry615 2013-12-24  

其实一周5天,一天8个小时。如果用最佳的状态真正把8小时利用好,三天的工作量,完全可以把5个工作日的量干完,而我们更多的是,每天的状态或者这方面,哪方面原因态度并未做好。1天的工作时间,真正干活可能也就半天多一些。
4 楼 sally19891121 2013-12-24  
问题是大多数发你工资的老板都是外行啊
3 楼 to_away 2013-12-24  
2 楼 燕踏飞马 2013-12-24  
只能说,世上没有绝对的事。
1 楼 113.com 2013-12-24  

相关推荐

    一个程序员的经典自白

    因为学校不好也就没有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了,大一开学前的假期我就开始了学习,记得我买的第一本书是《计算机基础DOS3.0》,大家别吓着了,其实当时已经普及了DOS6.22了...

    优秀程序员的人生经历

    这些文章包括普通的,有名的的程序员的经历,还有一些让人深思的程序员问题, 我把它们分成奋斗篇,中国篇,外国篇,反思篇,如果你想进入程序设计的世界,这 些文章应该能给你一些启示,也一定能给你一定的鼓励! 整理者: ...

    如何成为一名合格程序员

    做程序员是份很辛苦的工作,但是也是特有前途+钱途的工作,所谓付出才有回报,需要我们努力地付出才会有客观的回报(或许还不一定)

    《非程序员》第51期

    “除虫”是指程序员通过自己的努力来减少bug的数量(消除bug这样的字眼我们还是不要讲为好^_^),而“测试”是指程序员书写产品以外的一段代码来确保产品能有效工作。虽然TDD所编写的测试用例在一定程度上为寻找bug...

    程序员必读-《程序设计实践》

    我认为是程序员必读的一本书。 本书是Brian W. Kernighan和Rob Pike...本书值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。

    程序员离职申请书范文

    程序员离职申请书范文。类容如下 敬爱的各位领导: 自17年6月入职以来,我一直都很享受这份工作,感谢各位领导对我的信任、栽培及包容,也感谢各位同事...当然,我也自认为自己在这期间的工作中做出了自己的最大努力。

    JAVA程序员常用英语

    干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难。这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍...

    谈谈程序员以后的出路

    俗话说,365行,行行出状元,此话也适用于IT行业,尤其是程序员。当你迷茫找不到出路,又想快速成长和提高...1、努力成为你工作环境中最优秀的人(技术最好的人); 2、跳槽,去另外一家公司做比你能力要高的工作。 ...

    (优质)程序员转正答辩ppt

    目录: 1.工作回顾 2.工作体会 3.工作规划 4.个人成长 前言: ...所以我就这五个月的工作情况向各位领导作个简要汇报,最后希望各位领导能给出建议或意见,我相信这对我今后的工作和生活将大有裨益。

    程序员修养 [评价可免费]

    <br> 就为解决一个问题,我们可能连续十几甚至几十小时的坐在计算机前不停的工作。一个问题解决了,可能又有其它的问题出现。而你要是不能坚持下来,可能从前的一切努力都流失了。轻易言败的人请不要做程序员,...

    IT + 前端开发 + 面试题 + 希望每个程序员都不会失业

    我自己整理的一些前端的面试题,发出来大家看看,希望有能用到的同胞们,如果用不上,大家别嫌弃,如果能用得到,请笑纳,希望每一个程序员都能够找工作顺利,不要事业,家庭幸福和谐,父母长寿安康,知识自动进脑,...

    java程序员面试宝典

    java程序员面试宝典,内容全面,适合没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。

    程序设计实践pdf版--程序员必看书之一

    本书是Brian W. Kernighan和Rob Pike合著的最新力作。...本书值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。

    AIX安装最写实的程序员日记

    AIX安装最写实的程序员日记 AIX安装的每一个步骤,每一个命令的记录,是作者经验的结晶。相信从事AIX工作的人,都会有自己的工作记录。一定会对你有所启发的。 努力学习,天天向前。

    程序员简历模板50套各式各样风格,让你随意挑选,world文档

    简历是HR认识到你的第一个途径,HR会通过简历来辨别你的背景是否符合工作的需求,进而决定是否要给你打电话邀请你来面试。 所以简历的质量至关重要,不然你会连面试的机会都没有,更别提找到你心仪的工作了。 先...

    程序员与程序经理

    北京火龙果软件工程技术中心 工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是...

    程序员面试究竟要不要刷题-weekend_work_2:周末_工作_2

    本周你有一个选择。 您必须进行约德尔挑战。 您可以选择进行树木挑战或 batman_vs_superman 挑战。 树木会很容易,超级英雄挑战会让你更加努力。 你有工具可以做到这两点,但如果你对更难的运动感到不舒服,不要强迫...

    副件 (3) - survey_01.rar

     就为解决一个问题,我们可能连续十几甚至几十小时的坐在计算机前不停的工作。一个问题解决了,可能又有其它的问题出现。而你要是不能坚持下来,可能从前的一切努力都流失了。轻易言败的人请不要做程序员,你不可能...

    程序员面试参考资料

    上传的一些面试用的参考资料,一起努力找到一个好工作

Global site tag (gtag.js) - Google Analytics