HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

  • 2013-12-22
  • 本文字数:2160 字

    阅读完需:约 7 分钟

Mike Hadlow 是一位资深软件开发者,同时也是 EasyNetQ 与 Suteki Shop 的作者,喜爱历史与科技,是一个技术极客。近日,Mike 就程序员工作效率、工作表现以及工作成果等主题撰写了一篇博客,谈到了我们该如何看待程序员到底是在努力工作还是在偷懒这个问题。

如果人们从事的是体力劳动,那么我们就很容易能够看出他们工作的努力程度。你会直观、清楚地看到他们频繁移动的步伐,流下的汗珠。还会看到他们工作的成果:逐渐升起的砖墙,地上的洞变得越来越深,等等。观察到并奖励努力工作的人是人类的一种很基本的天性,这也是我们觉得忍耐力运动令人着迷的原因之一。不过对于管理技术创造性的员工来说,这种对努力的体力劳动天然的欣赏之情就会出现问题。高效的知识工作者常常看起来并不是那么努力工作。

回到2004 年,那时我还是一名初级开发者,工作在一个大型团队中,主要从事有线电视公司的账单与供应系统。就像所有的大型系统一样,这个系统由大量相对比较独立的组件构成,不同的小组负责不同的组件开发工作。模拟电视与数字电视供应系统几乎是完全分开的,由两个不同的小组分别进行开发。

模拟电视团队决定根据Microsoft Biztalk 的一个早期版本来构建他们的系统。团队有4 个人以及一个来自于微软的团队共同开发并运行这个系统。他们看起来工作非常努力,常常工作到深夜,周末也在加班加点。当遇到生产问题时,团队的每个人都会放下手头的工作,围拢在一起,提供各种建议和意见,以及如何修复问题的见解。你会看到,这个团队中的每个人都有很强的团队凝聚力,而且他们工作都非常努力。

数字电视供应系统则大相径庭。系统的代码几乎是由一个家伙搞定的,我们暂且称这个家伙为Dave 吧。我是团队的一名初级维护工程师。一开始,我在理解代码时遇到了很多麻烦。程序中并没有长长的过程语句,相反有大量的小体积类和方法,每个方法的代码也只有寥寥数行而已。我有几个同事抱怨Dave 将事情搞得过于复杂了。不过Dave 却建议我应该阅读几本关于面向对象编程的图书。他教会了我设计模式、SOLID 原则以及单元测试等知识。很快,他所编写的代码开始变得具有现实意义了,随着我不断加深对代码的理解,我也越来越发现它优雅的设计。代码在产品中没有出现问题,只是一直在默默地工作。要想对代码做出修改也是轻而易举的事情,因此实现新的特性简直是手到擒来。单元测试意味着进入到生产系统中的Bug 数量变得微乎其微。

结果就是我们这个团队看起来工作不那么努力。我每天下午5:30 下班,周末也从来不用工作,我们也不必围聚在一起猜测到底是什么原因导致了生产系统的问题。从外人的角度来看,我们所从事的工作肯定要比模拟电视团队的简单得多。事实上,二者的需求非常相像,只是我们开发出了设计更好的软件、提供了更好的支持基础设施,特别是单元测试。

管理团队宣布要根据绩效给予员工奖励。轮到老板与我谈话时,他说公平的做法是对那些努力工作的员工给予奖励,工作越努力,奖励力度越大,我们的团队看起来对公司并不那么在意,更无法与那些放弃晚间与周末时间的英雄相提并论。

这家有线电视公司有一点与众不同,你可以直接比较好的软件设计与差的软件设计之间的差别,还可以对团队行为进行比较。大多数组织者都并没有提供这一比较。我们很难说某个员工是不是通宵达旦地工作,甚至周末时间也在工作,频繁充当救火队员的角色,这种做法是不是就是复杂软件系统必须要做的呢。除非你可以让几个互相竞争的团队解决同一问题,否则你永远也没法直接比较他们工作上的差别。相反,对于那个坐在角落里,朝九晚五工作的家伙有可能花了很多时间在上网呢?也许他非常善于编写稳定、可靠的代码,也许他的工作要比其他人的简单。对于偶尔过来检查的管理者来说,他们会觉得第一种人工作很努力,第二种人则不是这样。努力工作就很好,偷懒就很不好,真的是这样么?

我的看法是表面上的努力工作常常是失败的信号。高压力、频繁中断的环境常常无法开发出好的软件。长时间的工作也不是一种正确的做法。有时,解决难题最好的方式可能是不再思考这个问题,出去走走,或是睡个好觉,让你的潜意识来解决问题。我最喜欢的一本书是G. H. Hardy 所编写的 A Mathematician’s Apology ,他是 20 世纪英国的一位杰出数学家。这本书描绘了他每天的工作:上午工作 4 个小时,下午观看板球比赛。他说对于复杂的脑力工作来说,一天工作 4 个小时以上是完全没有意义且生产力低下的方式。

我想对管理者说的是,以结果为导向,根据员工工作的成果,根据可运行的软件为导向,不要被人们表面上的努力工作所蒙蔽。另外,最好不要与你的开发者坐在一起,你会得到更好的结果,不受传统、直觉判断所影响的好结果。远程工作的好处是非常多的,你只能以输出来衡量员工的工作情况,而不是看他们是不是每天端坐 8 小时盯着 IDE 在看为标准,或是聚集在一起提出自己的见解为衡量的准则。

有读者评论说,文章写的很实在,有时真的很难说服同事设计的简单性与恰当使用 OO 原则所带来的好处。我就看到有的人以编写复杂代码并工作到深夜为傲。

还有读者说,我曾经与一个家伙共事过,他说“第一次就将事情做对的困难之处在于没有人认识到事情会有多么复杂”。几年过去了,我发现这句话非常正确。我现在都会在项目开始前进行大量的提前设计。这常常会让执行变得非常平滑,不过可能会让其他人觉得这件事挺简单的。

2013-12-22 01:253556
用户头像

发布了 88 篇内容, 共 262.4 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

Databend 内幕大揭秘第一弹 - minibend 简介

Databend

rust

稳定支撑千万级月活,华为日历背后的英雄

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

华为云代码检查服务CodeArts Check深度解读——代码缺陷早发现,全面守护软件质量和安全

科技热闻

YonBuilder 应用构建教程之移动端扩展

YonBuilder低代码开发平台

数据库故障致美国超一万航班取消或延迟

NineData

数据库 运维 数据库开发 数据备份 数据系统

易观千帆 | 11月用户体验GX评测:银行APP用户体验稳定提升,从流量竞争逐渐转向用户体验竞争

易观分析

用户体验 手机银行

从指标到洞察力的普罗米修斯

宋小生

Prometheus 普罗米修斯 普罗米修斯监控

log4j 默认配置文件

JefferLiu

百度安全入选权威报告《联邦学习与可信AI市场机会分析》典型厂商

百度安全

报告下载 | DQMIS高端闭门论坛成果报告——《2022第六届数据质量管理国际峰会关于数据要素发展几点看法和建议》

数据质量管理智库

数据 数据治理 数据安全 隐私计算 数据要素

TracedModule: 更友好的模型表示方案,模型训练到部署的桥梁

MegEngineBot

深度学习 开源 MegEngine 模型训练到部署

ChatGPT中文版重装上阵

felix

openai ChatGPT AIMODELMARKET

跳跃表数据结构与算法分析

京东科技开发者

redis 算法 跳跃表; 数据结构算法 企业号 1 月 PK 榜

用 Pipy 做个 HTTP 隧道

Flomesh

HTTP Pipy 流量管理

软件测试/测试开发 | 使用postman发送请求

测试人

软件测试 Postman 自动化测试 接口测试 测试开发

软件测试/测试开发 | 接口测试之HTTP、HTTPS 抓包分析

测试人

https 软件测试 HTTP 自动化测试 测试开发

秒杀系统架构设计

Johnny

「架构实战营」

不会数学的程序员,只能走到初级开发工程师!

小傅哥

Java 数据结构 算法 数学 小傅哥

诠释现代美学设计,TECNO首款笔记本电脑MEGABOOK T1重磅来袭!

Geek_2d6073

软件测试/测试开发 | 使用 cURL 发送请求

测试人

软件测试 自动化测试 curl 测试开发

震网(Stuxnet)病毒深度解析:首个攻击真实世界基础设施的病毒

华为云开发者联盟

安全 后端 华为云 企业号 1 月 PK 榜 震网

【iOS逆向与安全】系统推送服务(APNS)拦截

小陈

安卓 ios开发 逆向 iOS逆向 ios安全

电商秒杀系统架构设计

小虎

架构训练营

EMQ受邀出席华为云Top SaaS领航者私享会,共话SaaS企业发展未来

EMQ映云科技

物联网 IoT 华为云 emq 企业号 1 月 PK 榜

【避坑指南】快准狠!一键采购电子元器件

华秋PCB

工具 元器件 PCB PCB设计

软件测试/测试开发 | 接口测试常用代理工具

测试人

软件测试 自动化测试 接口测试 charles 测试开发

【深入浅出Spring原理及实战】「源码调试分析」结合DataSourceRegister深入分析ImportBeanDefinitionRegistrar的源码运作流程

洛神灬殇

spring Spring Framework

书单 | 春节假期,我想把这几本书带回家!

博文视点Broadview

认识区块链,认知区块链——Web3

MavenTalker

区块链 web3

直播|镜舟 x Smartbi《后疫情下如何利用数据驱动企业逆势破局》

镜舟科技

数据库 镜舟数据库

重磅发布 | 博睿数据发布金融行业精选客户案例集

博睿数据

可观测性 智能运维 博睿数据 精选案例

你的程序员是在努力工作还是在偷懒?_语言 & 开发_张龙_InfoQ精选文章