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

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

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

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

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

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

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

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

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

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

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值