这是公司最糟糕的程序员,但是我坚决要留住他!

news2024/11/30 6:33:21

我在一家著名的软件咨询公司工作,有一天,公司决定对开发人员的个人绩效进行度量。

这个目标很美好:评估个人能力,帮助开发人员成长。

指标经过层层分解,来到我们团队,经过经理的认真讨论,决定不使用代码行数和Bug数这样的指标,因为它们太容易被玩坏了。

d9214b0e05ee0fe9bb1295463744c8d5.png

那用什么呢?用Story Point(用户故事点数)。

这是一个敏捷软件管理和开发中的一个度量单位,用于估计实现一个用户故事的复杂度。

e2a17b39b6fce505ab4aeed66b26f8c6.png

因为用户故事代表了给用户带来的商业价值,所以记录下每个开发人员实现了哪些用户故事,评估他们的绩效是很合理的。

我们使用Jira,每个人都可以把自己的名字和用户故事关联,从而认领一个用户故事,并且统计每个人的生产率也超级方便。

a18c2a0f321143c9e6ac7912fd9c447c.png

很快,经理就在统计报表中发现了一个最糟糕的程序员,Tim。

Tim这个人的“得分”(用户故事点数)一直为0!

他的得分并不是从高到底降下来的,而是一直保持着0的记录。

很明显,绩效低下的Tim必须得走人。

经理让我安排人去接手Tim的工作,但是我坚决拒绝了。

Tim的“分数”一直为零,是因为他从来没有认领过任何的用户故事!

相反,他的工作方式非常独特,他把他的时间都花在了和别人进行结对编程上。

5daa50fbb074eb0d2eeac193b74336af.jpeg

对于经验不足的开发人员,Tim会让他们充当结对编程中的导航者角色,帮助他们来找到解决方案,Tim不会嘲弄,压迫这些新手,而是采用苏格拉底的启发式来引导他们,给他们带来顿悟时刻。

和有经验的开发人员结对时,编程就是充满争吵的共同创造,用不同的视角来解决问题,创造出比单个人能想象的更好的东西。

Tim是一个出色的程序员,和他结对你总能学到新的东西。

所以Tim的名下没有交付任何用户故事,但是他交付了一个团队,这个团队变得更加高效,有生产力,更加卓越,更加有趣。

这一切,都是因为Tim在团队中。

我向经理解释了Tim的情况,邀请他时不时到团队来看一看。

每当经理出现的,他都能看到Tim和不同的程序员坐在一起,帮助这些程序员完成他们的事情。

你可以肯定,代码质量在显著变好,开发时间在显著缩短。

是的,更好,更快,并且更加省钱。

最后,我们留下了Tim,并且悄悄地干掉了衡量个人生产力的指标,取而代之的是衡量团队的绩效,即我们这个高效的团队能给整个组织带来什么价值。

6340767c5543f32d13c47151ec6b58d4.png

后记:这篇文章在Reddit和HackerNews上引发了激烈的讨论,我这里摘录几个:

Luke22_36:编程行业还没有完全接受这样一个事实:编写软件是一项创造性工作,虽然有很多的技术性,但仍然是一门艺术。然而,我们看到的管理方法更像是生产可重复产品的工厂,而不是艺术工作室。

Stratoscope:大约 20 年前,我在一家中等规模的软件公司工作,该公司销售 Mac 和 Windows 桌面应用程序。

该团队主要拥有丰富的Mac 经验,但是刚刚接触 Windows,所以Windows版本自然也存在一些问题。

当时,我被称为“Windows专家”,因此他们聘请我来帮助改进软件的Windows版本,并帮助团队熟悉Windows编程。

我经常把一天的时间花在“上门拜访”上:去其他开发人员的办公室,结对编程,fix bug,或者只是谈论 Windows API 的最佳实践等。(是的,我们都有私人办公室!)

几个月后,我收到了一条绩效平庸的评价:“你的生产力并没有达到我们所希望的水平,特别是在团队其他成员生产力提高的情况下。”

James: 这让我想起贝尔实验室的一件轶事,有人想计算出谁是最有生产力的员工(根据获得的专利等信息),发现他们中的许多人会与同一个人共进午餐。

这个人的工作效率并不高,但他总是会提出深思熟虑、引人注目的问题,从而使他的同事的工作效率明显提高。

对于Tim的故事,你怎么看呢?

原文链接:

https://dannorth.net/2023/09/02/the-worst-programmer/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/986707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云备份客户端——数据管理模块

数据管理模块设计之前,我们需要先明确该模块的信息是用来做什么的。根据上文分析该模块信息主要用于判断一个文件是否需要备份,判断条件有两个:1.新增文件 2.被修改过的文件 新增文件好判断,由于我们获得新文件后是先上传文件&…

有效利用云测试的关键要素是什么

云测试是一种基于云计算平台的软件测试方法,它将测试环境和资源部署在云端,通过网络连接来执行测试任务。云测试提供了弹性的计算能力和资源管理,可以根据需求快速扩展和缩减测试环境,使测试过程更加灵活和高效。那么,…

如何在国内安装Bitdefender

我一直有关注国外的antivirus的情况,之前一直用ESET,但是最近一直关注到 Bitdefender 可以和卡巴斯基旗鼓相当,于是抱着试试看的精神,在win10和win11安装了一遍。外国软件大都服务部署在AWS,但是我们这儿的运营商和某种…

使用极域电子教室控制学员机开机问题

遇到问题: 昨天晚上试了一下从网上下载的“极域电子教室”软件,首先保证教师机和学员机器在同一局域网下,然后我发现:教师机可以控制学员机 关机、重启,但是不能控制学员机 开机。 解决办法: 按下电脑开机…

磁盘分析 wiztree[win32] baobab[linux]

磁盘分析 wiztree[win32] && baobab[linux] wiztree[win32]baobab 又叫 Disk Usage Analyzer[linux]安装使用 参考 wiztree[win32] baobab 又叫 Disk Usage Analyzer[linux] baobab 又叫 Disk Usage Analyzer,是 Ubuntu 系统默认自带的磁盘分析工具&#x…

原生js之dom添加表单验证

第一种,在form表单中加入onsubmit事件,进入事件后,可以通过dom.forms[父formname][子formname].value,然后测试这个别名是否为空,在这个判断语句中即可放入想要的表单验证 第二种,在input中加入required,这个是浏览器默认的校验,如果说input中加入required,则默认它生效. <…

【Arduino27】DHT11温湿度传感器模拟值实验

硬件准备 DHT11温湿度&#xff1a;1个 面包板&#xff1a;1个 杜邦线&#xff1a;3根 硬件连线 VDD引脚接 5V 电源 DATE引脚接 4号 接口 GND引脚接 GND 接口 软件程序 #include<DHT.h>#define DHT11_pin 4 //温湿度传感器引脚DHT dht(DHT11_pin,DHT11);float tem…

GO语言实战之接口实现与方法集

写在前面 嗯&#xff0c;学习GO&#xff0c;所以有了这篇文章博文内容为《GO语言实战》读书笔记之一主要涉及知识 接口是什么方法集(值接收和指针接收)多态 傍晚时分&#xff0c;你坐在屋檐下&#xff0c;看着天慢慢地黑下去&#xff0c;心里寂寞而凄凉&#xff0c;感到自己的…

FastDFS介绍

文章目录 一、什么是FastDFS二、FastDFS的架构2.1 跟踪服务器&#xff08;tracker server&#xff09;2.2 存储服务器&#xff08;storage server&#xff09;2.3 客户端&#xff08;client&#xff09; 三、 FastDFS功能逻辑分析3.1 upload file&#xff08;上传文件&#xff…

shell入门运算符操作、条件判断

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

分类算法系列⑤:决策树

目录 1、认识决策树 2、决策树的概念 3、决策树分类原理 基本原理 数学公式 4、信息熵的作用 5、决策树的划分依据之一&#xff1a;信息增益 5.1、定义与公式 5.2、⭐手动计算案例 5.3、log值逼近 6、决策树的三种算法实现 7、API 8、⭐两个代码案例 8.1、决策树…

springboot使用切面记录接口访问日志

前言 当我们开发和维护一个复杂的应用程序时&#xff0c;了解应用程序的运行情况变得至关重要。特别是在生产环境中&#xff0c;我们需要追踪应用程序的各个方面&#xff0c;以确保它正常运行并能够及时发现潜在的问题。其中之一关键的方面是记录应用程序的接口访问日志。 Sp…

Linux系统离线安装RabbitMQ

安装rabbitmq 1、下载安装包 首先进入官网进行安装包的下载&#xff0c;在下载时一定要注意erlong版本和rabbitmq-server版本匹配 rabbitmq版本对应关系&#xff1a;传送门 Erlong下载地址:传送门 rabbitmq-server下载地址:传送门 socat 不同版本 centos7:传送门 cent…

理解项目开发(寺庙小程序)

转载自&#xff1a;历经一年&#xff0c;开发一个寺庙小程序&#xff01; (qq.com) 破防了&#xff01;为方丈开发一款纪念小程序&#xff01; (qq.com) 下面内容转载自&#xff1a;程序员5K为青岛啤酒节开发个点餐系统&#xff01; (qq.com) 看一个人如何完成一个项目的开发…

SpringBoot集成Swagger的使用

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器。 Swagger能够在线自动生成 RESTFul接口的文档&#xff0c;同时具备测试接口的功能。 简单…

UDP的可靠性传输2

系列文章目录 第一章 UDP的可靠性传输-理论篇&#xff08;一&#xff09; 第二章 UDP的可靠性传输-理论篇&#xff08;二&#xff09; 文章目录 系列文章目录三、流量控制RTORTT流量控制1.如何控制流量2. 发送方何时在发送数据3.流程图 拥塞控制1.慢启动 总结1.拥塞控制和流量…

基于Streamlit的应用如何通过streamlit-authenticator组件实现用户验证与隔离

Streamlit框架中默认是没有提供用户验证组件的&#xff0c;大家在基于streamlit快速实现web应用服务过程中&#xff0c;不可避免的需要配置该应用的访问范围和权限&#xff0c;即用户群体&#xff0c;一般的做法有两种&#xff0c;一种是通过用户密码验证机制&#xff0c;要求只…

Matlab图像处理-灰度直方图

一幅含有一个与背景明显对比的物体的灰度图像&#xff0c;如下图所示。 有包含双峰的灰度直方图&#xff0c;如下图所示。 两个尖峰对应于物体内部和外部较多数目的点&#xff0c;两峰尖的谷对应于物体边缘附近相对较少数目的点。在这样的情况下&#xff0c;通常使用直方图来确…

点亮LED——第一个IAR工程

文章目录 说明创建工作区创建新工程向工程添加文件设置工程Options编译工程下载程序EWPtool 插件之前的"测试开发板"章节 测试开发板——第一个AutoSAR程序,使用了一个 demo 工程,不管是裸机程序还是AutoSAR程序,那都是别人已经创建好的工程。本节来介绍如何来创建…

gismo程序示例:边长为 8 16 32 的长方体 受均布载荷

文章目录 前言一、一、8*32面 受均布载荷 二、最小的面&#xff08;8*16&#xff09;受均布载荷三、最大的面受均布载荷 前言 只是为方便学习&#xff0c;不做其他用途&#xff0c; 一、 一、8*32面 受均布载荷 /// This is an example of using the linear elasticity solver…