程序员的工作不能用“生产效率”这个词来衡量

标签: 心得体会 工作效率 生产效率 | 发表时间:2013-07-23 00:41 | 作者:Aqee
出处:http://www.aqee.net
employee-productivity

通过反复的交谈, Bill Caputo最终说服了我,让我相信了一些不可思议的事情。这些事情改变了我整个看问题的方式,也让我重新思考如何更好的工作。

软件开发中没有“生产效率”。

几乎正如10年前 Martin Fowler 发现的,用生产效率来衡量软件开发工作没有任何意义。原因就在于,它们不属于同一范畴。换句话说,生产效率不具有作为衡量软件开发工作的适用性。“今天创造了多少代码/软件?”这是一个没有意义的问题。即使可以这样测量,软件开发工作上的生产效率也不能以任何有意义的方式估计出它的商业价值。

这是因为,软件开发这种工作并不一定非要 生产出什么东西。让我来举个例子:比如说,碰巧有两个程序员分别在开发两个完全一样的项目,他们在同一天被分配了相同的任务。第一个人,弗兰克,回到电脑前,写出了一个有1000行代码的框架,完美的解决了问题。代码规范书写,全面测试,有详细的文档描述部署和操作的流程。第二个程序员,皮特,转身去了公园,在哪里,他一边喂鸽子一边思考问题。大概在下午4:45分,皮特溜达回办公室,删掉了200行代码,并部署了他的修改…问题就这样解决了。

这两个程序员,今天的“生产效率”谁的更高?答案是:这无关紧要。紧要的是,皮特解决了问题,同时为团队消减了长期维护的成本。弗兰克同时也解决了问题,但他因为 生产了代码,提高了维护成本,所以,(在其它方面完全等效的情况下)他的方案差一些。而把皮特称作更有“生产效率”,则完全从实效性上扭曲了这个比喻。

我认为,优秀的程序员,他所做的事情应该是 去除问题。而相对的则是生产出什么。所以,技术上的生产产物,例代码,文档,数据等,对于实现“去除问题”的目标来说,都是必要但有害的。这就是为什么有时候,这最有效的解决方案是5分钟的交流沟通。

对这种思考模式最有力的支持:当你用这种思维去看待软件开发后,很多棘手的、能看得到但无法测量的问题突然间变得很容易理解。例如,为什么当程序员和他们的客户隔离开时会显得缺乏效率。难道让他们避免打搅不会提高工作效率吗?答案是不会,按常理这会使他们更有效率…但也会造成他们更没效率。因为他们的工作是为客户解决问题,与客户的隔绝导致他们无法找到问题,确定问题。相反,跟有问题的人保持沟通能更有效的解决问题,甚至有时候你一天8小时手指根本不需要碰键盘。

这将我们引向了另外一个问题:为什么软件开发中维护成本相比起其它方面的成本显得很难接受?为什么我们永远无法在第一次做出“正确”的东西?一种解释就是,软件是一个对可能变化的问题的 固定解决方案。当问题发生变化时(或我们对它的理解发生变化时),问题和解决方案之间就出现了裂痕。这种随着问题的演变而不停的修补产生的缝隙的活动代价高昂。这也解释了为什么相对于其它软件项目,视频游戏通常的维护成本较低。这是因为它们需要解决的问题(让人们去买这个游戏,玩这个游戏)基本上是根据人类心理学,而这是不常变化的。

好的程序员和坏的程序员之间10倍之差的“生产效率”又是从何说起?每个人都说这是事实,但事实上没有人能直接的测评。我们的理论同样能解释这个问题。相比起工作效率来说,“解决问题”是一种更容易“调控”(金融词汇)的东西,使得产生一个数量级差别的效果很容易实现。解决问题需要的是信息和洞察力。你要么有,要么没有。不需要原材料,没有生产能力限制。并不是差的程序员打字速度慢。并不是如果他们努力就能做得更好。他们是缺乏这种高效解决问题的眼界和必要的信息。也许无法测量好程序员和差程序员在生产效率上的差别的原因就在于 没有东西可测量

还有很多现象都可以用这个理论来解释。如果你去找,一定能发现一些。最近我一直在搜罗这方面的案例….试一试,看看这个理论是否也体现在你的工作中。每当发现自己在说提高“生产效率/工作效率”时,问问自己是否是在用正确的方式解决问题。铭记在心:如果不通过 生产任何东西就能解决问题,那 生产出的任何东西都是一种浪费。

:)


本文由 外刊IT评论网( www.aqee.net)原创发表,文章地址: 程序员的工作不能用“生产效率”这个词来衡量,[英文原文: There's No Such Thing As Software Productivity ]







相关 [程序员 工作 生产] 推荐:

程序员的工作不能用“生产效率”这个词来衡量

- - 外刊IT评论
通过反复的交谈, Bill Caputo最终说服了我,让我相信了一些不可思议的事情. 这些事情改变了我整个看问题的方式,也让我重新思考如何更好的工作. 几乎正如10年前 Martin Fowler 发现的,用生产效率来衡量软件开发工作没有任何意义. 原因就在于,它们不属于同一范畴. 换句话说,生产效率不具有作为衡量软件开发工作的适用性.

为什么美国程序员工作比中国程序员工作轻松、加班少?

- -
美国程序员工作比中国程序员工作轻松、加班少总体来说是事实,但都归结到美国程序员效率更高,制度更好之类就过于片面了. 我觉得主要原因在于别的一些地方,例如加班的边际效用,程序员的生活习惯. 背景:我在 baidu(北京)和 amazon(湾区)都干过,微软研究院(北京)和 google 研究院(湾区)也实习过,因为目前做云计算和开源,所以也接触过很多公司.

程序员的工作环境与效率

- - 博客园_新闻
很赞同《Joel on Software》中 Bionic Office 一文所说,办公环境需要比大部分员工的家中环境更舒适. 否则老板只能招聘哪些还住在简陋公寓的员工,他们才有可能下班后情愿留在办公室继续工作. 我认为程序员的办公环境的几个条件. 程序员的办公桌最好可以并排坐下 2 人,以便 pair programming 或者 code review.

Java程序员在Google是如何工作的

- - ImportNew
在 Quora看到一个有意思的问题, Working at Google: What is it like to be a Java programmer at Google?,笔者对原文做了简单的编译,虽不能至,心向往之. 严格遵守“Google Style”,这份“Google Style”会有详细的文档清楚地告诉你如何编码(一开始你会觉得很痛苦,但是以后你会享受它带来的好处).

你的程序员是在努力工作还是在偷懒?

- - CSDN博客研发管理推荐文章
本文来源于我在InfoQ中文站原创的文章,原文地址是:. Mike Hadlow是一位资深软件开发者,同时也是EasyNetQ与Suteki Shop的作者,喜爱历史与科技,是一个技术极客. 近日,Mike就程序员工作效率、工作表现以及工作成果等主题撰写了一篇 博客,谈到了我们该如何看待程序员到底是在努力工作还是在偷懒这个问题.

程序员高效率工作工具推荐(必备工具)

- - CSDN博客研发管理推荐文章
一、 Xshell Xftp. 免费软件 Xshell 和 Xftp 都是 NetSarang 出品的优秀网络管理、安全传输工具. Xshell 是一个免费的安全终端仿真器,可以作为 SSH、TELNET 或 RLOGIN 的终端模拟,能够从 Windows 平台安全连接 Linux 服务器,Xftp 则是安全传输客户端,支持 FTP 和 SFTP 协议,两者都支持标签化的会话窗口.

为什么说 AI 无法取代程序员的工作

- -
很多人至今都想不明白为什么我说 AI 无法取代程序员的工作. 他们天真地以为,如果有了超级先进的 AI,那么你只要告诉它”需要什么“,它就能给你做出来. 然而问题就在于——你怎么告诉它“需要什么”. “编程”的实质就是告诉电脑“需要什么”. 要想让 AI 实现人需要的功能,人必须先告诉它“需要什么”.

【高效程序员系列】2、别做机器人——让工作自动化

- etalkr - 博客园-首页原创精华区
每天打开电脑,首先要做的是打开最常用的软件:要和朋友联系,你打开了QQ;要收邮件,你打开了Outlook;要听音乐,你打开了酷狗……但是你不想做机器人,每天重复的打开这些软件,于是你让它们开机启动. 恭喜,你有不做机器人的基本思想. 这些简单重复的操作扔给电脑吧,你需要把宝贵的精力用来做其他更有价值的事.

程序员如何成功的假装在很努力的工作

- - 外刊IT评论
i 这篇文章要讲的是程序员如何假装在很努力的工作. 有两种完全不同的动机会促使一个程序员做这种假装:. 第一种,你是个懒货——想不劳而获. 如果你是这种人,我和你同事都会鄙视你. 图1:适当的带一个眼镜,你可以在会议中闭上眼. 第二种,你有太多的事情要做,而你需要抽出时间去思考和学习. 大多数的公司里,经理们或负责人资管理的人都忽略了程序员是脑力工作者、不是做苦力的.

美国一位“天才程序员”将工作外包给中国

- - 创业家杂志社
一家美国重要的基础设施建筑公司发现他们的一位明星程序员居然是把自己的工作外包给了一家中国沈阳的软件公司. 他做了甩手掌柜以后,悠闲地在工作时间冲浪网购,还被公司认为是最高效的程序员之一,是C, C++、Perl、Java、Ruby, PHP和Python方面的专家. 这家公司使用电信运营商Verizon提供的虚拟专用网络,这样员工就可以在家里工作.