现状
计算机相关的领域技术日新月异、充满了机会,我们经常收到企业领导、研发主管、工程师的各种需求,很大一部分希望改变当前混沌的工程现状,让自己的信息化工程、系统工程、软件工程更靠谱些!而当前可用参考和采用的各种方法论、技术、过程、工具太多了,选择哪个合适呢,或者怎么组合为适合自己的呢?
复杂问题的解决需要“化繁为简”。我们应该首先找到一个基本的视角维度,把多个维度的问题都映射到这个基本维度上,然后基于基本维度、把各个维度的问题逐一解决。那么,什么是工程的基本的维度呢?下面逐一列出工程的各种可能维度:
市场、产品、项目、进度、成本、质量、人、技术、过程、工具 |
大家可以思考一下:哪个重要呢?
有的同学会说是市场,没有市场什么都白搭;
有的同学认为是产品,因为产品才是交付给客户的最终成果;
有的同学选择过程,因为什么样的过程就会导致什么样的结果;
有的同学说是项目,因为项目一下就聚焦了三个要素(进度、成本、质量);
有的同学说技术,因为技术决定产品的含金量和门槛;
有的同学会说是质量,因为有质量的产品对用户才有意义;
有的同学会说是工具,因为工具决定了我们的能力和效率;
这很像盲人摸象,大家都从自己的角度说,都有自己的道理,那么到底什么是基本维度呢?
工程哲学:以人为本
我的看法是:人是工程的基本!因为:
市场是人的需求形成的;
产品是给人做的;
项目是人做的;
人能掌握的技术才有实用性;
人能执行的过程才能落地;
人能使用的工具才是好工具。 |
所以工程的价值观可以是"以人为本", 有5个基本原则:
看人行:看看工程师和用户的真实的工作情况;
听人言:倾听工程人员和用户来自一线的反馈;
知人难:真实的感受他们的难处;
做人事:给他们推荐具有可执行性的流程和任务;
说人话:用大家能够听懂的语言交流。
|
为了好记,姑且把这个叫做"五人原则"。
工程问题的解决,离不开对工程环境的培育。工程环境何尝不是一种"社会":以大多数人的幸福为目标、生产力和生产关系互相作用,推动社会不断进步。社会很复杂、需要一个简单的基础,那就是"诚信"。诚信所带来的人与人之间的真实交流与信任,是工程秩序和工程效率的基础,我们的努力才有共同的意义。
为了好记,需要起个通俗的名字,就把这个叫做:"以人为本"的工程哲学吧。
工程哲学:以人为本 |
工程价值观:以人为本
工程基本原则:
看人行:看看工程师和用户的真实的工作情况;
听人言:倾听工程人员和用户来自一线的反馈;
知人难:真实的感受他们的难处;
做人事:给他们推荐具有可执行性的流程和任务;
说人话:用大家能够听懂的语言交流。
工程基础:诚信
|
|
|
确定了“以人为本”的工程哲学,我们不想止步于只是强调人的思想、感知、沟通、协作。而是希望用知识、技术、工具把人武装起来,这样才能实现真正的工程能力。所以在这里:
我们将把工程中的各种人员,抽象为比较常见的几个角色
然后从这些角色的视角,组织工程的各种资源和要素:方法、过程、技术、工具
以便产生期待的结果:产品、质量
赢得:客户和市场
如何进行能力建模呢
既然人是工程的根本,那我们就可以基于工程技术人员的视角,进行能力建模。让大家知道自己的工作对应到什么角色、应该具有什么能力,然后把这些能力落地到:过程、技术、工具,这样就可以实现真正的能力提升。各个角色的能力建模的目标是为了实现工程全周期的团队能力,所以能力建模应该基于工作流程,提炼各个角色负责的工作,然后把工作分解为能力四要素:知识、技能、经验、素养。如下图所示:
如何培养能力?
人的工作能力进一步分解为四个维度后,相应的培养也就围绕四个维度进行:
知识:主要靠学习。
技能:需要通过工作场景来训练。
经验:需要实际的工作经历积累,尤其是失败的积累。
素养:需要思维方式和工作态度的培养,需要一个长期坚持、不断重复、形成习惯。
|
如何评价能力?
评价人的能力的角度有很多,从工程实践来说,我们关心是“人员具有完成工作任务的能力”,所以人的能力应该从完成工作任务的角度来评价。任务这个词听起来有些虚,要落地到完成任务所需要掌握的知识、技能、经验、素养的评价:
知识评测:知识具有显性的特点,可以采用试卷的的方式进行评测。
技能评测:技能具有隐形的特点,可以采用案例实践的方式进行评测。
经验评价:对于经验的评价,应该基于工作的真实史记录。
素养评价:对于素养的评价,需要长期的记录、观察,并结合一些特定困难的考验。
|
从工作的角度来看,技能的评价是重点,可以落地到具体的工具和工件。这样的评价更加客观和真实:
工作中使用的工具是否熟练?(例如这些都算工具:开发语言C/C++、开发工具
VisualStudio.net )
工作输出的工件是否质量合格?(例如:需求模型和文档、设计模型和文档、开发出来的程序、测试发现的bug)
系统工程和软件工程的过程到人员的映射
为了让混沌的工程清晰可见,我们建议工程实践者采用MBSE的工程方法,也就是基于模型来描述各个阶段的交付物内容(例如
需求模型、设计模型、测试模型),这样便于更加清晰地了解工作内容、进而有助于问题的识别和改进。我们将建设2个工程层次的人员能力体系:
系统工程:以设备监控为主要目标的系统,具有嵌入式、实时性、安全性要求高的特点。
软件工程:以企业信息化或者软件为主要目标的系统,具有业务复杂、数据多、功能多的特点。
|
如下是过程到人员视角的映射图:
1. 首先是系统工程的过程到角色的映射图:
角色 |
工作 |
工件 |
需求分析师 |
需求调研
业务分析 需求分析 |
业务需求文档
业务需求模型
|
产品经理 |
产品需求分析
产品规划 需求分析 |
产品需求文档
产品原型
|
系统工程师 |
系统需求分析
系统设计
|
系统需求模型/文档
系统设计模型/文档 |
软件工程师 |
软件需求分析
软件设计
软件开发
软件测试 |
系统需求模型/文档
系统设计模型/文档
程序文件
软件测试用例、bug记录、测试报告 |
集成工程师 |
组件配置
软件构建
集成测试 |
集成模型
集成测试用例与脚本
测试报告 |
测试工程师 |
系统功能测试
系统性能测试
系统可靠性测试
|
测试用例
Bug记录
测试报告 |
项目经理 |
项目计划
资源分配与协调
项目跟踪与监控
项目验收管理 |
项目计划
资源目录
跟踪看板
验收报告 |
质量经理 |
制定质量标准
过程定义与管理
交付物评审
编写质量报告 |
质量标准
过程框架
交付物模板与评审记录 质量报告 |
2. 软件工程的过程到人员视角的映射图:
软件工程的过程跟系统工程基本类似,只是系统架构师变为了系统工程师,系统工程师和软件工程师的工作内容有些变化。
角色 |
工作 |
工件 |
需求分析师 |
需求调研
业务分析 需求分析 |
业务需求文档
业务需求模型
|
产品经理 |
产品需求分析
产品规划 需求分析 |
产品需求文档
产品原型
|
系统架构师 |
业务架构设计
数据架构设计
应用架构设计
技术架构设计
|
架构文档
架构模型
|
软件工程师 |
数据结构设计
程序设计
程序开发
单元测试 |
数据模型
程序模型
程序文件
单元测试用与代码 |
集成工程师 |
组件配置
软件构建
集成测试 |
集成模型
集成测试用例与脚本
测试报告 |
测试工程师 |
系统功能测试
系统性能测试
系统可靠性测试
|
测试用例
Bug记录
测试报告 |
项目经理 |
项目计划
资源分配与协调
项目跟踪与监控
项目验收管理 |
项目计划
资源目录
跟踪看板
验收报告 |
质量经理 |
制定质量标准
过程定义与管理
交付物评审
编写质量报告 |
质量标准
过程框架
交付物模板与评审记录 质量报告 |
我们能够帮助大家什么
在将近20年的一线实践和企业服务过程中,火龙果已经积累了如下工程资产:
工作指南:一个工程全周期的过程指南,各个角色的工作指南
文档模板:需求文档、设计文档、开发文档、测试文档...
模型框架:需求模型、设计模型、代码模型、测试模型...
工件范例:
文档范例
模型范例
代码范例
测试范例
|
在人员的能力体系建设方面,我们已经帮助多家企业建立了:
能力模型:需求分析师、产品经理、架构师、开发工程师、测试工程师。
培养课程:知识课程、技能课程、实践训练课程。
评测题库:知识考题、训练任务、素养评测题库。
工程整体视角的过程指南
各个角色的工作流程指南;
各种工件的模板,包括模型框架、文档模板、代码规范、测试规范;
各种工作原则。
|
另外,火龙果还研发了能力管理系统iPerson,提供能力建设的系统级支持:
对能力建模:角色、任务、知识、技能、经验、素养。
基于能力模型:定义学习目录和评测题库。
支持在线学习和在线评测。
可视化、图形化的能力模型,是能力管理的基础,这将极大地提高工程技术人员的能力认知、进而驱动能力的培养和评价。 |
后续,我们将推出人员能力视角的工程指南,面向各个角色建立:能力模型、培养课程、能力评测题库,帮助企业建立“以人为本”的工程能力。同时落地到具体的工具和技术,让纷繁复杂的方法、技术和工具真的能够为人所用、创造更大的价值。
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|