经济下行,企业还在“裁员至上”?

news2024/11/10 22:50:21

最近小红书、B站崩溃,又延伸到某云服务厂商问题频发,让人忍不住戏谑:“这算不算裁员裁到大动脉?”


在阿道看来,各大企业的裁员动作,绕不开的依旧是“人月神话”:盲目加人带来的是成本的倍增和效率的下降。而大规模裁员也从另一种角度诠释了“人月神话:盲目裁人带来的则是整体业务的崩盘。

管理者更应认识到这种资源悖论,关注如何提效,而非简单的人力堆砌或缩减。

关于团队提效,阿道前段时间抓住春哥(禅道软件创始人王春生)聊了聊他的经验和看法。整理出来禅道团队组织架构、流程规范到研发等各层面的工程实践,希望能带给大家一些启发。

“纪律”共识,是组织执行的血液

很多人对敏捷管理存在一种误解,认为敏捷就是“想干啥就干啥”。春哥提到这其实是团队缺乏基础的“纪律”做保障。


如何理解这里的“纪律”?春哥认为,团队中的“纪律”体现的是团队成员间建立了基本的共识和协作规范,以及约定俗成的工作流程。这是保证团队协作的基础。好比军队训练,通过队形训练、内务训练等这些看似无实战意义的事情,来锻炼团队的意识和纪律性,将这些规范真正融入血液、基因中。

因此,禅道的实践会更关注制定实践规范,如明确的工作流程和任务分配,以及编码上的规范(IDE的规定、代码注释写法、分支管理)等。在明确的“纪律”下,团队成员也可以形成良好的工作习惯,提高工作效率和质量。

1)扁平化组织:做乘法,而不是做减法

帕金森定律是这样形容行政组织的:在行政管理中,行政机构会像金字塔一样不断增多,行政人员会不断膨胀,尽管每个人都很忙,但组织效率却会越来越低下。如果说要问哪种组织架构更适合当下的禅道,春哥会说:扁平化组织。


这种扁平化的管理,不仅仅是在做减法,更是在做效率的乘法。


作为一种去中心化的组织结构,扁平化组织能够减少管理层次、简化决策流程。那些大而繁琐的层层审批没有了,留下来的自然是群策群力和孵化创新的氛围。


春哥也明确了禅道团队扁平化的“纪律”:大方向上。在扁平化组织中,每个声音都值得被听到。


在禅道的具体研发工作中,每个研发小组会在一段时间内相对固定地专注于某个方向。一段时间后,根据某些项目或决策方向的需要,各个研发小组会被打散、重建。这种组织架构与调整,一方面会让团队更好地适应业务需要;另一方面,也会让研发团队的每个人都能熟悉禅道的不同业务。


在这种模式下,研发成员可以灵活地参与到禅道任意功能模块的开发工作中。就像德鲁克所说:“管理者的一项具体任务就是要把今天的资源投入到创造未来中去”。

2)极限编程:打破程序员的“领地意识”

比尔·盖茨曾说过:“团队合作是企业成功的保证,不重视团队合作的企业是无法取得成功的。”我们不难发现,不少程序员对待自己的代码都有一种很微妙的状态:一种“领地意识”,即我负责我的模块,你负责你的模块,井水不犯河水。这种状态在工作中甚至是一种常态。


想让程序员突破这种状态,并不容易。于是我们将极限编程的工程实践运用在了研发工作中,比如采用结对编程、统一编码规范、实现代码集体所有权等等。


在团队初期时,新人较多,会采用“老带新”或“两个新人”结对编程的方式,在编程中互相提醒、协作。结对编程的频率也会增加。


随着频繁的结对编程,成员会从新手转为熟手或高手,彼此间更有默契,此时,大家能够拉齐到同一水平甚至更高的水平中。到了后期,固定的结对编程形式就会减少,并逐渐演变为更多的代码评审和设计评审。


在这一过程中,代码集体所有权也会逐渐深入团队成员的观念中,帮助团队更好地维护项目。

3)人才是公司最大的资产

大荣法则告诉我们:企业未来的生存和发展应着眼对人才的培养。春哥也一直非常重视人才的培养。

在团队中,不同性格成员的协作状态和成果各有千秋。春哥认为,通过规范化的流程,新成员可以迅速融入团队。而另一方面,也要关注团队成员的效能改进。


目前我们禅道自身的实践是:

让团队Leader为每位员工建立基线,重点关注研发过程中的缺陷及其密度。例如,分析一个人完成的故事点数与产生的Bug数,帮助员工了解自己的现状。接着,团队会分析缺陷率较高的原因,如设计不足或缺乏单元测试等,并针对性制定相应的行动路径。通过监控后续指标,评估改进措施的有效性。


“人才是公司最大的资产。”每个人都是天才,但如果要用爬树的能力来评价一条鱼,它也许终生都认为自己很愚蠢。每个团队都要学会制定个性化的改进措施,保障每位员工都能提升效能,促进组织的整体效能提升。

破解流程困局,创新实践

提及管理,绕不开的是流程、人、工具三方面。要想提高效能,需要好的流程、优秀的人才和合适可落地的工具。在春哥看来,“只靠流程规范和严格的纪律,如果没有工具支持,是无法成功的。”

于是,我们将禅道的工程实践融入工具中,通过工具将这些流程、行为固化下来,做到流程工具化,管理一体化。

1) AI辅助代码,从试点到未来常态

如今AI(人工智能)应用范围的不断扩大,在众多领域展现出强大的影响力和创新力。


春哥前段时间参加了微软的一场AI Day活动(详情可看: 微软 AI Day 半日游),活动里提到,目前很多企业正在通过各种AI工具辅助编码,并且代码采纳率能达到20%~30%的实践,这比例也是目前行业普遍的代码采纳率。


我们目前也正在通过代码生成工具进行小规模的编码试点,将开发环境切换至VS Code,然后通过WAM模式辅助生成代码。实践了一段时间后,从效果来看,其可行性也得到了验证。


所以,后续禅道研发团队会统一切换至VS Code环境中,充分利用大模型的能力辅助编码。我们还会将AI工具集成到我们的DevOps流水线中,更多运用AI工具进行辅助。未来,AI辅助编码的工作方式,将会是研发的工作常态。

2)自动化工具赋能研发管理
  • 编码规范,是团队技术精进的基石

无规矩,不成方圆。在编码上,禅道也有一套自己的规范。比如,我们会希望研发团队能进行渐进式的代码改动,能尽量小批量、频繁地commit代码,并且每次commit代码的行数不能超过20行。


不过在实际过程中,我们发现尽管在流程上做了很多规范,但依靠大家自发地执行,是难以监督的。春哥也提到:“指望整个团队自发地达成一个状态,几乎是不可能的事情。”


于是我们通过工具,将编码规范进行了固化落地。比如,我们在自研的DevOps平台中增加了“门禁”。当研发人员在本地commit时,会触发hook,对当前代码做diff。如果当前代码行数不能满足少于20行的要求,就不能成功提交代码。


分享我们研发团队在代码规范上的一些具体实践,希望能给大家一些启发。下图是我们的远程分支规范示例:
在这里插入图片描述


如图,大家可以很清楚直观地看到我们的规范,若是中长期的功能特性,我们会用Feature来作名称规范 ,补丁会用Patch ,并且必须带上 Bug ID 和Ticket ID,Bug修复用Minor等等。将流程实践固化,并用DevOps工具将流程工具化,这样既能便于领导层了解和跟进团队研发现状,也有助于新人快速上手,融入团队。


除了利用DevOps工具,固化研发流程,还可以通过自动化测试工具(比如禅道自研的ZTF自动化测试工具、ZenData数据生成器),在提高执行效率和覆盖范围的同时,尽可能保证研发的交付质量。

- 沟通,是管理的浓缩

被日本誉为“经营之神”的松下幸之助,曾言:“企业管理过去是沟通,现在是沟通,未来还是沟通。”如果没有人,那么前面的一切就没有意义。


为了团队更好地沟通,我们将工程实践与自研的聊天软件(禅道客户端)融合。比如,团队可通过聊天软件直接推送代码,使得团队可以随时进行代码评审,减少沟通成本,方便团队尽可能快地、能随时随地做持续集成。


上述这些举措,很多大厂都能做到,但显然,成本也会很高。对千千万万个像我们这样的中小企业来说,很难承担这种高额的实现成本。于是,我们团队在将这一整套研发流程跑通的同时,也将经禅道团队实践总结出来的、可落地的解决方案提供给大家。


换句话来说,实践出真知,只有经自身验证成功的实践,才能给用户带来切实可行的效益。


对企业管理来说,从来不是需要锦上添花,只有逆境突围,才更值得庆祝。

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

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

相关文章

STKMATLAB 卫星编队覆盖分析纯代码实现

任务描述 设置卫星编队(沿航迹编队,大斜视角,幅宽100km,下视角30,斜视角26),设置分析区域(中国全境),设置FigureOfMerit(展示覆盖率)…

skynet 入门篇

文章目录 概述1.实现了actor模型2.实现了服务器的基础组件 环境准备centosubuntumac编译安装 ActorActor模型定义组成 Actor调度工作线程流程工作线程权重工作线程执行规则 小结 概述 skynet 是一个轻量级服务器框架,而不仅仅用于游戏; 轻量级有以下几…

16现代循环神经网络—深度循环与双向循环

目录 1.深度循环神经网络回顾:循环神经网络总结简洁代码实现2.双向循环神经网络隐马尔可夫模型中的动态规划双向模型模型的计算代价及其应用总结代码实现1.深度循环神经网络 回顾:循环神经网络 如何将循环神经网络变深,以获得更多的非线性? 通过添加多个隐藏层的方式来实现…

Transformer中的Multi-head与Self-Attention机制解析——从单一关注到多元自省的效益最大化

Transformer中的Multi-head与Self-Attention机制解析——从单一关注到多元自省的效益最大化 Multi-head Attention与Self-Attention的核心思想 想象一下,你在读一本书,你想要同时关注到书中的多个角色和情节。多头注意力机制就是让你能够同时关注到多个不…

day14:01函数参数的使用

一、形参与实参介绍 【形参】:在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名 def func(x, y): # x1,y2print(x, y)【实参】:在调用函数阶段传入的值称之为实际参数,简称实参,相当于变量…

OpenEuler系统下——k8s离线安装部署

简介 K8S是目前已经是业界最为流行的开源技术框架,但是苦于其学习难度较大,并且初学者在开始的时候需要自己进行安装搭建部署,以供后续的学习使用,但是国内经常会出现无法访问外网的官方网站,导致很多镜像和依赖包无法…

uCore2020 lab1练习一作业

在线环境(无需搭建环境即可复现) 在线实验指导书uCore2020,有些章节无法访问 文章目录 lab1练习一1、操作系统镜像文件ucore.img生成过程init.o等文件的生成过程bin/kernal的生成过程bin/sign的生成过程bin/bootblock的生成过程bin/ucore.i…

搭建AI无人直播插件

在当今的数字时代,直播已成为一种极为流行的内容传播方式,而人工智能(AI)技术的飞速发展更是为直播行业注入了新的活力。 AI无人直播插件,作为这一趋势下的产物,不仅能够实现24小时不间断的直播内容生成,还能根据观众…

SpringCloud Alibaba 微服务(四):Sentinel

目录 前言 一、什么是Sentinel? Sentinel 的主要特性 Sentinel 的开源生态 二、Sentinel的核心功能 三、Sentinel 的主要优势与特性 1、丰富的流控规则 2、完善的熔断降级机制 3、实时监控和控制台 4、多数据源支持 5、扩展性强 四、Sentinel 与 Hystrix…

Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别

GenericJackson2JsonRedisSerializer 和 Jackson2JsonRedisSerializer 是 Spring Data Redis 提供的两种基于 Jackson 的 Redis 序列化器。 它们的主要区别在于序列化和反序列化的方式以及适用的场景。 GenericJackson2JsonRedisSerializer 序列化方式:在序列化对…

为Mac配置Alfred

参考资料: Alfred神器使用手册 | louis blogMacOS神器之Alfred workflow概览GitHub - arpir/Alfred-Workflows-Collection: 一些好用的 Alfred Workflow 一、修改快捷键 Spotlight的默认快捷键是Command Space Alfred的默认快捷键是Option Space 可以将Alfred和…

[网络编程】网络编程的基础使用

系列文章目录 1、 初识网络 网络编程套接字 系列文章目录前言一、TCP和UDP协议的引入二、UDP网络编程1.Java中的UDP2.UDP回显代码案例3.UDP网络编程的注意事项 三、TCP网络编程1.TCP回显代码案例2.TCP多线程使用 总结 前言 在学习完基础的网络知识后,完成跨主机通…

关于 OSPF LSA 序列号范围 0x80000001-0x7FFFFFFF 释疑正本清源

注:机翻,未校对。 正本:RFC 2328 OSPF Version 2 中相关解释 April 1998 12.1.6. LS sequence number 12.1.6. 序列号 The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate LSAs. The space …

set,map(java)

前言:要了解set和map,首先需要对搜索树和哈希有一定的了解,才能进一步深入的了解set和map。 1.搜索树 (1)性质: 若它的左子树不为空,则左子树上所有节点值都小于根节点的值。 若它的右子树不…

事件如何驱动图表运行

状态流图如何响应事件 Stateflow图表仅在以循环方式响应事件时执行。 由于图表在单个线程上运行,因此基于事件发生的操作对该事件是原子性的。图表中由事件引起的所有活动都在执行返回到接收事件之前发生的活动之前完成。一旦事件启动了一个操作,除非被…

全网最全程序员接单网站

程序员客栈-领先的程序员自由工作平台-程序员兼职 (proginn.com) 闲鱼 - 闲不住,上闲鱼! (goofish.com) 猪八戒网-品质企业服务 就找猪八戒 (zbj.com) 电鸭社区-专注远程工作招聘交流-远程工作,从电鸭开始 (eleduck.com) 开源众包-百万开发者…

Java台球厅助教教练预约上门到店系统源码

🎱一杆在手,天下我有!台球助教教练预约系统,让球技飙升不是梦🚀 🎯【开篇:台球爱好者的福音来啦!】🎯 还在为找不到合适的台球教练而烦恼吗?或是想要在家就…

代码实践思考:C++和Python

起因 在人工智能工具日益强大的今天 如何更高效的进行代码学习 如何借助智能工具实现代码转换? 是否直接可以使用?为何? 如何实现不同的编程语言之间代码的无损转换? x86与arm C 云课五分钟-02第一个代码复现-终端甜甜圈C-CS…

GEE错误——文件导出的时候出现Error: User memory limit exceeded. (Error code: 3)

错误简介 在试图将我的表导出到资产文件夹,但出现了内存错误。我不知道我做错了什么。相同的脚本适用于其他年份。文件导出的时候出现Error: User memory limit exceeded. (Error code: 3) 函数 reduceToVectors(reducer, geometry, scale, geometryType, eightConnected,…

雪花算法的一些问题解析

前言 最近做项目,有些老旧项目,需要生成分布式唯一ID,不允许重复,此时如果要对其他中间件和数据库依赖小,那么就需要一套固定的ID生成规则,雪花算法就正当合适,当时Twitter就是用来存储数据库I…