为什么优秀的人会搭建糟糕的软件?
李洪义
讲述:初明明大小:3.95M时长:04:20
糟糕的软件是无法用金钱解决的问题之一。因为糟糕的软件并不是缺乏资金导致的,与特定的工程选择也关系不大,其根本原因是与开发项目的管理方式有关。
最差的软件项目通常是以一种非常特殊的管理方式进行的。
举个例子,项目所有者一开始时希望构建一个特定的解决方案,但从未明确指出他们试图要解决的问题是什么。然后,他们从一大群涉众那里收集了一长串的需求,并交给相应的大型外包开发团队。要是开发团队构建的软件满足了所有定制需求,那么每个人都会在系统启动也就是宣布项目完成时进行庆祝。
然而,尽管该系统在技术上符合规范,但用户使用它时却发生了严重的问题。它运行缓慢,令人困惑,有很多莫名其妙的错误。不幸的是,此时外包开发团队已经解散,没有剩余的资源来对漏洞百出的系统进行 Bug 修复。几年后,当一个新项目启动时,恶性循环又重新开始了。
正确的编码语言、系统架构或接口设计因项目而异。然而,遵循构建软件的一些特定的特性,却能让小型初创企业在预算有限的情况下获得成功,比如以下这 3 个特性。
1. 软件重用是很容易的,它能帮助我们快速地构建软件。
软件很容易复制。在机器层面上,代码行可以被复制粘贴到另一台计算机上。通常而言,互联网上到处都是关于如何使用现成的开源代码模块来构建不同类型系统的教程。现代软件几乎没有从零开始开发过。即使是最具创新性的应用程序也是使用现有的软件来构建的,这些软件经过组合及修改以得到新的结果。
此外,云服务的出现进一步提高了可重用性,甚至只需要支付订阅费就可以充分使用专有系统。服务提供商负责安装、维护和持续开发一个可靠的、高质量的软件,供其订阅用户使用。这使得软件开发人员不用再在解决问题上浪费时间了,而是更专注于交付实际的价值。
2. 软件不受构建它所投入资源的限制,而是受限于它在崩溃之前所能达到的复杂程度。
IT 系统通常都会有很多功能,随着新功能的开发,系统中的复杂性自然会积聚。当这些复杂性开始造成问题时,进度就需暂停,以便花时间清理。人类的大脑只能处理有限的复杂性,所以软件的复杂性取决于复杂性预算的使用效率。构建一个好的软件涉及到扩展和降低复杂性的交替循环。我们面临的挑战是管理好这个循环周期,在软件取得进展的同时不要让复杂性变得一发不可收拾。
3. 软件的主要价值不在于产生的代码,而在于产生代码的人所积累的知识。
在软件开发中,大多数想法都是错误的,这不是谁的错。只是可能的想法太多了,以至于任何一个特定的想法都可能行不通,即使它是经过非常谨慎和明智地选择的。为了取得进步,我们需要从一堆坏主意开始,并逐渐进化出最有前途的方案。
即使在产品构建完成之后,这些知识仍然很重要。如果一个新的团队接手了一个不熟悉软件的代码,那么这个软件很快就会开始退化。操作系统将会更新,业务需求将会改变,并且会发现有需要修复的安全问题。处理这些细微的错误通常比构建软件更困难,因为它需要对系统的体系结构和设计原则有深入的了解。这时产生代码的人所留下的知识就能够提供很大的帮助。
理解以上 3 个特性可能并不会保证软件的质量良好,但它确实有助于澄清为什么如此多的项目会产生糟糕的结果。不过,通过失败经验能总结出一些有用的操作原则,这些原则可以极大地提高成功的概率,比如以下 3 点:
开始时越简单越好;
发现问题并迭代修复;
尽可能地雇佣最优秀的工程师。
虽然还有很多更微妙的因素需要考虑,但是通过这些原则构建了一个好的基础,可以让你开始构建软件了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 甄福全 Alix所以毁灭一个优秀攻城狮的最快方式,就把他放到一个混乱的团队里1
- 春暖花开good
收起评论