原文地址 https://dzone.com/articles/effort-vs-productivity-on-software-development
你肯定听说过一种说法,就是程序员都喜欢偷懒,时不时的就摸鱼,一天就两三个小时在干活。
看看工厂里面,那些在流水线上组装电视的工人。如果有人停下来几分钟不做事,这意味着什么?意味着这段时间的产量就减少了,意味着每台电视的成本增加了。
但如果软件公司的管理者也以这种方式去看待开发人员的工作,那就大错特错了。你不能把开发人员比作是流水线工人,开发人员更像是手艺人。一门手艺活要做好,不但要时间,更要经验。越是缺少经验,要把活做好就要花更多时间,反之亦然。比如雕塑,创作一个精美的雕塑需要花费巨大的精力和时间,而且世上没有两个手工雕塑是一模一样的,同样的也没有两个程序员会写出一模一样的东西出来。
所以管理人员对开发者生产力的评估,应该着眼于结果。只要开发者的产出是符合质量要求的,那么耗时一天还是一个小时不重要。当然我们也要考虑时间方面的成本,但时间管理的职责是在经理而不是开发人员身上。开发人员的职责是在安排好的时间内完成任务或解决问题,经理的职责才是评估成本,保证开发人员能“人尽其用”。
有一次我去面试项目负责人岗位,面试官问我作为项目负责人有哪些工作。我说我负责制定开发流程、组建相应的工作环境、进行适当的培训以便让大家做事情更顺手。我觉得面试官肯定充分理解了我说的内容,但是有一点他不爽,因为照我说的话,当我开头忙完之后,就会有一段时间比较闲,因为流程制定好了,工作环境也稳定了,我要做的就只有维护大家的工作流程而已。按他的话说,“等流程制定完了之后,你每天大部分时间就无所事事了。”这样他就觉得不爽,哪怕我可以让团队的开发效率比他当前的团队高四倍(他之所以招项目负责人是因为他有个项目就快要搞不定了)。
所以,你要是把努力看得比成果更重要,那就有问题了。管理者倾向于喜欢那些晚上加班、周末加班、不给儿子过生日、老妈住院都不去看望、五年以上都没休过假的人,而不喜欢按时上下班,但工作效率和产出质量都比前者高得多的人。
生产率才是关键。对于牛逼的开发人员,你要学会如何评估其真正的生产率,也就是看完成任务花了多少时间、出了多少 BUG、被 QA 打回多少次、被用户反馈问题多少次等等,而不是看每天坐在那里是忙着还是闲着。
雇佣缺乏经验的开发者才是真的高成本。他们就算拼了命地干活,生产率也不高,因为更容易出错,做出来的跟用户期望的不一致等等,这些问题带来的成本是没法靠加班来抵消的。
当然另一方面,不能说牛逼的开发人员就可以违反纪律为所欲为。关键是要把生产率而不是努力程度作为评估的原则。一个好的管理者能让牛逼的开发人员尽可能的多做事,Aaron Dignan 的《 Game Frame 》提到了一些如何这么做的策略,建议阅读。
译注:不要纠结文章最后是不是打广告,这是技术文章常有的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.