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

2023-10-30

当人们在进行一项体力工作时,你很容易评估他们工作的努力程度。你可以看到他们的身体动作,看他们流了多少汗水。也可以去看他们的工作成果:砖墙越砌越高,地上的洞越来越大。对努力工作的认可和奖励是人类一个非常基本的本能,这也是为什么我们对耐力运动如此着迷的原因之一。然而,在管理一些技术创造型的员工时,这种对体力上的努力工作的本能欣赏却变成了一个问题。高效率的知识工作者通常看起来并不像是在努力工作

早在2004年,我还是个工作在一家有线电视公司计费和配置系统的初级开发者。像所有的大型系统一样,它由许多相对独立的部分组成,分别由不同个人或小团队负责。模拟电视配置系统和数字电视配置系统几乎是完全分开的,分别由不同的团队负责。

模拟电视团队已经决定在早期的微软Biztalk平台上开发他们的系统,由我们公司的四个伙伴和微软的一个团队共同开发,并负责在生产环境中运行。他们工作都非常努力,并且经常工作到夜晚,甚至周末加班。每个人都会放下自己正在做的事情去帮助解决产品问题,经常是几个家伙围在一张桌子周围,提出哪里可能 会出现问题以及如何修复这些问题的建议。他们的工作氛围非常活跃,仅凭这一点,任何人都能够看出,不仅是整个团队,而是他们每一个人都真的真的非常努力工作。

数字电视配置系统开发团队却是完全不同的。代码大部分是由一个叫戴夫的家伙编写的。我当时是这个团队的一名初级维护开发者。起初,我在理解代码的过程中遇到了很多麻烦,因为它并不是用一个很长的程序来包含所有的内容,取而代之的是许许多多小的类文件和仅包含几行代码的方法。我的几个同事都抱怨戴夫把代码搞得过于复杂。但戴夫把我招致麾下,并建议我阅读一些面向对象编程方面的书籍。他教给我设计模式,SOLID编程原则以及单元测试。不久,我便开始能够理解这些代码,而且我越研究它就越欣赏它的优雅设计。在生产环境中它周而复始的运行,没有出现任何错误。代码改变起来也相当容易,因此,实现新的特性并不困难。单元测试则意味着要保证生产环境中尽可能少地出现bug

这样做的结果就是,我们看起来好像根本没有努力工作。我每天下午5:30准时回家,周末从不加班,我们也不会挤在一起去猜测一些失败的生产系统可能会遇到的问题。表面上看起来就像是分配给我们的任务一定是比分配给模拟电视团队的任务容易得多。实际上,两个团队的需求是非常相似的,只是我们拥有一个设计和实现地更好的软件系统,更好的支持基础架构,尤其是单元测试。

管理部门宣布他们将根据个人的工作表现加薪,当轮到我和老板谈话时,他说只有给那些真正努力工作的人加薪才算是公平,而我们的团队看起来似乎并不太关心公司的发展,不能和那些牺牲了自己的休息时间来工作的人员去比较。

这家有线电视公司是一个非常少见的实验室,你能够对好的软件设计和坏的软件设计、好的团队行为和坏的团队行为之间的效果有一个直观的比较。大多数组织并不能够进行这样的比较。你很难判断那些汗如雨下、工作到深夜并在周末加班、一直奋斗在一线的家伙是展示了他们在做一件真正复杂的系统工作时的伟大承诺,还是只是表明了他们的失败。除非你能够负担得起请两个或者更多的竞争团队来解决同样的问题,但是你永远也不会知道哪个公司会愿意这样做。相反地,那些整天朝九晚五、坐在角落里、看似花费很多时间浏览网络的家伙们呢?是只是因为他们非常精通编写稳定可靠的代码还是因为分配给他们的工作比别人的更简单?从常人的眼光来看,第一个家伙是在真正努力工作而第二个没有。努力工作值得表扬,而懒惰却是不好的,不是吗?

我认为努力工作的表象往往意味着失败。在一个高压,中断驱动的环境下,通常是不能够进行高质量的软件开发的。长时间工作通常也并不是一个好主意。有时解决一个困难问题的最好的方式就是停止思考,出去散个步,甚至最好去睡个觉,让你的潜意识去解决它。我最喜欢的书籍之一,是由20世纪一位领军的英国数学家G. H. Hardy撰写的《A Mathematician’s Apology | 一个数学家的辩白,他在这本书里描述了他的日常生活:每天上午工作四个小时,然后看一整个下午的板球。他说一天中,超过四小时艰难的脑力工作是毫无意义并且徒劳的。

我想要对管理者说的是,应该根据结果及可运行的软件来评判人们的工作,而不是通过他们看起来的努力程度来判断。与直觉相反,你最好不要和开发者们坐在一起,这样你才能够对他们的产出有一个更好的、不受常规或直观指标影响的了解。远程工作非常有好处,你只能根据产出来衡量他们的贡献,而不是简单地看他们是否每天8小时都坐在桌前对着IDE噼里啪啦敲键盘,或者是否“热情地”围在彼此桌前提供“有效的”建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你是一名努力工作的程序员,还是懒惰的程序员? 的相关文章

  • 2023春计算机系统大作业

    2023春计算机系统大作业
  • Nginx对上游服务的心跳检测健康检查

    nginx对上游服务器的健康检查默认采用惰性策略 可以集成 nginx upstream check module模块来进行主动健康检查 nginx upstream check module支持tcp心跳和http心跳检测 TCP心跳检查
  • AndroidStuio插件开发-适用于jetbrains全家桶

    文章目录 创建项目 创建类 获取文件 解析文件 展示解析内容 写入文件 写了个类似Butter Knife的开发库 但是并没有与其配套的AndroidStudio插件 抽时间研究了以下IDEA的api文档 撸了一个对应的插件 源码在这里 之
  • 在idea中创建javaweb项目

    在idea中新建javaweb项目 一 在idea中新建javaweb项目 二 部署应用程序到tomcat的webapps目录 一 在idea中新建javaweb项目 1 打开idea 选择File gt new gt new projec
  • 提问的智慧

    How To Ask Questions The Smart Way 学习浏览 看到的优质文章留存 转载 仅供个人学习使用 侵删 原文链接 本指南英文版版权为 Eric S Raymond Rick Moen 所有 原文网址 http ww
  • javascript 异步编程

    这可能是个比较深的话题 何谓异步 笼统地说 异步在javascript就是延时执行 严格来说 javascript中的异步编程能力都是由BOM与DOM提供的 如setTimeout XMLHttpRequest 还有DOM的事件机制 还有H
  • JEESITE登录流程简单梳理

    http blog csdn net qinwang gz article details 53306037
  • 网络三种连接方式-地址转换模式

    VMware虚拟机NAT 地址转换模式 转载于 VMware虚拟机三种网络模式详解 NAT 地址转换模式 Linux教程 Linux公社 Linux系统门户网站 二 NAT 地址转换模式 刚刚我们说到 如果你的网络ip资源紧缺 但是你又希望
  • 小程序、微信H5、APP,移动端跨端相互跳转相关规则,2020/11最新总结

    这里只做总结与解释 细则可以去相应官方文档查看 前情提要 其他小程序的appid可以在它的资料里直接查看 所以不是问题 H5 gt 小程序 gt 随便跳 通过微信jssdk openTagList wx open launch weapp
  • ubuntu(20.04)+linux内核(5.17.3)编译内核

    该篇文档可以放心观看 里面的内容是我以便编译内核 一边记录写下的 所以如果按照文档来做 是绝对可以的哈 文章目录 前言 一 安装linux内核 二 开始前的准备工作 三 内核编译 1 将下载好的linux内核解压至 usr src 2 得到
  • 数据透视表右侧字段不见了,怎么办?

    数据透视表右侧字段不见了 怎么办 点击 右键 选择 显示字段列表
  • 网络套接字发送结构体及数据处理

    struct很基础 但是说实话 我还不是很了解 以下是借鉴别人的 转载地址 http blog chinaunix net uid 21372424 id 119782 html 一 最近在做嵌入式系统 与windows的网络通信 由于 这
  • Spring源码学习-MVC的WEB源码解析

    目录 SpringMVC官方文档 SpringMVC的父子容器 父子关系的定义 自定义快速启动器 启动过程 容器创建的过程 容器刷新启动 父子容器示例图 网络请求链路分析 DispatcherServlet请求链路 DispatcherSe
  • oracle 9i在线重定义,oracle 9i上在线重定义表【转】

    当前位置 我的异常网 数据库 oracle 9i上在线重定义表 转 oracle 9i上在线重定义表 转 www myexceptions net 网友分享于 2013 07 23 浏览 3次 oracle 9i下在线重定义表 转 转自 h
  • https安全解决方案证书certbot教程

    一 Let s Encrypt Certbot和Snap的关系 Let s Encrypt是一个免费 自动化和开放的证书颁发机构 由非营利的互联网安全研究小组 ISRG 为您提供 Certbot使用EFF的Certbot在您的网站上自动启用
  • 抖音一键生成的AI绘画火了,网友惊呼:有点东西

    在各大AI绘画软件争奇斗艳的时候 近期最火的AI绘画莫过于抖音一键生成的AI绘画特效 网友惊呼 有点东西 就连最近话题度超高的 汪小菲 也用AI绘画来 秀 恩爱了 AI绘画识别度还挺高 特别是关于大白志愿者的生成效果 AI竟然能识别生成天使
  • postman—post方式几种请求格式的区别

    文章目录 前言 一 multipart form data与x www form urlencoded区别 二 使用时的一些细节 三 传参注意点总结 关于发送请求传入参数 总结 前言 介绍了postman中 常用的几种数据传参的特点 一 m

随机推荐

  • Elasticsearch的数据备份和恢复以及迁移

    目录 1 为什么备份 2 数据备份 3 数据恢复 4 ES备份数据迁移目标服务器 5 脚本备份恢复 1 为什么备份 常见的数据库都会提供备份机制 以解决在数据库无法使用的情况下通过备份来恢复数据减少损失 Elasticsearch 虽然有良
  • Pytorch建模过程中的DataLoader与Dataset

    pre line height 125 td linenos normal color inherit background color rgba 0 0 0 0 padding left 5px padding right 5px spa
  • python每日学5:python工程(大型项目)的组织架构:包、模块、类、方法

    题外话 在大型项目中 往往一个个模块已经不够组织起项目了 就比如一个文件夹下放了上千个文件 那想找到某一个文件就会变得困难 管理学中有种说法 一个管理者最适合管理 的对象是7个 假如程序的基本单元是函数 一个类包含7个函数 一个模块包含7个
  • C#怎么判断一个Socket是否连接

    判断Socket是否连接上 需要通过发包来确认 1 检查一个Socket是否可连接 2 private bool IsSocketConnected Socket client 3 4 bool blockingState client B
  • openGL之API学习(八十一)glsl的双精度double-precision

    10年以前的旧显卡基本上是没有双精度的 新显卡使用双精度需要开启GL ARB vertex attrib 64bit 和 GL ARB gpu shader fp64扩展 并且显卡架构要在SM5以上 就算有些显卡支持双精度类型 但是一些函数
  • java学生信息管理系统MVC架构

    一 项目结构 学生信息管理系统分三层进行实现 student java主要提供数据 cotroller java的功能是绑定试图和计算数据 Stuview java用于单一的用来显示数据 二 源码 1 1 Student 类 FileNam
  • 利用altium怎么生成PDF及怎么1:1打印文档

    画完板子之后 还要生成原理图PDF文档 供其他设计人员参考和指正 上图红框标注的两个地方 分别用于打印预览设置和生成原理图PDF 那么若是生成原理图PDF文档 则选择smart PDF即可 点击smart PDF后 点击next 上图中可以
  • vs如何断点?如何判断循环语句哪次出问题?

    红色的小点 按Fn F9 鼠标打字停在哪一行就会在哪一行 可以切换断点 再按一下则小红点消失 黄色的箭头 按Fn F10 再按Fn F10 就会到下一行 如果按Fn F5箭头会直接跳到红色的小点处 怎么看循环语句哪一次循环出问题呢 在断点
  • 算法:用Java实现双轴快速排序(DualPivotQuickSort)

    本文是用Java实现双轴快速排序 我找不到参考的文章地址了 十分抱歉 在此感谢参考文章的原作者 是你给了我思路和灵感 双轴快速排序和普通的快速排序不同的地方在于 普通的快速排序选出一个数字 作为一个基准值 然后通过数组值交换的方式 让左边区
  • Ant Design Pro项目中 提示:找不到模块“@ant-design/pro-components”或其相应的类型声明

    Ant Design Pro中在使用 StatisticCard 指标卡组件时候 按照官方的文档从 ant design pro components 中引入这个组件发现会报错 提示找不到模块 ant design pro componen
  • [659]linux安装RabbitMQ

    文章目录 安装Erlang 安装rabbitmq 关闭防火墙 否则非本地设备无法访问RabbitMQ服务 查看RabbitMQ运行状态 设置开机启动 添加用户 删除一个用户 修改用户的密码 设置用户角色 查看用户 设置用户权限 添加虚拟机
  • java 打印 发票_基于Excel和Java自动化:发票生成器

    对于销售人员 使用Excel创建发票是很常见的 但是该过程通常涉及许多容易出错的手动操作 例如输入数据 复制 粘贴等 如何实现一个可以将数据从数据库自动填充到发票Excel模板中 而无需再辛苦手动输入 从繁重的手动录入中解脱出来 并且避免认
  • win10计算器rsh_厉害了我的哥!win10计算器自带程序员模式太强大了!

    生活工作中常常会遇到用计算器的地方 比如算工资 算房贷啦 算卡路里等 一个有诸多功能的计算器能帮你省去大部分时间 你们知道吗 在windows计算器里 竟然还有程序员模式 可进行各种逻辑运算 快来和小编一起来看一下吧 相信大家Windows
  • C++几个关键字总结——const、static、extern、volatile

    1 const const 基本原理 被修饰的对象的值不可以被修改 const 推出的初始目的 正是为了取代预编译指令 消除它的缺点 同时继承它的优点 1 const修饰基本数据类型 表示常量 必须进行初始化 有以下两种初始化的方式 编译时
  • 数据分析中的mysql基础

    引言 之前的博客对mysql的一些入门知识进行了讲解 该博客将对sql的四个分类进行讲解 之前博客地址 https blog csdn net weixin 45696161 article details 106310108 sql的分类
  • python热度图改坐标_python matplotlib imshow热图坐标替换/映射实例

    今天遇到了这样一个问题 使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序 但是这样带来的问题就是画出来的x y轴中坐标点的数据任然是x y在数组中的下标 实际中我们可能期望坐标点是其他的一个范围 如图 坐标点标出来的是
  • 笔记本关机后耗电严重问题怎么解决?一秒快速解决笔记本电脑关机掉电快的问题

    前言 或许许多使用笔记本的朋友都会遇到一个很头疼的问题 那就是笔记本关机放一段时间后 一周以内或者几个小时 电池电量消耗非常大 那么到底是什么原因导致笔记本关机后耗电快呢 如何解决耗电快的问题呢 下面详细讲述问题点及其解决方法 几个问题点
  • mysql数据库字符集_超详细的MySQL数据库字符集总结,值得收藏

    MySQL支持多种字符集 character set 提供用户存储数据 同时允许用不同排序规则 collation 做比较 下面基于MySQL5 7介绍一下字符集相关变量的使用 一 字符集 字符序的概念与联系 在数据的存储上 MySQL提供
  • c语言负数翻转问题

    1 在项目中 我们经常会用到变量 那么在变量的定义和传递过程中 经常会出现负数的翻转问题 int test funtion return 1 void poll fun unsigned int a while a gt 250 print
  • 你是一名努力工作的程序员,还是懒惰的程序员?

    当人们在进行一项体力工作时 你很容易评估他们工作的努力程度 你可以看到他们的身体动作 看他们流了多少汗水 也可以去看他们的工作成果 砖墙越砌越高 地上的洞越来越大 对努力工作的认可和奖励是人类一个非常基本的本能 这也是为什么我们对耐力运动如