ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CBB公用基础模块:IPD体系下破解重复造轮子、提升研发效率的关键机制

CBB公用基础模块:IPD体系下破解重复造轮子、提升研发效率的关键机制 这些年接触不少做研发管理的企业聊到产品开发效率几乎人人都知道“重复造轮子”是顽疾但真正敢动刀把“轮子”统一管起来的企业并不多。原因不复杂技术上拆公共模块没那么难难的是组织习惯和流程制度能不能跟着变。这篇文章要聊的CBBCommon Building Block公用基础模块就是IPD体系里专门对付这个问题的核心机制。CBB的概念直译过来是“公用基础模块”但它在实际运作中远不止“公共代码库”这么简单。它是产品平台战略的落地载体是实现异步开发的关键支撑也是企业从项目制思维转向平台化思维时最绕不开的一步。看完这篇文章你会理解为什么CBB能实现资源共享、缩短开发周期、降低成本也会知道从零开始搭建CBB管理体系时该怎么识别、怎么入库、怎么考核、怎么避开那些常见的坑。这篇内容适合研发总监、产品经理、项目经理以及所有对IPD体系感兴趣、正在琢磨怎么把产品开发效率提上去的同行。1. CBB到底解决什么问题——先看清研发管理的三个死结1.1 重复造轮子背后的成本黑洞我见过太多企业是这样的状态A产品线做一个电源模块B产品线也做一个电源模块C产品线又做一个三个模块功能几乎一致只是封装不同、接口略有差异、代码风格完全不同。每个项目组都从零开始每一行代码都是成本。而产品经理们各自汇报时都觉得自己的模块“有特殊需求”实际上真正特殊的地方可能只占10%。这里有一个成本模型可以算得很清楚重复开发成本 重复开发的模块数量 × 平均开发人月成本举个例子。一个通信设备企业有6个产品线每个产品线都需要一个“远程升级管理模块”。如果每个产品线单独开发假设每个模块需要2个人做3个月也就是6人月6个产品线合计就是36人月。按一个研发人员的综合成本2万元/人月来算光这一个模块企业就花了72万元。而把这36人月砍掉一半以上正是CBB存在的意义。更麻烦的是重复开发带来的成本不止是钱。每个“独立版本”的模块还意味着后续要分别维护、分别修bug、分别做安全补丁。版本一多维护成本是指数级上升的。很多企业研发团队人不少但活一直干不完原因就在这里——大量人力被消耗在低水平重复建设上。1.2 从“项目制思维”到“平台化思维”的转变想推行CBB首先要完成一个思维上的转身从“每个项目都应该拥有一切”转向“项目只做差异化共性部分交给平台”。传统的项目制思维是这样的每个项目经理都希望自己团队又全又能干从驱动层到应用层全部自己写这样“心里有底进度可控”。但这种做法放在产品线多、产品迭代频繁的企业里就成了灾难——每个人都从零开始每个人都重复发明同一个轮子。平台化思维则不同。它把产品拆成两个层面一个是稳定共享的平台层一个是快速变化的差异化层。平台层里沉淀的就是CBB它是经过验证、反复复用、稳定可靠的公共模块。项目团队在做新产品时默认动作是先看CBB库里有啥可用的再决定自己还要开发哪些增量部分。这个转变还牵出一个IPD体系里的重要概念——异步开发。公共模块的开发和产品项目的开发可以“异步”进行CBB的开发更早启动、节奏更稳定而产品项目则聚焦于用户可感知的差异化功能在后期像搭积木一样组合CBB完成交付。这个概念有点像盖精装房和标准构件的关系先统一预制好标准门、标准窗、标准厨卫模块具体项目做户型设计时直接选用而不是每个楼盘都重新烧砖。1.3 CBB在IPD体系中的定位IPD体系有一整套要素客户需求管理、投资组合管理、结构化流程、异步开发、CBB、技术评审、跨部门团队等。CBB不是孤立的一个技术库它是和流程、组织、考核绑在一起运转的机制。具体来说CBB在IPD中扮演三个角色它承接着产品路标和技术路标把技术规划落到可复用的模块上它支撑着异步开发模式让公共部分先走一步产品项目在后面加速它也是产品数据管理的源头之一每个产品BOM里的公共模块部分都来自CBB库从而驱动采购、制造、服务的标准化。所以如果只是让研发团队把公共代码传到共享文件夹里那不叫推行CBB那顶多叫代码共享。真正的CBB管理需要一套从识别、开发、入库、应用到维护的完整循环。这也是这篇文章后面要展开讲的几条关键链路。2. CBB的分类层次与识别方法——搞清楚哪些东西值得做成公用模块2.1 CBB的四个层次从元器件到整机平台很多企业一提CBB就想到软件模块其实 CBB是一个覆盖硬件、软件、结构设计、系统方案的宽口径概念。按颗粒度可以分成四个层次层次举例共享范围管理重点元器件级标准电阻电容、标准电源芯片选型全企业通用优选物料清单AVL统一部件/模块级电源模块、通信接口模块、显示驱动模块产品线内或跨产品线接口标准化、设计与验证复用子系统级主控子系统、射频前端子系统同一技术平台下多个产品架构一致性、关键接口定义整机平台级标准化机箱平台、软件基础平台所有同类型产品平台版本规划与生命周期管理不同层级的CBB管理方法差别很大。元器件级靠的是优选物料清单和采购策略模块级靠的是设计规范和技术评审子系统级靠的是系统架构师的统一规划。整机平台级则上升到产品平台战略往往由公司最高层的技术委员会拍板。我在实际企业辅导中遇到过这样的情况有些企业一开始就想做“大而全”的平台比如把所有产品的操作系统统一到一个自己研发的超级内核上结果搞了两三年产品业务都被拖累了。正确的做法恰恰相反——从元器件级和模块级入手见效快、阻力小有了成功案例再往更大颗粒度推进。2.2 从BOM结构倒推候选CBB识别CBB最实用的办法不是拍脑袋而是从产品BOM里面“淘”。操作流程可以这样走把现有主要产品的BOM全部导出来汇总到一个表里。按功能模块对物料和组件进行归类比如“电源”“通信接口”“人机交互”“数据存储”。横向对比找出在不同产品中反复出现的同类功能模块。计算每个候选模块的共享潜力排序后确定优先建设清单。这里分享一个我常用的评估参数共享潜力 当前使用该模块的产品数 × 预计未来3年采用该模块的新产品数 ÷ 该模块的差异化变种数量这个公式表达的核心逻辑是一个模块值不值得做成CBB要看它未来被复用的次数够不够多同时差异化变种越少越好。如果当前有3个产品在用未来还有5个新品计划用但企业内部已经有7个五花八门的变种那首先要做的是收敛变种而不是在变种之上再建一个标准模块。另一个判断维度是模块的稳定性。如果一个模块的需求半年一变、每次都不一样那短期内不适合做CBB因为做了也很快过期。CBB的候选对象通常是那些需求相对稳定、技术相对成熟、通用性强的功能。2.3 用评估矩阵排出优先级识别出候选CBB后怎么排序我常用一个简单的二维矩阵横轴是标准化潜力纵轴是业务共享潜力。高共享潜力 × 高标准化潜力优先做这是CBB建设的核心对象。投入产出比最高一定要集中资源拿下。高共享潜力 × 低标准化潜力可以做但要先做标准化工作比如统一接口、规范参数模块本身可能涉及多种技术路线需要架构委员会先裁决。低共享潜力 × 高标准化潜力建议做但优先级可以往后放。标准化潜力高说明技术上不难共享性不够就意味着经济价值有限可以做但别占用太多资源。低共享潜力 × 低标准化潜力不做。这类模块属于高度定制化内容硬做成CBB只能给未来产品添乱。这个矩阵的价值在于它避免了“人人都说自己的模块重要”这种局面。用两个维度摆事实该做不该做一目了然决策效率高很多。3. 从识别到落地CBB管理体系搭建的五个步骤3.1 规划层CBB路标与产品路标对齐CBB建设的起点不是“咱们整理一下代码”而是产品路标和技术路标。你首先要清楚未来3到5年企业要做什么产品、用到哪些技术、哪些部分是多个产品共用的才能决定CBB朝哪个方向建。一个简化的规划流程是这样的产品线分别输出产品路标明确未来几年的产品规划。技术委员会汇总各路标抽取共性技术需求形成技术路标。从技术路标里识别哪些能力需要以CBB方式承载明确CBB建设优先级和期望可用时间。形成CBB路标纳入公司级研发投资计划。在这个环节最容易犯的错是CBB规划变成研发部门自娱自乐——架构师觉得某个技术热门、某个模块漂亮就立项去做结果做出来跟产品路标对不上没人用。要规避这个问题必须坚持一个原则CBB路标上的每一项都要能指到至少一个产品路标上的具体项目指不到的要么删除要么等产品规划明确了再说。3.2 开发层CBB的开发、评审与入库CBB的开发流程和一般产品开发很相似但有它的特殊要求。建议在IPD流程框架下走独立的CBB开发流程关键环节包括立项申请提交CBB建设申请说明共享前景、目标使用者、技术方案和预期收益由产品与技术委员会审批。设计与开发按正式项目运作有指定负责人、有资源预算、有里程碑节点。CBB开发要有比普通项目更严格的架构设计评审因为它要服务多个产品接口设计的质量决定了后续扩展的空间。验证测试CBB必须经过充分的测试验证包括功能测试、性能测试、兼容性测试。一个CBB一旦被多个产品使用缺陷修复的成本会放大很多倍所以入库前的验证再严都不为过。入库归档评审通过后CBB的设计文档、源代码、测试报告、使用说明、参考设计等资料全部归档到CBB库统一版本管理。从这一刻起它才算正式成为企业资产。这里特别提醒一点CBB的代码和文档质量要求要比普通项目代码高一个等级。我在评审CBB时文档规范性和接口完整性是硬指标哪个不达标直接打回。有些团队觉得“先把代码传上去文档后续补”这个习惯一定要改否则后面的使用者根本不敢用、不会用CBB库最终会变成一个垃圾堆。3.3 应用层强制使用与例外管理CBB建设最容易死在“没人用”这一步。要让CBB真正跑起来光靠自觉不行必须靠制度。我见过做得比较好的企业是这样干的在产品立项阶段产品经理和系统工程师必须完成一份“CBB使用承诺书”逐项填写本产品将使用哪些已有CBB、有哪些CBB需要新建、有哪些计划外需求。这份承诺书是项目立项评审的必审材料。项目结束后的复盘会议上还要拿实际使用情况和当初承诺对照如果承诺了用的CBB没用到要说明原因没有合理理由的要记入项目绩效的负面项。与之配套的是例外管理机制。允许不用CBB的情况主要有以下两种已有CBB无法满足关键性能指标且改进CBB的成本高于新建模块的成本CBB的版本与产品需求不兼容且影响紧急交付。无论哪一种都需要走正式的“例外申请”流程由技术委员会评审裁决。如果例外申请被批准并完成了新模块开发这个新模块还应该被反向吸收进CBB库而不仅仅留在项目中。这个机制的意义在于它既保证了CBB能被优先使用又给了合理创新和特殊需求一条出路不至于让制度僵化。3.4 维护层生命周期管理与版本演进CBB不是一次开发完就一劳永逸了。它有自己的生命周期初始导入期、快速成长期、成熟稳定期、衰退淘汰期。生命周期管理要做三件事定期评估CBB使用率与健康状况连续多个周期没有新增使用的CBB要评估是需求消失还是推广不力该优化的优化、该淘汰的淘汰。版本管理CBB的版本升级必须坚持向后兼容原则。非兼容性变更一定要走严格变更审批评估所有在用产品的影响规划好切换窗口。我见过一个典型事故某个CBB版本从V1.0升级到V2.0接口变了开发团队没通知使用方就直接覆盖了库里的版本结果三个在研产品集体编译失败。你永远要假设使用CBB的团队不会第一时间注意到版本变化所以版本升级必须有明确的通知和迁移路径。技术债务清理版本迭代中会积累临时补丁、兼容性代码要定期重构保持CBB的可维护性。3.5 组织保障CBB管理责任主体说实话我见过太多企业CBB搞得轰轰烈烈最后不了了之根本原因是没人在组织层面为这件事负责。CBB管理需要明确的责任主体角色主要职责架构委员会/技术委员会审批CBB规划裁决架构争议和例外申请CBB经理每个CBB指定负责CBB的规划、开发、推广、维护和版本管理CBB库管理员负责CBB库的日常管理、资料审核、数据统计分析各产品线CBB接口人负责产品线内CBB需求收集、使用推广和问题反馈CBB经理这个角色非常重要。每一入库的CBB都必须有一位指定的负责人不能“库里有模块没人管它死活”。CBB经理的绩效里要有明确的复用指标比如“本年度被5个以上新产品使用”不然的话模块交了、人就跑了后面维护、答疑全没人管。4. 用数字说话CBB推行成效的度量与考核4.1 关键度量指标有不少企业推行CBB之后管理层最关心的问题就是到底省了多少钱效率提升了多少这个问题不能凭感觉回答得靠指标。我建议重点跟踪四个指标CBB覆盖率实际使用的CBB数 ÷ 应使用的CBB数 × 100%。这个反映的是“制度落实得怎么样”。CBB共享率产品BOM中CBB的产值或数量占整个BOM的比例。这个反映的是产品对公用模块的依赖度。CBB复用度某个CBB在一段时间内被多少个产品项目使用。这个反映每个CBB的利用水平。产品开发周期改善率推行CBB前后产品中CBB相关部分的开发周期变化。前两个指标偏管理口径后两个偏经济口径。在实际运营中我建议至少每月出一份CBB运营简报包含这些指标的月度变化趋势管理层每月看一次持续推进就有了抓手。4.2 用实际案例算一笔账为了让你更有体感我做一道简化计算题。假设一家企业有三个产品线每个产品线都需要一个“通信协议栈”之前都是各做各的方案一不推行CBB每个产品线自研各投入120人天。三个产品线合计360人天。方案二推行CBB成立一个CBB项目组一次性投入150人天开发公共协议栈后续三个产品线各花10人天适配接口。合计180人天。算下来三个产品线做完就节省了180人天节省率50%。这还没算后面的维护成本方案一有三个版本要分别维护方案二只需要维护一个版本。如果再算上第4个、第5个新产品进场时的边际成本节省就更明显了。注意这个例子还算保守的。通信协议栈属于高复用、高复杂度模块如果放到那些有6到8个产品线、模块共性更强的企业节省的倍数还会放大。所谓“缩短开发周期、降低成本”不是一句口号是一笔笔算得清的账。4.3 激励机制的设计CBB推行有个天然的组织难题开发CBB的团队花了人力用CBB的团队得了好处。如果激励不跟上第一年还有人愿意干“公共活”第二年就没人愿意了。比较好的做法是三个激励杠杆同时用对CBB开发团队将CBB被复用次数作为绩效加分项。例如一个CBB被5个产品使用CBB经理和核心成员可以获得晋升、评优上的倾斜。对使用CBB的产品团队使用CBB节省的自研工作量不计入“削减编制”的依据。要保证团队不会因为用了CBB反而被公司觉得“人多了”。这个点很微妙但很现实要把使用CBB变成团队乐意做的事。设立公司级CBB专项基金在年度预算中单独列支CBB开发费用不让CBB团队跟产品线去抢资源。三重激励机制下CBB才能从一个“上面压下来的任务”变成一个“大家抢着做的香饽饽”。5. CBB推行过程中的常见误区与实操避坑5.1 误区一把CBB做成部门私有资产这是我踩过最深的坑。某次辅导一家企业他们技术中心确实花了大力气建了CBB库里面有三十多个公共模块。结果一年下来一统计能被其他产品用的连三分之一都不到。仔细一查发现核心问题不在技术而在部门利益——CBB团队隶属于某产品线他们建CBB首先服务自己的产品其余产品线要用优先级永远排最后甚至连库的账号权限都卡得很死。踩了这次坑之后我的原则很明确CBB的所有权必须归属公司层级而不是部门层级。具体的做法是CBB的研发投入由公司级预算承担账不走产品线CBB库的访问权对所有产品线开放CBB的优先级排序和仲裁由跨部门的技术委员会负责。这样做的目的就是让公共资源真正公共起来。5.2 误区二过度标准化导致创新受阻CBB推行过头也会有副作用。我曾见过一家企业为了“统一平台”把瑶产品上不该统一的显示逻辑也强行做成CBB了结果后续好几个新产品的差异化需求无法落地产品经理急得跳脚市场竞争力明显下降。问题的根源是混淆了“标准化”和“一刀切”。CBB的边界设计应该区分稳定核心例如通信协议、数据加密、底层驱动这些做CBB追求稳定和复用扩展可变例如界面逻辑、业务规则、部分算法参数这些要预留扩展点CBB只定义框架和接口不锁死具体实现。如果把CBB设计成铁板一块就等于把产品的创新能力也一起“标准化”了。在CBB架构评审时我一定会问一个问题这个模块预留了哪些扩展点如果答不上来评审就不通过。5.3 误区三CBB库建了却没人用“入库了”和“有人用”之间隔着一条巨大的鸿沟。很多企业把CBB做成了内部的“神秘代码”资料放上去就没人管了结果新产品开发时研发人员根本不知道有这个东西或者知道了也看不懂怎么用。要打破这个局面关键是降低使用门槛。每个CBB入库时必须附带四件套使用指南、参考设计、样例代码、常见问题FAQ。而且每个CBB要有一位技术支持联系人使用者有问题能直接找到人答疑。另外我建议每个季度组织一场CBB使用培训请用得好的项目团队来分享经验。别小看这个动作它解决的不仅是“怎么用”的技术问题更是“要不要用”的意愿问题。研发人员一旦亲眼看到别人用了CBB之后省了两个月的开发时间下一次他自己就会主动去库里翻。5.4 几个实操层面的个人体会最后分享几条我在实际推行CBB时总结的经验不一定都写在教科书里但很管用。第一CBB库不要一开始就追求“大而全”。先挑两三个重复开发最严重的模块做样板做出成功的应用案例再逐步推广。看到的收益才是最好的动员令。第二每个CBB必须指定维护责任人哪怕他同时还有产品开发任务。没有责任人的CBB三年内基本会变成没人敢用的僵尸模块。第三CBB的版本管理要跟公司的配置管理系统打通。我用过的比较顺的组合是CBB库做资产索引和申请分发配置管理工具做代码托管和版本控制。两者缺一不可纯靠共享文件夹管理CBB用不了多久就乱成一锅粥。第四评审环节要舍得投入时间。CBB入库评审和CBB架构评审至少要请到两个以上不同产品线的技术骨干参加一个人说了算很容易做出“自我中心”的设计。第五CBB推行不要只盯着研发要和采购、制造、服务部门联动。当一个CBB被多个产品使用后它的物料采购规模会变大供应商议价空间也会增加制造工艺可以统一售后服务备件也只需备一种这些协同收益比研发内部节省的人天更可观。这也是CBB“降低成本”四个字的完整含义。推行CBB这件事最难的不是那套流程写出来、工具配上而是企业能不能坚持三五年不放松。头一年往往是投入多、产出少第二年开始有项目尝到甜头第三年才逐渐显现复利效应。把这个长期仗想清楚了制度设计再跟上剩下的就是耐心和坚持。希望这篇梳理能给正在推行IPD和CBB的同行们一些实实在在的参考。
返回列表