被劣质代码“残害”的这些年

简介: 都已经 2020 年了,但我们仍然在生产劣质软件。自从计算机诞生以来,已经过去了近 70 年,但我们似乎还没有吸取所有的教训,仍然在犯着重复的错误。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

都已经 2020 年了,但我们仍然在生产劣质软件。自从计算机诞生以来,已经过去了近 70 年,但我们似乎还没有吸取所有的教训,仍然在犯着重复的错误。

科技行业的变化日新月异,或许今天看起来有意义的事情五年后就失去了其意义。我认为,这正是软件的一个迷人之处,因为它的可塑性很强。但是有一件事是不变的,那就是劣质软件带来的糟糕体验,我们似乎短期内无法克服它。

现在,开源生态系统中的优秀软件多如牛毛,以至于人们误以为劣等软件已经成为过去。其实不然,尽管开源软件在过去十年里呈现出爆炸式增长趋势,但这其中依然混迹着不少非常糟糕的软件,我每天都在“深受其害”。

劣质软件缘何而来?

编写优秀的软件的确很难,但这不能成为产出劣质软件的借口。你每天都在使用优秀的软件,所以应该知道如何来编写优秀的软件。优秀的软件总是“润物细无声”,在你没有察觉时就已完成了工作,而糟糕的软件会把你逼向崩溃边缘。但是,通常情况下,你不会看到或使用到特别多的糟糕软件,因为我们日常生活中使用的大多数软件都是消费软件,糟糕的软件无法在消费市场生存,但糟糕的软件确实存在,这是不争的事实。

据我所知,糟糕的软件在企业生态系统中普遍存在。最主要的原因有以下几点:

  • 在企业环境中,人对系统更加宽容;
  • 普通软件研发人员比消费市场型软件研发人员要少,普通软件开发者对于他们自己编写软件没有投入感情;
  • 软件所做的大部分工作是以机器对机器交互的形式完成的,当某些东西不能工作时,机器检查问题的能力不足;
  • 大多数情况下,编写企业软件的人不如为消费市场编写软件的人更了解他们的最终用户和他们的问题。

20489C2F_3722_4212_8EEE_298FF73DD002

糟糕的软件是缺乏思考和错误决策的结果。每一行代码都很重要,每一个接触软件的人都会对其产生影响,甚至每一个决策都会影响软件的设计走向。如果你不编写单元测试,而是利用编写单元测试的时间来进行一些新特性的开发,那么这时系统中的 Bug 就会无孔不入,这种目光短浅又无知的决定是对几十年来积攒的经验智慧的一种亵渎。

软件不只是一个冰冷的机械,它也有情感。你可能会问为什么?因为它是工程师的逻辑和情感状态的精确体现,工程师开发软件时并不是只有一种情绪,软件是在工程师的多种情绪和状态下编写而成的,或难过、或开心、或高兴、或生气、或激动、或厌烦、或充满斗志,抑或沮丧憋闷,软件既能反映工程师的情绪,还能反映出工作场所的文化氛围。糟糕的企业文化几乎总是会产生糟糕的软件,这是显而易见的,因为大多数组织在规模变大后却因为糟糕的企业文化而最终衰败。

劣质软件带来的恶果

糟糕的软件会陷入恶性循环。技术债务不断堆积,会议越来越多,完成的工作却越来越少。会议上净是些陈词滥调的方法和管理实践,却没有人懂。糟糕软件就像癌症,大多数时候在最后阶段才显现出来,它会带来非常严重的后果,它也会降低工作效率,让人失去动力。软件工程是一项充满创造性的工作,但糟糕的软件会把工程变成维护工作。花在 Bug 修复上的时间比花在为改善终端用户体验上的时间要多。公司内部的一些问题开始渗透进来。虽然糟糕的软件是源于失败的团队,但是没有人承担责任,大家开始相互指责,在此情况下很容易滋生腐败,最终让员工备受煎熬。简而言之,糟糕的软件就是糟糕的企业文化的缩影。

56E6B5F4_D561_4e6b_8F28_49F4C1BEE9C9

Bug 是软件工程中不可避免的存在,但是如果 Bug 一直存在下去,那就是危险的信号,它会产生连锁反应。由于没有动力和缺少奖励,情况会变得更糟,在一切以交付为首要目标的情况下,鲜有人会对软件进行改进或在其中增加新的特性。它变成了一个没人敢碰的、失控的烂摊子,后患无穷。

如何改善劣质软件?

如何将糟糕的软件变成优秀的软件?这是个棘手的问题。我虽然不是专家,但我也愿意在这里与读者分享我的观点。首先,它变得如此糟糕,很大程度上说明了该组织的文化也出现了严重问题。改变文化比改变代码要难得多。文化是一个组织的支柱,即使有望改善它,也要面临很大的阻力,因为已经投入的资源是一个更大的问题,预防胜于治疗。

关于这个主题的文章不多。也许这个行业发展得太快了,以至于人们都来不及进行反思,或者与其把精力浪费在写作上,不如去解决其他紧迫的问题。总有更多的东西被发明,更多的问题等待着我们去解决,更多的工具要开发,但投入一点时间反思将有助于整个行业的发展。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-03-31
本文作者:Ankit Singh
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
22小时前
|
Java 测试技术 开发工具
写代码中的一些“小技巧”
写代码中的一些“小技巧”
|
5月前
|
设计模式 存储 Java
写出漂亮代码的45个小技巧(上)
大家好,我是三友~~ 不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以问,此时只能心里默默地问候这个留坑的兄弟。。
写出漂亮代码的45个小技巧(上)
|
9月前
|
存储 设计模式 安全
代码优雅的45个小技巧,你知道吗?
代码优雅的45个小技巧,你知道吗?
|
11月前
|
定位技术 数据处理 开发工具
如何优雅地统计代码(一)
*精美排版详见钉钉文档其实这个事情要从一个下午讲起,对我来说是个尤里卡时刻;其实一开始让我直接从数据里统计大家提交代码是有点无从下手的,前几天开始调研了一波代码统计方案后发现大部分都是基于文件来统计代码的各种行数并没有这种基于前后版本的变更代码统计,大家更多的使用Git自带的统计方法但显然我这里没有这样的环境(下面背景会详细展开),快要放弃今天的技术调研遂下楼散步刷新思维,我又回溯了我在这个项目中
最近特火的爱心代码来了
最近因为一部《点燃我温暖你》的电视剧而爆火的爱心代码不会还有人不会制作吧。
最近特火的爱心代码来了
|
SQL 人工智能 前端开发
无代码的未来
随着无代码技术越来越成熟,很多web应用已经可以基于无代码平台进行开发。本文分析了4个最流行的无代码平台,并梳理了无代码行业今后可能的发展方向。
365 0
无代码的未来
|
设计模式 算法 程序员
你是否 diss 过别人的代码?| 怎样的代码才算优秀?
你一定在内心吐槽过他的代码太烂:没注释、逻辑混乱、到处都是 magic number、实现方案过时、耦合严重、一改就出 bug。 此时心中的怒火油然而生,仿佛自己是正义的化身。。。
88 0
|
前端开发 C++
这几行代码,真的骚!
这几行代码,真的骚!
这几行代码,真的骚!
|
设计模式 前端开发 Java
握草,你竟然在代码里下毒!
Java程序员👨‍💻‍,10个编码小技巧,用好了升职加薪,用不好开除走人!
878 0
握草,你竟然在代码里下毒!