写点什么

软件摩尔定律背后的几个常识(下)

  • 2020-04-03
  • 本文字数:1642 字

    阅读完需:约 5 分钟

软件摩尔定律背后的几个常识(下)

减少信息传递过程中的偏差和损耗

有段时间“高中生编码”的说法甚嚣尘上。单纯从写代码的要求看,高中生也未必是不行,但有两个前提:


1、 前端的需求分析、架构设计和模块设计都是正确的,不需要返工,否则要等几个月甚至大半年,从后端发现问题再去修正,成本就高了;


2、 从分析、设计到编码,每个环节的信息传递都没有偏差和损耗。


可以说,这两点都不符合软件的生产客观规律。前端的分析和设计一定会存在错误,不同环节人和人之间信息的传递,一定会有偏差和损耗。全功能团队,就是减少这个偏差和损耗。

全功能团队有两层含义:

01 独立交付

可以做到独立交付,问题快速闭环,充分发挥团队的选择权(人、架构甚至编程语言等)和创造力。

02 原有的角色分工

原有的角色分工,SE 负责设计,MDE/SWE 负责编码,TE 负责测试。分工细化有利于专业化运作,各领域深耕。但也不可避免地带来扯皮、交接损耗,前期埋下的问题也得不到及时的发现和纠正。


全功能团队打破这个分工,SE 负责价值分析和架构设计,特性模块级设计、编码、功能级验证都由 MDE/SWE 完成,TE 负责面向商用场景和客户的系统级验证。特性端到端负责,减少不同环节之间信息传递的损耗和偏差,减少浪费。


全功能团队的前提是特性解耦,不但是开发态的解耦,而且是运行态的解耦,解耦减少开发团队之间的等待和依赖。角色分工优化是减少开发团队内部的等待和依赖,还减少开发人员之间信息传递的偏差和损耗。


全功能团队 E2E 地负责需求分析、设计、开发、测试、交付,在全功能团队之外,还可以有个集中的架构师团队(AM),负责核心架构、运维框架、安全框架、分布式仓库等公共设计的编码,看护好全系统。



如果说服务化开发模式是从横向减少了开发者之间的依赖,那么全功能团队就是从纵向减少 SE、开发、测试之间相互传递的依赖。早期推行全功能团队,困难重重。因为在传统敏捷开发模式下,难以做到运行态解耦,每个开发团队都要集成整个版本后才能验证自己的特性,从某种程度上是降低了效率。服务化开发模式,让开发团队的验证范围聚焦在自己负责的特性,极大降低了集成和验证的工作量,释放了真正的全功能团队的生产力。


对开发人员的干扰 让开发人员聚焦在编码

分时多任务并行处理是软件技术发展史上的一个革命,但对于软件开发人员来说,多任务并行处理不是一件好事。微软曾针对“工作打断”做过调查,一个人平均每小时有 4 次被中断,就会产生厌恶情绪,当中断超过 3-5 分钟后,需要花费 23 分钟把注意力重新调整已经分配好的任务上来。


为什么有那么多被中断?主要是几个原因:


1、 由于特性和架构的不解耦,开发人员在周边的协作、支撑和扯皮工作占比非常高。有统计说开发人员只有 30%的时间在编码,70%的时间在忙于扯淡。电话、邮件、即时通讯工具、线上会议等的便捷也让“中断”更加随意和低成本,但结果却是高成本;


2、 开发过程流的信息不自动,不透明,获取不方便,PL 项目管理靠“肩挑手扛”,耗时耗力,在事务管理上的投入过多。PL 不编码,同时对员工的干扰也增加;


3、 精兵滥用。精兵因为优秀,处理各种事务都比较擅长,经常被滥用。各种攻关、定位、扯皮的事情占据了大部分时间,而让精兵真正投入特性开发的时间反而很少。


为减少被中断,架构上解耦是根本,但在解耦的过程中,有些管理手段也可以使用。比如:


1、设置静默时间。静默时间内,UnPlug,不处理电话、邮件、即时通讯工具、线上会议,不干扰开发人员,让开发人员每天 3-5 小时集中的核心编码时间;


2、建立项目团队精益看板,实现团队所有任务的可视化管理、流动性管理、并拉动式开发。这样在计划制定时,不必是传统的任务分配式计划制定,而是根据价值优先进行拉动式开发;在项目任务跟踪管理时,也不必是传统的“盯人盯任务”管理,只需要通过可视化的看板,了解整体的特性/需求的进展情况即可;


3、成立微战队,通过架构松耦合,组织适配,协作分工,把技术讨论和问题在更小的循环闭环,更快速有效。


本文转载自华为云产品与解决方案公众号。


原文链接:https://mp.weixin.qq.com/s/Az4UGpMqKBp00Y4f83QalQ


2020-04-03 13:29823

评论

发布
暂无评论
发现更多内容

从噪声数据中发现可解释的常微分方程

qife122

机器学习 常微分方程

任务嵌入软注入技术超越基于提示的上下文学习

qife122

自然语言处理 任务嵌入

多模态统一框架:基于下一帧预测的视频化方法

qife122

深度学习 多模态学习

自研 DSL 神器:万字拆解 ANTLR 4 核心原理与高级应用

Java随想录

编译 #java

自动化规划工具优化工单分配效率

qife122

混合整数非线性规划 分支定界法

自适应集群协作提升大语言模型医疗决策支持能力

qife122

人工智能 医疗决策支持

在AI技术快速实现创意的时代,挖掘新需求成为关键——某知名Windows依赖分析工具需求探索

qife122

需求分析 Windows开发

2020年Q1/Q2机器学习研究奖项公布

qife122

机器学习

数据资产是什么?

镜舟科技

数据分析 数字化转型 数据资产 StarRocks 湖仓一体

基于增强与迁移学习的糖尿病视网膜病变分级方法

qife122

深度学习 迁移学习

JT-Math:大语言模型高级数学推理的多阶段框架

qife122

强化学习 大语言模型

华为云云服务高级顾问叶正晖:华为对多模态大模型的思考与实践

数新网络官方账号

NeurIPS 2022机器学习论文精选

qife122

机器学习 算法公平性

某机构测试新型"氛围编程"工具Opal

qife122

AI编程 应用生成

IK 字段级别词典升级:IK reload API

极限实验室

ik easysearch

2025 CDEC高峰论坛:HarmonyOS技术赋能,鸿蒙游戏领启未来

最新动态

个性化联邦学习提升客户体验

qife122

联邦学习 边缘计算

某中心将举办机器学习峰会

qife122

机器学习 数据科学

e&公布2025年上半年合并净利润增长60.7%,达88亿迪拉姆

财见

后量子密码学的真正价值:超越量子威胁的密码革新

qife122

网络安全 密码学

NSF与某机构公布AI公平性资助项目

qife122

人工智能 算法公平性

2025年7月文章一览

codists

Python

ROS系统MoveIt玩转双臂机器人系列(二)--生成MoveIt配置包

芯动大师

movel

什么是列存储(Columnar Storage)?深度解析其原理与应用场景

镜舟科技

数据分析 StarRocks 湖仓一体 列存储 延迟物化

AppCenter iOS SDK 核心组件库

qife122

ios 日志收集

量子计算新突破:Ocelot芯片实现高效纠错架构

qife122

量子计算 超导电路

Go 泛型“黑话”:any 和 interface{} 完全一样吗?

十三Tech

StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南

镜舟科技

数据分析 Clickhouse StarRocks 湖仓一体 OLAP 引擎

如何选择优质漏洞赏金项目并赚取丰厚奖金

qife122

网络安全 漏洞赏金

Bookstore靶机实战:从Web枚举到REST API模糊测试的完整攻破

qife122

渗透测试 API安全

Magnifier:交互式反编译的实验性工具探索

qife122

LLVM 反编译

软件摩尔定律背后的几个常识(下)_文化 & 方法_华为云产品与解决方案_InfoQ精选文章