文章目录
IPD的英文含义是Integrated Product Development,也就是“集成产品开发”,随着华为的成功及其在国内外知名度的提升,本着向标杆企业学习的精神,很多企业到华为取经,做IPD咨询,形成在各自细分领域的IPD应用体系。那么IPD到底是什么?简单来讲,IPD 是为了研发出满⾜市场需求的成功产品,并且让这些产品善始善终的⼀套理念、流程和⽅法论的集合。
和其他流⾏的新产品研发管理如精益制造(Lean Manufacturing)、⻔径管理(
Stage-Gate System)等相⽐,IPD 更侧重于保障新产品研发的成功率,它的核⼼概念包括:
1. 把新产品研当做⼀项投资决策
要从投资的⻆度看待新产品开发,强调⽤投资的理念和⽅法来管理新产品开发,主要包括对新产品开发进⾏投资组合分析和管理,以及在新产品开发过程中进⾏投资决策评审,做有价值的产品,投资市场⽬标成功的新产品。
2. 产品创新⼀定是基于真实市场需求和竞争分析的创新
IPD把正确定义产品概念、市场需求作为流程的第⼀步,围绕详尽的需求分析、市场分析,进⾏产品的战略决策与项⽬⽴项;
3. 可复⽤的平台和模块技术
技术研发与新产品开发实现分离,关键的技术和技术平台需要在新产品开发之前由专⻔的团队研发出来,并能够实现技术转化,实现“搭积木”式的新产品开发,缩短新产品开发周期和项⽬可控性;
4. 跨部⻔、跨领域的合作
为了产品开发的成功,IPD 强调产品研发流程由联合团队共同合作达成的,通过将开发、设计、⽣产、采购、市场、财务、运营等职能部⻔的成员组织成虚拟产品团队, 确保⼤家⽬标⼀致的达成;
5. 结构化的并⾏研发流程
建⽴结构合理、定义清楚的、端到端的跨部⻔的研发流程,新产品开发的各项技术活动和职能活动并⾏作业,⼀开始各⽅⾯的⼈员就参与进来,采⽤并⾏⼯程,以缩短研发周期,保证新产品质量,保证新产品业务⽬标成功;
6. 升级组织
由原来职能模式下纵向的单⼀绩效管理模式,⾛向基于纵、横⽹络状绩效管理。
IPD 产品管理体系包括了产品需求管理、市场管理、产品⽴项管理和产品开发管理四⼤核⼼模块:

从需求管理到市场分析,到确定产品线的战略规划,到⽴项,到最后狭义的 IPD 研发流程,运⽤ IPD产品管理体系进⾏产品开发,也是⼀个不断重复 PDCA 过程的循环。
如果单独分拆各个模块,每个模块在 IPD ⾥,都有⽐较完整的次⼀级的流程和⽅法论。 针对需求管理,引⼊需求收集、需求分析、需求分配、需求执⾏和需求验证这⼏个关键步骤:

在每个关键步骤⾥,⼜可能搭配⼀系列的⼦流程来⽀撑,⽐如单看需求分析,⼜是由需求解释、过滤、分类、排序等⼏个环节组成。每个环节之下,还可能有对应的⼀系列⽅法论,⽐如对于需求分类,⼜可以按紧急程度、按涉及范围、按⽤⼾价值等多种分类⽅法对需求进⾏分类。
再来看 IPD 中的市场管理,可以拆解成细分市场分析、组合分析、业务计划、IPMT 评估等步骤,每个步骤下⼜包含对应的⼦活动,以及相应的⽅法论:

通过 市场管理进⾏战略定位后,企业会输出对应的产品路线图,并且根据路线图进⾏⽴项管理。 根据需求来源,⽴项可以分为⾃主项⽬和定制化项⽬两种,分别对应不同的⽴项管理流程。
最后才会来到狭义的 IPD 产品开发管理环节,对应的是两个核⼼跨部⻔团队(IPMT、PDT),⼀⼤流程(概念设计、产品计划、产品开发、验证、发布、⽣命周期管理)和⼀系列关键决策点:

通过简单的分析可以看出来,在 IPD 核⼼概念周围,是⼀个庞⼤的体系来⽀撑 IPD 在企业和组织内的运转,每个引⼊ IPD 研发管理⽅法的企业,都会对这些核⼼模块进⾏调整和裁剪,⽐如有些企业会引⼊ IPD 产品营销管理模块,或者 IPD 质量管理模块,因此,IPD 也是⼀个随着组织不停迭代的动态变化的体系,企业结合自身现状进行IPD产品管理实践,才能为企业的业务发展创造价值。
最后,要提醒各位的是“先僵化,再固化,后优化”,华为经过将近20年的消化、吸收以及优化迭代,才将其覆盖应用到全部产品线,使其成为最有竞争力和扩展力的企业。IPD的引入和落地不是一蹴而就的,需要经过长时间的优化迭代才能见其成效。同样,对于企业家来说,需要建立宏观的体系概念,才能使整个IPD流程处于可控、可调用的状态,才能使流程体系成为企业使命和战略的“使能器”。
参考文献:
【1】IPD:华为研发之道,刘选鹏,2018.6月
【2】华为能,你也能:IPD产品管理实践/石晓庆,卢朝晖著.—北京:北京大学出版社,2019.10
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我在某些代码中遇到了三元组,但我无法理解条件:str.split(/',\s*'/).mapdo|match|match[0]==?,?match:"somestring"end.join我确实理解我是在某些点上拆分字符串并将总结果转换为数组,然后依次处理数组的每个元素。除此之外,我不知道发生了什么。 最佳答案 一种(稍微)不那么令人困惑的写法是:str.split(/',\s*'/).mapdo|match|ifmatch[0]==?,matchelse"somestring"endend.join我认为多行三元语句很糟糕,尤其是
有没有人成功地将S3存储桶读取为子文件夹?文件夹1--子文件夹2----文件3----文件4--文件1--文件2文件夹2--子文件夹3--文件5--文件6我的任务是读取文件夹1。我希望看到子文件夹2、文件1和文件2,但看不到文件3或文件4。现在,因为我将存储桶键限制为prefix=>'folder1/',你仍然会得到file3和4,因为它们在技术上具有folder1前缀。似乎真正做到这一点的唯一方法是吸收folder1下的所有键,然后使用字符串搜索从结果数组中实际排除file3和file4。有没有人有过这方面的经验?我知道像Transmit和Cyberduck这样的FTP风格的S3
关于yolov5训练时参数workers和batch-size的理解yolov5训练命令workers和batch-size参数的理解两个参数的调优总结yolov5训练命令python.\train.py--datamy.yaml--workers8--batch-size32--epochs100yolov5的训练很简单,下载好仓库,装好依赖后,只需自定义一下data目录中的yaml文件就可以了。这里我使用自定义的my.yaml文件,里面就是定义数据集位置和训练种类数和名字。workers和batch-size参数的理解一般训练主要需要调整的参数是这两个:workers指数据装载时cpu所使
我在理解GrapeAPI时遇到很多困难,特别是route_param以及它如何仅使用params。考虑这段代码:desc"Returnastatus."paramsdorequires:id,type:Integer,desc:"Statusid."endroute_param:iddogetdoStatus.find(param[:id])endend这个街区产生什么路线?我知道这是一个get请求,但为什么它被包裹在route_paramblock中?为什么它不能在paramsblock中? 最佳答案 你的block产生这条路线: