反思软件开发:软件本身

欧雷 发表于

0 条评论

作为软件开发人员,常会听到「技术服务于业务」这句话,也常被问到「你做的事情有什么业务价值」这类问题。听得多了,被问得多了,自然就会想要给自己做的技术工作找点「合理性」,否则在阶段考评或晋升答辩时都不知如何表达自己做的事情是「有价值的」。

然而,就像很多道理一样,「知道」与「理解」之间有着巨大鸿沟,仅有其形的话很容易就被戳穿。

本文是我对「软件」重新思考后的理解,有了相对正确的认知后才能做出更好、更实用的软件——软件从来不是单纯的技术成果,技术也不是软件最核心的部分。

软件是什么

关于这个,比较接地气且教科书式的说法是——

软件是一系列按照特定顺序组织的电脑数据和指令,是电脑中的非有形部分。电脑中的有形部分称为硬件,由电脑的外壳及各零件及电路所组成。电脑软件需有硬件才能运作,反之亦然,软件和硬件都无法在不互相配合的情形下进行实际的运作。

一般来说,计算机软件划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

软件包括所有在电脑执行的程序,和其架构无关,例如可执行文件、库及脚本语言都属于软件。软件不分架构,有其共通的特性,在执行后可以让硬件执行依设计时要求的机能。软件存储在存储器中,软件不是可以碰触到的实体,可以碰触到的都只是存储软件的零件(存储器)或是介质(光盘或磁片等)。

软件并不一定只包括可以在计算机上运行的计算机程序,有些定义中,与计算机程序相关的文档,一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。

然而这种书面式的定义并没什么价值,有价值的是更为抽象点的理解,也就是软件是现实世界的映射,源于且不会高于现实世界——

就像《圣经》里描述的——上帝按照自己的样子创造了亚当这个世上第一个人类,又从他身上取下一根肋骨创造了夏娃这个世界上第二个人类。在这里,上帝将自己作为参照提取特征抽象出祂所认为的「人」的模型,并根据这个模型创造出「亚当」和「夏娃」。

人在打造数字世界时必然会参照自己所存在的并且是自己所认知的世界,因为人不可能想像出自己无法认知的事物。人们所抽象的现实世界的事物的模型,就成了建设数字世界的基础,而数据则为构造数字世界的基本单元,数字世界成了现实世界的映射。

若「道生万物」是「正确」的,借由软件底层的二进制「理应」能够完美构造出现实世界的映射,但这受限于人们对现实世界的认知以及现实世界中硬件、网络等支撑性技术与设备的发展。

就算在由软件所构造的数字世界中能够出现现实世界所不存在的事物,但依然是现实世界中已有事物的「缝合体」,而不是其构成在现实世界中完全没有参照。因此,不会高于现实世界。

对于我们所存在的现实世界,有个观点是——就像我们用软件构造了数字世界一样,现实世界也是「上帝」这个/些「程序员」用「计算机」构造的,我们人类就是终极的「人工智能」。一个可以类比的直观例子就是《刀剑神域 爱丽丝篇》。

软件的意义

对于人们的生存、生活来说,软件是必需的吗?废话,当然不是!那为什么要有或者说要用软件呢?这还用说?是为了更好地达到目的,满足需求呗!

上面的两组自问自答已经得出了结论——软件存在的意义是为了解决特定领域问题,大白话就是「满足用户需求」——可以摘出四个关键词:领域、问题、用户、需求。

确定的「领域」是产生软件的先决条件。往大了说,是软件提供者要面对的行业,如金融、医疗、教育等;往小了说,是日常工作生活中的某个环节,像理财、看病、上课之类。

领域必然是软件提供者所感兴趣、熟悉的,这样才可能做出好的软件,才有希望获得收益。对某个领域没兴趣、不熟悉的人,他能做出有用且好用的软件?他能看到潜在的商机?

软件的「用户」是人,所面向群体的特征决定了软件要做成什么样以及如何获益。

即便最终使用软件的是一个一个的人,但软件所处理事务的影响范围是不同的,据此可将用户分为个人和组织两大类。组织就是多个人所组成的团体,由于产生的目的不同又会分为很多种,常见的有家庭、社区、企业、政府等。

「需求」是人在生理或心理层面的需要。个人需求可参考马斯洛需求层次理论,组织需求就是落在盈利、效率、资源等几大方面。

软件所要解决的「问题」不直接等同于用户需求,是对「需求」这个表面呈现进行分析而得到的。问题不一定就是目标用户的,也可能是行业整体的。

软件的伦理

人类的任何科技发展、工具发明都避不开伦理问题——科技、工具本身是无所谓善与恶的,它们给人们带来的是福还是祸取决于创造和使用它们的人。

大的不说,就拿社交软件来举例——社交软件的性质决定了它逃不开以人际关系为中心的一些问题,如:约炮、骗炮、诈骗。

约炮暂且不说,骗炮和诈骗在普遍观念中都是恶。虽说这来源于用户的需求,看起来与软件提供者毫无关系,他们甚至可以说:「我们只是提供工具、平台的。」

那么,真就不关软件提供者什么事么?关!但是不是作恶要看情况。

我本人是不支持软件提供者对内容进行监管,但需要有内容举报与处理的反馈机制,若这部分有所缺失,不一定算作恶。

但有些社交软件,为了争夺用户流量和抢占市场份额而去打擦边球,从一开始就是去恶意利用人性,纵容那些事情的发生,这类软件提供者就完全是在作恶!

就像曾经诺基亚的广告词「科技以人为本」那样,我们应当科技向善而非向恶——从人出发,为人着想,使人幸福——可以把「人」替换成「用户」。

总结

软件是现实世界的映射,通过二进制理论上可以完美复刻现实世界,充满无限可能,但依赖且受限于人们的认知与现实中的条件;对人们的正常生存、生活来说软件不是必需的,软件的存在是为了让人们变得更好;软件提供者不应为了一己私利去恶意利用人性,对用户和社会造成负面影响。

回到开头提到的「技术服务于业务」和「你做的事情有什么业务价值」,这两句话实际在说——要先从业务领域和用户需求中分析出问题的确切所在,再根据问题的性质、特点等制定解决方案——毋庸置疑,技术方案是其中的一部分。