微软研发致胜策略 06:学无止境

这是一本老书,作者 Steve Maguire 在微软工作期间写了这本书,英文版于 1994 年发布。我们看到的标题是中译版名字,英文版的名字是《Debugging the Development Process》,这本书详细阐述了软件开发过程中的常见问题及其解决方案,强调团队合作、项目管理和开发流程的优化。该书成为软件开发和项目管理领域的经典著作,受到了广泛的认可和赞誉。


不记录,等于没读。


领导者必须让让团队成员只专注于改善产品的工作上。然而,如果领导者希望他们的项目真正取得成功,他们必须关注培训,以确保每个团队成员定期学习各种广泛有用的新技能。确保团队成员积极成长的一种方法是将个人成长目标与项目里程碑对齐,这可以使每个团队成员每年获得至少六项重要的新技能。程序员在日常工作中确实会获得技能,但这种被动学习的方式使他们的成长速度要慢得多。通过工作分配和明确的教育目标来确保程序员积极学习新技能,领导者不仅帮助项目和公司,也推动了程序员的职业发展。

25 年前的花样滑冰冠军表演,放在现在连小镇上的比赛冠军都拿不到。以现在的眼光看,当年的表演太过于简单了。现在的花样滑冰选手并不比 25 年前的选手条件更好,而是滑冰选手每年都在提高自己的标准,他们都想胜过上一届的全国或世界冠军。

Tom DeMarco 和 Timothy Lister,《人件》一书的作者,他们经常举办“程序设计大战”,用于研究不同公司程序设计师技术水平的差异。他们有两个发现:

  1. 程序设计师之间的表现可谓天壤之别,所需时间甚至有 1:11 的差距;
  2. 来自同一家公司的程序设计师技术水平会差不多。如果一位很差,另一位也好不到那里去,如果一位很棒,另一位也会表现不错,即使这两位程序设计师分属不同的部门也是一样。

这种差异的原因,作者认为是“公司培养程序设计师的环境不同”造成的。作为团队负责人,要对团队成员的技术水平有更高的追求,不能只是达到公司平均水平后就停滞不前。

如果程序设计师只是完成预期的程序设计工作,那还不够好。管理者应该不断提高对下属的要求标准,就像花样滑冰选手的教练一样。当你提高了团队的编程标准时,最终将提高整个公司的平均水平。

五年资历的笨蛋

做的久不是问题,问题是一直做同样的工作。

如果一直在一个岗位,工作个几年就能成为这个领域的专家。但一直在一个岗位会剥夺他们扩展新视界、学习新技术的机会。如果一位工程师在第一年成为文件转换的专家,于是在以后的四年里专门为各种产品的文件格式写转换的程序,这件工作绝对是重要的,但是他的技术只有在第一年里大幅提升,其余四年都在重复工作,没有学新的技术。他有五年的工作资历,但不是五年的工作经验,他只是用五年的时间重复第一年的经验罢了。

从长远来看,培养团队成员的各方面专长,即使导致当前工作进度慢些,几年后你就拥有一个强大的团队。团队中的任何一人,都有能力处理任何一种问题。

受用无穷的技术

在微软,对于刚加入项目的新人,通常会派给他基础性的工作,例如追踪 BUG、修改程序等等。慢慢的新人比较熟悉这个软件后,就可以增加工作难度。这是一种循序渐进的培养方式。当分配工作时,要设法让每个人都能在所分配的工作中学习到新的技术。

训练新员工时,先培养对整个公司所有项目都有价值的技术,然后才培养本项目独有的技术。

让专家再重新学习

总有一天,当初的新人会把本项目所有的程序全部摸熟,他们就暂时没有成长空间了。这个时候,你应该把没有新东西可学的程序设计师推到别人项目去。把所有的程序设计师放在他们可以成长、可以进步的地方,这是管理者对程序设计师和公司的义务之一。
作者刚当上函数库组长的第一周,首席程序设计师想去另一个小组,因为他本人对于一直做同一套软件感到厌倦,他需要扩展到新的技术领域。作者经过确定后,认为这是个让组员学习的好机会,于是慷慨放人。事情的发展出乎意料的好:

  1. 组内其他成员自告奋勇承担起首席程序设计师的工作,这给了新人学习成长的机会
  2. 首席程序员进入了新的技术领域,他所在的新的项目因为他的加入也出乎意料地顺利

总的来说,市区最棒的程序设计师虽然短期内难免要挣扎适应,但长期来看少了一位停滞不前的程序设计师,多了两位积极学习的程序设计师,和一个进行十分顺利的项目。员工成长,公司资产增加。

最近读过什么好书吗

我个人经常读书,充实自己的知识,不断了解新的观念。选一本好书,用几天的时间就可以吸取别人多年来从错误中获得的体会,这是很划算的。

  • 读策略性的书籍,比如《编程精粹—— Microsoft 编写优质无错 C 程序秘诀》、《C陷阱与缺陷》
  • 软件开发方面的书
  • 技术领域之外的书,比如《在哈佛学不到的管理知识》

作者鼓励组员自由选择想追求的技术,但要求大家的个人目标必须符合:

  1. 这项技术必须是对程序设计师本人、项目、公司三方面都有用的。
  2. 目标必须是可以在大约两个月的时间内完成的。
  3. 目标必须有一个可供评量的指标。
  4. 最理想的情况,我希望目标是对项目立即派得上用场的。

确定每位组员每两个月都有一项技术上的进步。

即使反馈

一发现某处需要改进,就立即采取更正的行动。

主管对属下的表现有任何意见都应该立即表示出来,迟来的纠正通常毫无效果。比如主管在年终考评时给某一位程序员很差的成绩,但是在一整年中从来没有提过对他什么地方不满意。程序员并不清楚自己哪里有问题,如果一开始就和他沟通,效果可能会更好。

要点

绝不让团队成员一直做相同的工作,这样会限制他的进步,使他停滞在原来的领域。一旦程序设计师精通了某一个领域,就让他换别的领域做做看,永远让他们学习新的技术。

各种技术的用途范围有所不同,有的技术在一般的项目都用得上,有的技术只有在特定性质的项目才用得上。当你训练团队成员时,必须让他们的技术能在公司发挥最大的用处。最好的办法就是,把应用范围最广的技术放在训练的最前期,应用范围最小的技术放在最后训练。

为了确保每位程序设计师的技术都在稳定地进步,一定要让每个人有个努力的目标,最好的方法是把个人的成长和项目阶段性目标相结合,项目阶段性目标一般是两个月,这样一年就至少六次进步了。假定一位组员在公司工作了五年,那么他会学会30种新技术、或是30本好书……

最好的成长目标来自于即时反馈。如果发现团队成员工作效率低下或重复出现相同错误,请抓住机会制定一个特定的改进目标,使团队成员可以立即采取行动。因为这种即时反馈可以他们立即采取明确的行动。






每一份打赏,都是对创作者劳动的肯定与回报。
千金难买知识,但可以买好多奶粉

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

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

相关文章

【运维】软件运维方案(2024word完整版)

1. 文档介绍 2. 人员与责任 3. 运维过程内容 4. 运维资源 5. 运维服务规划保障 6. 事件处置 7. 质量改进 8. 运维边界及内容 获取方式: 本文末个人名片直接获取。

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展,大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求,培养高素质的大数据技术人才,技校作为职业教育的重要阵地,亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

宿舍生活新升级:智能指纹锁的便捷体验(嘉立创EDA设计)

宿舍生活新升级:智能指纹锁的便捷体验 引言 宿舍生活总是充满挑战和乐趣,但有时也会因为一些小事情而变得复杂。比如,忘记带钥匙或者需要频繁地给室友开门。随着科技的发展,智能设备逐渐走进我们的生活,为日常带来便…

土耳其媒体发稿深化项目投放战略-脱颖而出

土耳其媒体发稿深化项目投放战略-脱颖而出 一、土耳其媒体的发展概况 土耳其拥有丰富的媒体资源,其中包括许多知名的新闻机构和周刊。随着互联网的普及和信息传播方式的变革,土耳其媒体不断调整发展策略,通过深化项目投放和多元化传播&…

代码随想录——一和零(Leetcode474)

题目链接 0-1背包 class Solution {public int findMaxForm(String[] strs, int m, int n) {// 本题m,n为背包两个维度// dp[i][j]:最多右i个0和j个1的strs的最大子集大小int[][] dp new int[m 1][n 1];// 遍历strs中字符串for(String str : strs){int num0 …

JESD204B学习与仿真

平台:vivado2018.3 芯片:xcku115-flva1517-2-i 场景:在高速ADC和DAC芯片中,有使用源同步的时钟和数据同步传输的方式,但是需要在逻辑内部对其进行校准。如果使用jesd204b接口传输数据,设计人员不需要了解…

从零训练一个多模态LLM:预训练+指令微调+对齐+融合多模态+链接外部系统

本文尝试梳理一个完整的多模态LLM的训练流程。包括模型结构选择、数据预处理、模型预训练、指令微调、对齐、融合多模态以及链接外部系统等环节。 01 准备阶段 1 模型结构 目前主要有三种模型架构,基于Transformer解码器,基于General Language Model&a…

【Python系列】Excel 文件到文本文件的转换

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

深入浅出理解 C 语言中的 qsort 函数

目录 引言 一、什么是qsort 二、函数原型 1.qsort函数 2.比较函数 三、qsort函数使用示例 1.使用qsort排序整形数据 2.使用qsort排序结构数据 总结 引言 在编程中,排序是一个常见且重要的操作。C 语言标准库提供了一系列排序函数,其中 qsort 函…

【java计算机毕设】在线教学平台MySQL springboot vue HTML maven小组设计项目源代码+文档 寒暑假作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】在线教学平台MySQL springboot vue HTML maven小组设计项目源代码文档 寒暑假作业 2项目介绍 系统功能: 在线教学平台包括管理员、用户、教师三种角色。 管理员功能包括个人中心模块用于修改个…

BioVendor:hsa-miR-21-5p miREIA kit

hsa-miR-21-5p是最具代表性的miRNA生物标志物。 hsa-miR-21-5p作为典型的onco-miRNA,它能够调节多种癌症相关的靶基因,如脑癌,肺癌,结肠直肠癌,胰腺癌,乳腺癌,胃癌,食管癌和肝细胞癌…

【自动驾驶汽车通讯协议】SPI通讯:深入理解与应用

文章目录 0. 前言1. 工作原理2. 模式与配置2.1 CPOL (Clock Polarity)2.2 CPHA (Clock Phase)2.3 组合模式 3. 特性与优势4. 在自动驾驶汽车中的应用5. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见…

LeetCode 58.最后一个单词的长度 C++

LeetCode 58.最后一个单词的长度 C 思路🤔: 先解决当最后字符为空格的情况,如果最后字符为空格下标就往后移动,直到不为空格才停止,然后用rfind查询空格找到的就是最后一个单词的起始位置,最后相减就是单词…

建投数据人力资源系列产品获得欧拉操作系统及华为鲲鹏技术认证书

近日,经欧拉生态创新中心和华为技术有限公司测评,建投数据自主研发的人力资源管理系统、招聘管理系统、绩效管理系统、培训管理系统,完成了基于欧拉操作系统openEuler 22.03、华为鲲鹏Kunpeng 920(Taisha 200)的兼容性…

Python:字典进一步应用

tips:window用win; 调出表情包,mac用ctrcmd空格键 try!不同心情对应不同的表情包 messageinput(">") # 分隔符 将字符串以 为终止符,进行划分 wordsmessage.split( ) emojis{":)":"😄&qu…

深度刨析C语言中的动态内存管理

文章目录 1.为什么会存在动态内存分配2.动态内存函数介绍2.1 [malloc](https://legacy.cplusplus.com/reference/cstdlib/malloc/?kwmalloc)与[free](https://legacy.cplusplus.com/reference/cstdlib/free/?kwfree)2.2 [calloc](https://legacy.cplusplus.com/reference/cst…

Unity 批处理详讲(含URP)

咱们在项目中,优化性能最重要的一个环节就是合批处理,,在早期Unity中,对于合批的处理手段主要有三种: Static Batching Dynamic Batching GPU Instancing 如今Unity 为了提升合批范围与效率,提供了…

防火墙中的会话表及用户认证

防火墙相关技术: 1.会话表技术 会话表技术 --- 提高转发效率的关键 --- 老化机制 1,会话表老化时间过长 --- 占用资源,导致一些会话无法正常建立 2,老化时间过短 --- 会导致一些需要长时间发送一次的报文强行终端,…

Windows下ORACLE数据泵expdp和impdp使用

Windows下ORACLE数据泵expdp和impdp使用 一、基础环境 操作系统:Windows server 2008; 数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 数据库工具:PL/SQL 12.0.7 实验内容&…

Python和MATLAB网络尺度结构和幂律度大型图生成式模型算法

🎯要点 🎯算法随机图模型数学概率 | 🎯图预期度序列数学定义 | 🎯生成具有任意指数的大型幂律网络,数学计算幂律指数和平均度 | 🎯随机图分析中巨型连接分量数学理论和推论 | 🎯生成式多层网络…