在北科出品的2007版《管理信息系统基础教程》教材中,偶然看到系统分析章节的章末“管理与技术观点”板块摘录了一篇来自2005年的博客文章。
这篇文章中与程序员职业相对比讨论的是系统分析员,这是我几乎在近年没有听说过的岗位,发现其与现今产品经理的定位有所类似。联想到之前关于当代产品经理与全栈工程师的探讨,遂摘录阅读这篇近二十年前的老文章。
关于本文,作者脚注如下:
- 文章参考了网站“http://www.51cto.com/art/200512/15983.html, 2005年12月30日”的内容,经作者改编。
实际该文章已经无法打开,搜索引擎中也未能检索到。遂通过扫描教材,以引用方式批注,将原文整理如下:
如何从程序员变成系统分析员
好的系统分析员都是从优秀的程序员中产生的,坚实的编程功底丰富的经验是完成系统分析工作的基础。没有对系统实现的经历,很难领会到系统众析中一些难以言述的精华。
并不是好的程序员就能够成为好的系统分析员。合理的知识结构沟通能力、文字表达能力、技术的全面性等是对系统分析员的基本要求。
(一)从程序员到系统分析员-观念的转变
一个程序员要具有承接系统分析工作的能力,一般需要经过3~5年的编程经历, 并注意从如下几个方面历练自己的思维方式。
(1)培养全局观念。如果太注重细节,往往会陷入在某个问题上纠缠不清的泥潭, 这是从程序员向系统分析员转变的根本。
(2)树立面向用户的思想。系统分析员应当有能力将自己扮演成用户,预测要交付的系统会是什么样的,从而理解用户的想法并挑选出合理部分去形成方案。另外,系统分析员头脑中对项目结局有一个清楚的认识,可并保证项目不偏离方向。
(3)形成对任务难度的预测习惯。系统分析员要具有快速的任务难度预测习惯以及具备快速确定开发小组人员构成和任务划分的能力(我们将这归为思想,而不是能力)。要做到这点,需要大量的思考、学习。当今软件业的发展,各种开发工具的出现,编程已经不是什么问题,程序员的工作某种程度上讲仅仅是将别人提出的方案实现而已,而系统分析员却必须确定这些需求,并将这些需求形成方案,如果没有对任务难度的预测习惯,就可能陷入盲目乐观的泥潭。
这一点在如今AI赋能开发的时代更加凸显了,需求形成方案的能力成为了基础编程能力之上的“思想”。
(4)基于对技术和产品的理解,但必须高于技术,从逻辑的角度思考问题。
要想分析目标系统可能的需求,就必须清楚你给出的需求是否能够实现,就必须对技术和相关开发工具有深刻的理解,并结合用户需求思考问题。但真正描述(分析) 系统需求时,却必须跳出技术和产品的束缚,采用具有一定规范性、普适性的描述、分析方法和工具(如数据流图、统一建模语言UML工具Rational Rose等)表达需求。
纯粹的程序员通常对最终结果考虑的不是很多,当一种新的技术在市场上出现时, 他们对系统能否按时交付的考虑就比较少,而强烈希望他们的开发能够建立在新的技术之上。然而,系统分析员的想法和行动要像一个用户,又要能够站在技术的高度,成为真正的用户、程序员之间的代言人。
“成为真正的用户、程序员之间的代言人”,这不正是产品经理的岗位要求吗?
(二)从程序员到系统分析员-能力的提高
从程序员到系统分析员,需要提高自己的如下几方面的能力,具备这些能力是做好系统分析工作的关键。
(1)获得信任。系统分析员最重要的能力是获得信任的能力,这是成为优秀系统分析员的关键。只有这样,才能为整个项目组提供正确的支持,能够获得和理解用户需求,解决用户的需求。
(2)统一各种文档格式。如果说,我们的软件技术落后美国10年,我们的硬件制造技术则落后美国20年,我们的管理水平落后美国至少30年。而最终决定速率的恰恰是我们的死穴--低劣的管理水平。低劣的管理水平的形成有着深厚的背是和多方面的原因,其中最关键的一点就是缺乏规范的管理。系统分析工作是对目标系统需求分析及规范化描述工作,描述的规范性是做好系统分析工作的关键。
如今,我们的软硬件技术都在向美国迅速追赶、甚至于超越,而在管理水平方面我们走到哪一步了呢?
(3)对目标系统明确评价标准。这最好从参与的各方面都进行考虑。目标系统能否满足各方要求,本质上是由系统分析结果决定的,而明确目标系统的评价标准可以在系统分析的过程中就考虑这些标准。
(4)熟悉可能采用的系统开发方法及工具。要想确定目标系统的方案,就必须清楚给出的方案是否能够实现,就必须对可能采用的方法和相关开发工具有深刻的理解, 这方面我们在前面已经提到过了。
(5)熟悉目标系统的知识。“需求分析实际应该是问题分析”,其本质是确定系统要解决的问题,而不纯粹是用户提出的需求。既然是问题分析,熟悉目标系统的知识就是必要的。甚至,可以说,一个好的系统分析员也应该是好的业务专家。
中国的企业级信息系统的建设在很大程度上可以说并非确有需求,而是迫于某种压力。用户在很多时候考虑的不是系统的长远发展,而只是短期的成果,要求开发单位在很短的时间内完成一个很大的系统的开发,没有时间对系统进行周密的分析,在这种情况下,很多开发商就会粗分析,粗设计,尽快进入编码阶段,这样的系统的生命周期肯定不会很长。在这种情况下,系统分析员确实更加需要有很好的语言组织能力,根据问题域中存在的问题去尽力说服用户,引导用户需求,避免让用户牵着鼻子走。
在理解和分析用户的需求时,应让用户明白:建立计算机应用系统并不是简单地用计算机代替手工劳作,它更应该是管理思想的一次革命,是对现在用户模式的一次升华和提高。如果系统分析不能高于现实,开发的系统将长期陷入需求的反复修改,必然会缩短系统的生命周期。
联想到将传统线下流程数字化,通过数字化技术优化传统流程,这一步骤在我们之前的项目中也有所涉及。这正是MIS中提到的,运用管理思想、技术方法优化现有业务流程。