
引言
软件无处不在。它为我们的手机、汽车、银行、医院、娱乐和沟通提供动力。它是人类历史上最重要和最有影响力的发明之一。它使我们能够创造惊人的事物,解决复杂的问题,并与全球各地的人们建立联系。
但软件也存在问题。它速度慢,bug 多,安全性差,不可靠。它常常让人沮丧、困惑和失望。它不断变化,但并非总是变得更好。它变得越来越复杂,但并非越来越优雅。
为什么会出现这种情况?为什么在丰富和创新的时代,软件质量会下降?为什么我们在有能力创造优秀作品的时候,却接受了平庸的软件?
在本文中,我将论证软件质量下降是更深层问题的症状:人类素质的下降。我将运用“艰难的时代造就强者,强者创造美好的时光,美好的时光造就软弱的人,软弱的人又带来艰难的时代”1 这句话作为框架,解释软件如何反映社会的繁荣与倒退的循环。我还将提出一些打破这一循环、创造更好的软件和更好的人类的方法。
艰难的时代如何造就坚强的软件
“艰难的时代造就强者”暗示着逆境和挑战对人类成长和发展是必要的。当人们面临困难时,他们必须适应、学习、克服和生存。他们必须变得足智多谋、有创造力、自律和勇敢。他们必须变得强大。
同样的道理也适用于软件。当软件在艰难的时期创建时,它必须是高效、有效、强大和安全的。它必须解决实际问题,满足真正的需求,并提供真正的价值。它必须简单、优雅和美丽。
一些在艰难时期创造的软件的例子有:
Unix:20世纪70年代由贝尔实验室的研究人员开发的一系列操作系统,他们希望获得一个便携、可靠和灵活的系统来进行工作2。
C语言:20世纪70年代由丹尼斯·里奇设计的一种编程语言,作为 B 语言的继任者,B 语言本身是 BCPL 的简化版本3。C 语言是为了实现 Unix 和其他需要直接访问硬件的低级应用程序4。
TCP/IP:20世纪70年代由 DARPA 的研究人员开发的一套协议,他们希望获得一个能够经受部分故障、支持多种类型通信的强大和可扩展的网络5。
LaTeX:20世纪80年代由莱斯利·兰普特作为 TeX 的扩展开发的文档准备系统6,TeX 本身是唐纳德·克努斯在20世纪70年代为应对他书籍排版质量差而开发的7。LaTeX 旨在以最小的工作量产生高质量的科学和技术文档8。
这些例子表明,在艰难的时期创造的软件往往是:
专注于解决实际问题,而不是创造人为的问题。
由好奇心和激情驱动,而不是炒作和利润。
基于扎实的基础,而不是摇摇欲坠的趋势。
优化性能,而不是外观。
测试可靠性,而不是流行度。
以清晰而非晦涩的方式记录。
为了长久而非新颖而维护。
换句话说,在艰难的时期创造的软件往往是坚强的。
强大的软件如何创造美好时光
“强者创造美好的时光”暗示着力量会导致成功和繁荣。当人们强大时,他们可以实现自己的目标,克服障碍,并改善自己的状况。他们可以创造财富、幸福和和平。他们可以创造美好的时光。
同样的道理也适用于软件。当软件强大时,它可以使其用户做出惊人的事情,解决复杂的问题,并改善他们的生活。它可以创造价值、满足感和喜悦。它可以创造美好的时光。
一些创造美好时光的软件的例子有:
万维网:一种超文本文档的系统,允许用户从互联网的任何地方访问信息。互联网于1989年由蒂姆·伯纳斯-李发明,作为与他在欧洲核子研究组织(CERN)同事分享研究成果的一种方式。万维网革新了通讯、教育、娱乐、商业和社交。
谷歌:一个搜索引擎,允许用户从数十亿网页中找到相关信息。谷歌于1998年由拉里·佩奇和谢尔盖·布林在斯坦福大学开展的一个研究项目中创立。谷歌改变了人们获取信息的方式。
Linux:一个开源操作系统内核,可驱动从服务器、桌面到智能手机和嵌入式设备的各种设备。由 Linus Torvalds 于1991年作为业余项目开始,Linux推动了向协作开发的运动,如今它成为了社区驱动创新的有力证明。
Facebook及社交媒体:改变了人类互动的平台。Facebook由马克·扎克伯格和他的大学室友于2004年创建,为社交媒体时代铺平了道路,个人故事、新闻和全球社区的分享变得司空见惯。社交媒体重新定义了人们的连接、沟通,甚至发起社会变革。
这些例子展示了强大的软件如何通过:
使全球通讯和连接变得更加无缝。
使获取信息和资源的机会更具民主性。
促进商业创新,并开辟新的市场机会。
放大个人和集体的声音,促进积极变革。
简化各个领域的流程,提高效率。
实质上,强大的软件不仅简化了复杂的任务,而且在推动社会进步、推动经济增长和促进全球合作方面发挥着至关重要的作用。
美好时光如何可能培养出软弱的软件
“美好时光造就软弱的人”表明在繁荣和舒适的时代,可能会变得自满。随着挑战减少,创新或保持最初成功所需的严谨可能性会减少。
将这一现象引申到软件领域,美好时光可能导致:
基于趋势而非真实需求的开发。
对框架过度依赖而缺乏对其基本原理的理解。
将美观性置于功能性之上。
为了快速发布而忽视安全性和可靠性。
更多地关注营销噱头而不是真正的产品改进。
例如,应用市场涌入了大量功能重叠的应用程序,导致冗余。此外,随着“快速行动、把事情搞砸”的文化的兴起,一些公司优先考虑速度而不是稳定性,导致发布有 bug 的软件。
在美好时光中如何培养出强大的软件
为了确保在繁荣时期持续质量的软件:
强调教育和技能培养,确保软件工程师精通基本原理。
倡导持续学习和创新的文化。
奖励解决真正用户需求和挑战的软件,而不仅仅是追随趋势。
在软件开发的每个阶段,优先考虑安全性、可靠性和用户体验。
鼓励协作和开源开发,以从不同的视角和集体智慧中获益。
结论
软件质量,就像社会的周期一样,可能会有起伏。然而,了解社会繁荣对软件质量的影响可以为减轻潜在风险提供见解。通过重视真正的创新、强调教育,并营造合作开发环境,我们可以不断努力,无论我们处于何种社会阶段,都能持续地创造强大的软件。