终端用户开发
许多终端用户开发人员可能都不会把自己看作是软件开发人员,我在美国退伍军 人管理局精神科工作时第一次接触到 SAS,我的老师都是心理学家、精神病理学家、统计学家及其他研究人员。我们接诊病人,记录并输入数据,编写和维护我们自己 的软件,分析临床试验数据,就各种精神病主题展开调查并发表论文。尽管我们中一 半以上的人都进行过多种形式的数据分析,但我们中并没有一位真正意义上的“程序 员”。然而,由于我们首先是医生,其次才是研究人员,因此,对许多人来说,把自 己看作是软件开发人员的想法听起来非常奇怪。
实际上,这种身份认同危机正是我用“SAS从业人员”来代替专业人员称呼的原因,专业人员使用 BaseSAS语言开发软件,而我们这些人中大部分都认为自己只是“客串”软件开发人员(尽管我们可能会创建许多 SAS 软件)。本书代表着我们向前迈出了一步,逐渐接受自己作为软件开发人员的角色——无论大小。
终端用户开发人员最大的优点是帮助行业专家设计软件——行业专家了解最终的 项目意图及数据。精神病医生不需要媒介来辅助传达技术性概念,因为他们自己就能 创建软件。同时,商业分析专员也不需要向开发人员传达终端商业需求及软件意图, 因为开发人员就是精神病医生——是行业内的专家。由于终端用户开发人员同时具备 行业知识及技术能力,因此,无须商业分析员或其他经纪人,他们就能够迅速实施技 术性解决方案满足企业需求。
相比之下,传统的软件开发环境通常有一个“行业知识划分”,在这一部分,我们必须要向软件开发人员说明高级项目意图及需求(开发人员缺乏行业专业知识),同时又必须要向客户解释软件的技术信息(客户缺乏计算机科学或软件开发方面的技 术性专业知识)。随着时间的推移,利益相关人员就需要扩展自己的工作角色,扩充 自己的知识,但如果操作不当,行业知识划分可能会导致交流障碍、软件意图或需求 的错误解读,造成软件功能较少或质量较低。在这些环境中,商业分析人员和其他经 纪人具有非常重要的作用,他们能够确保行业知识、项目需求及目标和技术需求之间 的顺畅交流。
传统的软件开发环境在某些方面的表现确实要优于终端用户环境。由于传统环境中的开发人员本身就是软件开发人员,因此,他们更有可能会接受软件设计、计算机技术、系统管理或其他技术领域方面的教育和培训。但终端用户开发人员(如临床医生或精神病理学家)可能缺乏相关的计算机专业知识来继续后续的工作,因此,他们可能想获得机会去学习软件开发的相关知识。例如,我在美国退伍军人管理局精神科工作时,接受的培训都是与病人护理、精神病学、隐私规则或其他一些医学重点学科相关的知识。我们阅读并撰写与精神病话题相关的刊物——但从来不会涉及软件开发的相关知识。
由于需要掌握较多的行业专业知识,并参加相关的教育和培训,因此,终端用户开发人员不大可能去使用软件开发领域已建立的最佳实践(而且在某些情况下,可能完全不了解最佳实践),如对软件开发生命周期(SDLC)的依赖、敏捷(Agile)开发方法及性能要求——如国际标准化组织(ISO)软件产品质量模型中提到的那些性 能要求。因此,与传统软件开发人员相比,在软件开发最佳实践及软件开发环境中所提及的最佳实践方面,终端用户开发人员处于相对劣势。
为了克服终端用户开发环境内在的弱点,在该环境中操作的 SAS从业人员应该参加软件开发的学习与培训,完成自己的软件开发任务。回首自己在退伍军人管理局 精神科工作并创建出一些质量还算不错的软件时,如果我当时读过一些精神疾病诊断 与统计手册(DSM)的案例研究,并多读一些 SAS 白皮书和计算机科学方面的图书, 那么我的技能(以及软件技能)会有很大提升。