■ 需求工程师的能力,决定了系统的最高水平(易用、好用、价值等)
■ 开发工程师的能力,决定了系统的最低水平(可用、性能、安全等)

最近的热点话题就是美国的技术断供,不但有芯片断供、操作系统断供、将来还可能有工业设计用软件(CAD等)断供、甚至企业管理类软件的断供(ERP等)。相比前面的各类产品而言,ERP类的产品技术难度要低,而且中国有数量巨大的企业和需求,对软件商而言锻炼成长的机会非常多,但为什么我们做不好、做不大、也做不强呢?(看看高铁、桥梁等领域在需求和数量的驱动下都是后来居上!),原因有很多,这里重点谈一下软件生产的重要角色之一:需求工程师的作用和存在的问题。

提到软件行业,人们的关注点大都在程序员身上,很少有人提到需求工程师(IT行业以外的人甚至不知道存在这个岗位),需求工程师也经常抱怨说自己夹在客户和程序员中间两头受气。在软件行业中,需求工程师的核心工作是把模糊不清的客户需求转换为清楚的可指导编程的设计资料,通常可能是一个比程序员还要辛苦的角色,他的定位不清,干着“脏活累活”,却没有相应的地位和职责。举例一些常见的问题(不限于此)
■作为需求工程师的定位、资格、责任、价值不清晰、不明确。
■在客户现场调研时经常会被调侃是传声筒、录音机,什么也决定不了。
■被领导轻视地说:需求工程师不需要什么技术、能写文档就行了。
■IT技术仅仅指的是编程工作,需求分析和设计不属于技术范畴。
■与程序员意见不同时,常被告知“你提的需求做不了”,或“怎么做我说了算”。
■需求工程师大都由不同行业和岗位转职而来,缺乏需求工作的相应理论、方法、工具和标准。
■程序员可有4年大学教育,还有很多的培训编程的机构可选择,但需求工程师技能获得的来源基本上靠自学、或是师傅带徒弟的方式等

决定一款软件产品价值高低的不仅取决于编码技术水平,首先是需求分析和设计的水平。甚至一个应用软件公司的核心竞争力很大程度也取决于需求工程管理水平、需求工程师的业务水平。这一点有很多的软件企业还没有充分地认识清楚,他们只强调软件行业自身的个性、没有看到软件行业与其他行业相似的共性,这个共性就是“产品的价值来自于分析与设计”。
为什么这样说呢?其实道理很容易理解,与其他的行业做个横向对比就明白了,IT行业以外,不论哪个行业(建筑、制造、服装、科研等)都有设计师的岗位,生产任何产品的第一步都是做分析与设计,然后依据设计结果进行生产,这是人人皆知的常识,设计工作的内容包括了对产品需求的调研、分析、以及基于需求分析成果对产品进行的设计。没有人怀疑是设计师的水平决定了产品价值的高低,还有一个重要的区别是在其他行业,“需求与设计”是工作都是由设计师完成的。

但是软件行业不同,软件公司有单独的需求工程师岗位,大一些的软件公司有架构师岗位,但不论软件公司的规模大小与从事哪个领域的业务,都没有明确的设计师岗位。
软件架构师与一般行业中xx设计师有所不同,软件架构师的概念是偏向编码技术的角色,他的工作重点是系统的结构部分,而不是系统全部内容的设计,通常产品的客户价值大小也不是他的主要关注点。由于没有清晰的“需求”与“设计”岗位定义,事实上大多数软件公司的需求工程师不但进行了产品的需求分析,同时也参与了产品的业务设计和应用设计,而 “需求分析、业务设计、应用设计”的工作成果恰恰是决定产品客户价值大小的关键,这就是为什么说需求工程师的工作成果决定了产品价值高低的原因(当然程序员的编码水平、新技术的应用等也会影响产品的价值)。
再与国外软件商同行进行一下价格对比就更清楚了,外国大牌公司的(SAP、IBM、ORACLE的等)设计方案动辄就要大几百万、上千万,高的更不用说了,而反观国内厂家的提出设计方案报价就很低,甚至是免费的,目的是能挣到开发费就可以了。设计方案的核心工作就是调研、分析和设计,同样的工作,国内国外厂商获得回报差异巨大。

从上述对比可以看出来,软件行业需求工程师要做的工作接近于其他生产行业设计师做的工作,需求工程师需要同时考虑客户的需求(经营层面、管理层面、操作层面、系统层面等)、软件商的需求(功能、成本、周期、能力等),需求工程师是与客户衔接的窗口,他的理解、分析和表达能力决定了产品的最高价值(这个价值包含了客户与软件商双方)。在其他行业中设计师的地位很高,是受人尊重的岗位,是产品生产过程的龙头,对产品结果拥有决定权。与之相比,软件行业的需求工程师虽然也做了类似的工作(分析、设计),但由于在行业内或软件公司内部没有明确定位和资格要求,所以地位就比较尴尬,他本人也不清楚他可以决定什么。

为什么会形成这种现象呢?究其原因可能有以下几个方面(不限于此)
■长期以来,软件企业以“系统功能交付”为主,系统设计不是“价值导向”,因此需求工程师只需要传递客户的功能需求即可。
■受过专业培训的需求工程师很少,大都是“自然成长”,或“师傅带徒弟”的形式,能力参差不齐,且高水平者不多。
■广泛地存在着不清楚如何与外部的客户沟通、调研、记录和分析,也不清楚如何与内部的程序员沟通、应该传递什么文档、内容、标准等问题。
■软件的需求工程尚未没有形成一套技术性的体系,缺乏相应的理论、方法、工具、标准和流程,交付成果的形式很随意(以文字描述为主),因此需求工作不被看成是“技术工作”,需求工程师也不被看成是“技术岗位”。
■由于缺乏培养需求工程师的“技术”体系,通常只是将需求工作作为一门“经验”传递,内容松散、缺乏实操流程和标准,与编程技术体系相比有很大的差距。
■缺乏一套评估需求工程师能力的体系。等等。

顺便说一句,分析与设计交付物的低水平,又常常造成后续技术开发工作的质量低、进度慢和成本高的问题。

因此,培养合格的、高水平的需求工程师,是软件公司提升产品质量、客户价值所必须要先做的基础工作。需求工程师应该成为客户与程序员之间的桥梁,他应该做到将客户的需求用程序员可以理解的方式表达出来,同时将软件完成预期效果告诉给客户。作为一名合格的需求工程师需要掌握三个方面的知识:
■知识1.需要精通需求分析和软件设计的知识(这是需求工程师的看家本领);
■知识2.需要理解客户的业务,掌握相应的业务知识;
■知识3.需要了解软件实现的原理、过程等的IT知识;

需求工程师的水平提升可以带动开发工程师的水平提升,从而带动产品整体水平的提升。因此在某种意义上可以说
■需求工程师的能力,决定了系统的最高水平(易用、好用、价值等)
■程序员的能力,决定了系统的最低水平(可用、性能、安全等)

相比较而言,需求工程师的平均年龄要大于程序员的平均年龄,但是需求工程师的平均专业水平要低于程序员,这是因为绝大多数的需求工程师都没有受过相应的专业教育和培训,提升软件产品水平和价值的关键在于提升需求工程师的能力,需求工程师是一个可以学到老做到老的工作岗位(高级咨询师、咨询顾问等)。

希望学习分析和设计的知识、快速地提升需求工程师的能力读者可以参考《大话软件工程-需求分析与软件设计》一书。

程序员or需求工程师,谁决定软件的最高水平?相关推荐

  1. 程序员IT认证有用吗?软件工程师考证有必要吗?

    有一些没有社会经验的同学会问"程序员IT认证有用吗?软件工程师考证有必要吗?是否应该考几个认证?" 现在和软件开发有关的认证有如下几类: 1.知名国际企业的认证,比如微软的MCSD ...

  2. 2022年计算机软件水平考试程序员系统集成项目管理工程师(中级)练习题及答案

    1.以下关于项目变更管理的叙述中,不正确的是(C) A.项目的任何干系人都可以提出变更请求 B.所有的变更请求都必须以书面形式记录 C.所有的变更请求都必须交由变更控制委员会审批 D.客户也可以作为变 ...

  3. 程序员转型人工智能工程师,如何在百忙之中不走岔路

    再一次加完班坐出租车回家,司机搭话:你们做程序员好辛苦,惊讶司机对职业的猜测竟然如此之准.司机称每次路过鹅厂附近,都会在几个知名互联网公司大厦旁去转一转,总会碰到程序员接单. 程序员已经成为加班的代名 ...

  4. 程序员常用的16款火爆软件,你get到了哪些软件?

    俗话说:巧妇难为五米之炊,程序员也要有好的软件,才会更高效率的提高自己的工作效率,那作为入门级别的程序员,几款趁手的编程软件是最需要的.除了几款基本的软件,其实还有很多很很酷的编程工具.接下来就为大家 ...

  5. 程序员不是工程师吗,他们之间有什么区别?

    我刚刚工作的时候,面试官曾经跟我说:好好干两年,可以迅速从程序员成长为工程师.当时我觉得太诧异了,从很多招聘启示来看,"程序员"不就等于"工程师"吗,只是&qu ...

  6. 专家:程序员不配叫工程师

    <大西洋月刊>撰稿人伊安·博格斯特(Ian Bogost)发表文章称,一些人把程序员称为工程师,这破坏了"工程"的一个悠久的传统--为公众利益而设计和建造基础设施.以下 ...

  7. 程序员必备的10款工具软件

    程序员必备的10款工具软件 第一款:TrueCrypt 用TrueCrypt的人可能并不是很多,这是一个能对磁盘加密的软件,可以对某一磁盘分区进行加密,开启计算机后,如果你没有打开TrueCrypt ...

  8. 从程序员到测试工程师

    这篇是2002年底<程序员>杂志上的一篇文章,虽然时间早了点,但值得一看. ------------ 前言:软件测试一门非常崭新的学科,目前研究的内容还很不深入,仍然处于婴儿阶段.软件测试 ...

  9. 从程序员到测试工程师(转)

    前言:软件测试一门非常崭新的学科,目前研究的内容还很不深入,仍然处于婴儿阶段.软件测试需要什么样的专业基础还没有定论,而且目前还没有一种很好的标准来衡量测试人员.但无可置疑,软件测试越来越受到软件公司 ...

最新文章

  1. Deep Learning源代码收集-持续更新…
  2. 频频转型的蘑菇街,能讲好直播这个“老故事”吗?
  3. MapXtreme 安装、编码及打包注意事项
  4. slf4j日志的最优使用方式
  5. 2021-06-01 深入分析锁的基础知识
  6. mysql group by having 子句
  7. 侠诺虚拟服务器,简便不等于简单 侠诺PPPoE服务器功能介绍
  8. (一)数据结构和算法、线性结构
  9. 马斯克:未来将尝试打造超级高铁运输系统 时速是飞机的2倍
  10. 手机锁屏后微信收款语音不播报?-by:nixs
  11. Antd如何用Menu组件渲染二级或三级目录
  12. cortex-M3/M4 指令集
  13. ASP程序加密解密方法全面解析
  14. 10 种为React应用程序设计样式的方法
  15. unity3d+Android:v3签名问题,修改为v2
  16. XMLWorkerHelper生成pdf文件添加页眉页脚
  17. 一年读完100本书(1/100)《微习惯》2021-01-18
  18. Vue+ElementUI table表格分页
  19. IDEA创建JavaWeb项目配置
  20. 《C语言基础学习笔记》—— 黑马程序员 <Part1-4>

热门文章

  1. ImportError: cannot import name 'pyopenpose' from 'openpose'错误解决方法
  2. 【Python实战】chinesecalendar模块处理中国股市交易日期
  3. Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
  4. 项目计划定制:项目计划划分与产品项目推进的有机结合
  5. day_01 解析简单的程序
  6. window覆盖导航栏
  7. KMP算法———模板
  8. windows_study_2
  9. 华硕笔记本没有无线服务器,华硕笔记本连不上无线网络怎么解决
  10. mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程