当前位置: 首页 > article >正文

研发效率破局之道阅读总结(5)管理文化

研发效率破局之道阅读总结(5)管理文化


Author: Once Day Date: 2025年5月10日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 程序的艺术_Once-Day的博客-CSDN博客

注: 本文内容摘抄于原文,文中"我"代表原作者【葛俊】大佬视角。


参考文章:
  • 研发效率破局之道

文章目录

  • 研发效率破局之道阅读总结(5)管理文化
        • 1. 高效团队
        • 2. 文化思想
        • 3. 做感兴趣的事
        • 4. 信息透明

1. 高效团队

但作为团队管理者,要提高团队的研发效能,掌握了这些原则、方法和实践后,还要通过管理和文化让它们真正在团队落地。管理是提高团队研发效能的基石,而文化是持久高效的保障。同时,管理又决定了文化,如下图所示。

在这里插入图片描述

技术管理工作主要有如下 3 个步骤:

  • 寻找目标。
  • 目标管理。
  • 计划并执行去实现目标。

(1)第一步:寻找目标

研发效能的三要素是有效、快速、可持续性,其中第一条就是有效,也就是准确性。所以,要想建设高效的研发团队,技术管理者的第一项重要工作就是,作为舵手,为团队寻找方向和目标。

首先,技术团队的根本目标就是业务目标。毋庸置疑,业务目标是团队存在的意义,完成它是一切的基础。

业务目标的设定有两个层次:

  • 弄清楚公司和上级对团队的预期,达到这个预期,是团队的基础目标。
  • 在基础目标之上,还要给团队设定一个进取目标。需要分析公司的发展方向,以及团队的实际情况,找到那些既符合公司利益,又通过跳一跳就能够得着的目标。

如果只关注业务,我们的行动就容易短视。技术常常在短期被高估,在长期被低估。作为技术管理者,我们需要看清楚并坚持技术在长期可以发挥的巨大作用,在技术上持续投资,制定并完成合理的技术目标

技术目标主要有两种:

  • 一种是关于偿还技术债的,这是处理已经形成的问题。
  • 另一种是前瞻性的技术目标。

业务目标和技术目标的时间占比应该为80%左右,如果技术目标不能立项,那么可以合并到业务目标里面。

(2)第二步:目标管理

目标管理的第一步就是制定计划。有效设定目标的原则:SMART 原则。SMART 是 Specific(具体)、Measurable(可衡量)、Attainable(可达成)、 Relevant(与主目标有相关性)和 Time-bound(有明确的截止期限)这 5 个英文单词首字母的缩写。

OKR也是一个很有用的目标管理工具。

领导者告诉团队需要去哪里,而管理者告诉团队如何去到那里。每一个管理者都应该努力成为一个领导者,给团队目标,让团队成员自己找到达成目标的方法。而,OKR 正是帮助管理者做到这一点的工具。

OKR 之所以在目标对齐上有很大作用,是因为团队成员可以发挥主观能动性,自己制定与公司目标一致的 KR。而一旦 OKR 跟绩效挂钩,团队成员承担风险的意愿和内驱力就会大大减弱,倾向于制定更容易实现的 KR,从而失去了目标导向的意义。

(3)第三步:任务执行

在具体的任务执行上,作为技术管理者,我们应该从人、流程和工具上来提高研发效能,高效达成业务目标和技术目标。

最关键的是调动起主观意愿,把团队成员的利益统一起来,才会激发他们的主观能动性,自己想办法去达成目标。

2. 文化思想

什么是文化?文化是决定一群人行为方式的共同认知、价值观和信念。

对于一个公司或者团队来说,文化就是决定其团队成员行动的基本价值观。文化决定行动, 它的价值自然巨大。可以说,一个团队能否高效产出,文化起到关键作用。

文化更像是潜规则,写到横幅上的标语并不一定是公司文化;文化的建设,更是技术活和力气活的合体,绝不是喊几句口号就可以完成的

奈飞认为,在公司规模变大时,不应该引入规则,而是应该引入更多人才来控制混乱。只要招收到优秀的、负责任的人,并给与他们自由发挥的空间,他们就能够灵活高效地解决公司在成长过程中遇到的各种复杂问题。因此,只要引入人才的速度超过复杂度的增长速度,就可以让公司在成长的同时,持续保持高效能和创新能力。这就是他们的基本思路。

文化是一种潜规则,行动才能真正表现出文化。所以,推动文化建设的第一点,就是坚持去做。

推动文化建设的第二点,是明确提出价值观。

推动文化建设的第三点,是注意文化的演进。

其实,我个人对奈飞的文化有两点不太认同。

其实,我个人对奈飞的文化有两点不太认同。

第一,他们超级强调透明,认为一个成熟的人可以接受任何客观的评价。比如,奈飞会对一些被解雇的员工的解雇原因进行分析,甚至出现过让他们亲自参加的情况。虽然招聘的都是“成人员工”,能够客观看待因为绩效不合格被解雇这件事,但人终究还是有感性的一面,这种极端透明的措施确实会对一部分人造成影响。

第二,太强调当前表现,而不考虑过往贡献,会降低员工的归属感,进而降低创造性。

Facebook 的工程师文化,到底是什么?用正确的工程方法、思路来完成工作的文化。

一句话总结就是“黑客之道(The Hacker Way)“。

  • 优化无止境:黑客认为优化无止境,产品无完美。在大部分人认为服务已经无法改善, 或者是满足现状的时候,会直接上手进行进一步的优化。
  • 持续进步:黑客不追求一蹴而就,一劳永逸。他们更喜欢迅速发布小规模更新,并从中吸取经验教训,通过长久努力不断进步。
  • 代码为王:黑客更在意代码实现。代码胜于雄辩,只有真正实现了的东西才有价值。
  • 能力为王:黑客有极度开放和精英为王的心态,不会因为谁的头衔高而默认其权威。相比之下,黑客更看重的是技术,以及把想法变为产品的能力,说白了就是谁行谁上。

在能力为王方面,扎克伯格没有独立办公室,工位和我的一样普通。当然,他有一个私人会议室。另外,员工互相看不到对方的职级,所以讨论技术问题时,不会因为级别而束手束脚。

在持续进步方面,公司搭建了强大的实验框架、功能开关,无论何时都可以测试上千个不同版本的 Facebook 服务,给开发人员创造能够迅速行动、快速迭代的环境。另外,公司的容错文化落到了实处。只要不是故意的,首次犯错都不会影响绩效。当然同样类型的错误重犯会有惩罚措施,另外有一些隐私、安全相关的红线也不能触碰。

在代码为王方面,所有新员工入职时都被要求参加一个长达 6 周的培训,叫 Bootcamp。 这 6 周的时间,无论你是多高级别的管理者,都要学习公司的代码库、工具和方法,并实际编码完成任务。业内有许多工程师团队的管理者,并不愿亲自动手编写代码,这在 Facebook 是行不通的。因为,Facebook 更看重的是实践型人才。

在专注影响力方面,Facebook 有一个定期举办的 Hackathon(黑客马拉松)活动,让我们依照自己的创意开发原型产品,然后在公司范围内进行演示。这就给了我们一个发挥想象力和能力来产生价值的机会。Facebook 最成功的产品有些就来自 Hackathon,包括时间线 (Timeline)、聊天、视频、点赞按钮等。

3. 做感兴趣的事

推行工程师文化的目的是,提高开发人员的积极性和创造性,从而更高效地进行软件生产,在竞争中取胜。而要最大化地激发开发人员的自我驱动能力,根本出发点是,开发者这个群体的特性。

每一名开发者首先都是知识工作者。管理学大师彼得 · 德鲁克(Peter Drucker)在《卓有成效的管理者》中说:“我们无法对知识工作者进行严密和细致的督导,我们只能协助他们。知识工作者本人必须自己管理自己,自觉地完成任务,自觉地做出贡献,自觉地追求工作效益"。从这个角度来看,每一个知识工作者,都是管理者。

要提高开发者的效率,强管理不是办法,根本之道在于激发他们的内驱力。正因为如此,有效激励员工的积极性,正是硅谷高效能公司文化的共同点。

  • 让员工做感兴趣的事;
  • 让员工拥有信息和权限;
  • 用绩效调节员工和公司方向的一致性。

员工能做自己喜欢的事儿,并有施展拳脚的空间,自然能最大限度地激发积极性;再加上绩效的调节,能够让团队成员的积极性与公司利益更有效的对齐,从而最大化员工积极性带来的成果。

4. 信息透明

在拥有信息方面,国内公司一般过于严格。信息的不透明,会降低员工的主人翁意识,并会因为信息不通畅导致工作效率和有效性的下降。所以,在我看来,国内公司还可以在信息方面做得更透明些。

在权限和信任方面,我接触到的国内公司,大都偏向于不信任的管理方法。这种方法难以让员工有主人翁的感觉,导致公司和员工互不信任。在这种情况下,又怎么期望员工能积极地 为公司创造价值呢?

我始终认为,国内的开发人员和硅谷的开发人员一样,都有很强的创造性,能力也没什么大的差别;只要能给他们创造好的环境,提供信息并给予信任,就可以更好地激发他们的内驱力,从而提高公司和团队的研发效能。

作为知识工作者,拥有信息,是我们能够做出正确判断的一个必要条件。但信息的开放具有 两面性,如果暴露过多的敏感信息,势必会对公司造成些负面影响。

面对这样一把双刃剑,Facebook 的态度是考虑风险,但并不是一味地避免风险,而是权衡公开信息的利弊,在确保基本安全的前提下尽量实现信息透明化。

代码的共享可以在开发、调测时节省很多沟通成本,大幅提高效率。应该在可能的范围内,尽量放宽对代码的管控,对于那些即使泄露出去也没有太大关系的代码,要放松管控。

相关文章:

研发效率破局之道阅读总结(5)管理文化

研发效率破局之道阅读总结(5)管理文化 Author: Once Day Date: 2025年5月10日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 程序的艺术_Once-Day…...

单因子实验 方差分析

本文是实验设计与分析(第6版,Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从 下载实验设计与分析(第6版&a…...

一、ArkTS语法学习

一、ArkTS语法学习 1 ArkTS语法简介2 声明2.1 变量声明2.2 常量声明2.3 自动类型推断 3 类型3.1 基本类型和引用类型3.2 基本数据类型3.2.1 number类型3.2.2 boolean类型3.2.3 string类型3.2.4 void类型 3.3 引用类型3.3.1 Object类型3.3.2 arry类型3.3.3 enum类型3.3.4 Union类…...

MySQL 1366 - Incorrect string value:错误

MySQL 1366 - Incorrect string value:错误 错误如何发生发生原因: 解决方法第一种尝试第二种尝试 错误 如何发生 在给MySQL添加数据的时候发生了下面的错误 insert into sys_dept values(100, 0, 0, 若依科技, 0, 若依, 15888888888, ryqq.com, 0,…...

Bitacora:基因组组件中基因家族识别和注释的综合工具

软件教程 | Bitacora:基因组组件中基因家族识别和注释的综合工具 https://zhangzl96.github.io/tags#生物信息工具) 📅 官方地址:https://github.com/molevol-ub/bitacora 🔬 教程版本:BITACORA 1.4 📋 …...

【WebRTC-13】是在哪,什么时候,创建编解码器?

Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:编解码器的关键实体类是什么?在哪里&什么时候…...

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备 一、Rust核心特性应用场景开发工具社区与生态 二、Rust 和 Python 比较1. **内存安全与并发编程**2. **性能**3. **零成本抽象**4. **跨平台支持**5. **社区与生态系统**6. **错误处理**7. **安全性**适用场景总结 三、…...

Redis持久化存储介质评估:NFS与Ceph的适用性分析

#作者:朱雷 文章目录 一、背景二、Redis持久化的必要性与影响1. 持久化的必要性2. 性能与稳定性问题 三、NFS作为持久化存储介质的问题1. 性能瓶颈2. 数据一致性问题3. 存储服务单点故障4. 高延迟影响持久化效率.5. 吞吐量瓶颈 四、Ceph作为持久化存储介质的问题1.…...

Ceph 原理与集群配置

一、Ceph 工作原理 1.1.为什么学习 Ceph? 在学习了 NFS 存储之后,我们仍然需要学习 Ceph 存储。这主要是因为不同的存储系统适用于不同的场景,NFS 虽然有其适用之处,但也存在一定的局限性。而 Ceph 能够满足现代分布式、大规模、…...

MYSQL中的RR隔离级别实现原理,它是如何解决不可重复读

在数据库管理系统中,RR(Repeatable Read)隔离级别是为了保证在一个事务执行期间,多次读取同一数据时,所读取的数据值始终保持一致,从而避免了不可重复读的问题。不可重复读的问题指的是,在同一个…...

Linux的web服务器的部署和优化

http中访问请求中I/O结构 在HTTP协议中,I/O(输入/输出)结构主要涉及客户端与服务器之间的请求和响应交互。以下是HTTP请求和响应的基本结构及其关键组成部分: HTTP请求结构 HTTP请求由请求行、请求头和请求体三部分组成 请求行…...

天线的PCB设计

目录 天线模块设计的重要性 天线模块的PCB设计 天线模块设计的重要性 当智能手表突然断连、无人机信号飘忽不定——你可能正在经历一场来自天线模块的"无声抗议"。这个隐藏在电子设备深处的关键组件,就像数字世界的隐形信使,用毫米级的精密结…...

C++笔记-set和map的使用(包含multiset和multimap的讲解)

1.序列式容器和关联式容器 前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系&#xff0…...

宝蓝德中间件部署war包时,配置的绝对路径读取错误。

文章目录 问题场景解决办法宝蓝德是什么??一、基础环境与依赖配置二、自动化部署工具链三、高可用性与集群配置四、安全与合规性措施五、产品线差异化部署六、典型部署流程示例七、运维与优化 原因1. 明确“当前工作目录”与“绝对路径”的关系2. 问题根…...

Linux `ifconfig` 指令深度解析与替代方案指南

Linux `ifconfig` 指令深度解析与替代方案指南 一、核心功能与现状1. 基础作用2. 版本适配二、基础语法与常用操作1. 标准语法2. 常用操作速查显示所有接口信息启用/禁用接口配置IPv4地址修改MAC地址(临时)三、高级配置技巧1. 虚拟接口创建2. MTU调整3. 多播配置4. ARP控制四…...

Python pandas 向excel追加数据,不覆盖之前的数据

最近突然看了一下pandas向excel追加数据的方法,发现有很多人出了一些馊主意; 比如用concat,append等方法,这种方法的会先将旧数据df_1读取到内存,再把新数据df_2与旧的合并,形成df_new,再覆盖写入,消耗和速…...

【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路

摘要:本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程,涵盖迁移前的环境评估、数据梳理和工具准备,迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控,以及迁移后的质量验证、系…...

Go语言——goflow工作流使用

一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…...

yarn npm pnpm

1 下载方式 npm 之前串行下载 现在并行下载 yarn 并行下载 加入缓存复用 pnpm 硬连接 避免重复下载,先检查本地是否存在,存在的话直接连接过去...

Block Styler——字符串控件

字符串控件的应用 参考官方帮助案例:(这个方式感觉更好,第二种方式也可以)E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式: 读取: //方法一 string0->GetProperti…...

LangGraph(三)——添加记忆

目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针: from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…...

【无标题】I/O复用(epoll)三者区别▲

一、SOCKET-IO复用技术 定义:SOCKET - IO复用技术是一种高效处理多个套接字(socket)的手段,能让单个线程同时监听多个文件描述符(如套接字)上的I/O事件(像可读、可写、异常)&#x…...

通俗的理解MFC消息机制

1. 消息是什么? 想象你家的门铃响了(比如有人按门铃、敲门、或者有快递),这些都是“消息”。 在 MFC 中,消息就是系统或用户触发的各种事件,比如鼠标点击(WM_LBUTTONDOWN)、键盘输入…...

ClassLoader类加载机制的核心引擎

ClassLoader类加载机制的核心引擎 文章目录 ClassLoader类加载机制的核心引擎1. ClassLoader基础1.1 什么是ClassLoader?1.2 ClassLoader的层次结构1.3 类加载的过程 2. 源码解析与工作原理2.1 ClassLoader的核心方法2.2 双亲委派模型的工作原理2.3 打破双亲委派模型…...

tryhackme——Enumerating Active Directory

文章目录 一、凭据注入1.1 RUNAS1.2 SYSVOL1.3 IP和主机名 二、通过Microsoft Management Console枚举AD三、通过命令行net命令枚举四、通过powershell枚举 一、凭据注入 1.1 RUNAS 当获得AD凭证<用户名>:<密码>但无法登录域内机器时&#xff0c;runas.exe可帮助…...

【Linux学习笔记】系统文件IO之重定向原理分析

【Linux学习笔记】系统文件IO之重定向原理分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】系统文件IO之重定向原理分析前言一. 系统文件I/01.1 一种传递标志位的方法1.2 hello.c写文件:1.3 he…...

【新教程】Linux服务器ssh启用两步验证

1 背景 服务器被恶意破解的事件层出不穷&#xff0c;一旦被破解就比较麻烦。不如提前通过简单的措施——增加两步验证&#xff0c;来大大增强服务器的安全性。本教程在Debian 12.5、Ubuntu 24.04等系统上测试通过。 2 详细过程 1、安装 libpam-google-authenticator sudo a…...

SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类

文章目录 前言一、正文1.1 项目结构1.2 项目环境1.3 完整代码1.3.1 spring-mcp-demo的pom文件1.3.2 generate-code-server的pom文件1.3.3 ChatClientConfig1.3.4 FileTemplateConfig1.3.5 ServiceProviderConfig1.3.6 GenerateCodeController1.3.7 Columns1.3.8 Tables1.3.9 Fi…...

实现滑动选择器从离散型的数组中选择

1.使用原生的input 详细代码如下&#xff1a; <template><div class"slider-container"><!-- 滑动条 --><inputtype"range"v-model.number"sliderIndex":min"0":max"customValues.length - 1"step&qu…...

基于Credit的流量控制

流量控制(Flow Control)&#xff0c;也叫流控&#xff0c;它是控制组件之间发送和接收信息的过程。在总线中&#xff0c;流控的基本单位称为flit。 在标准同步接口中(比如AXI协议接口)&#xff0c;握手信号如果直接采用寄存器打拍的方式容易导致信号在不同的方向上出现偏离。因…...