天天看点

为啥后端开发比 20 年前更难?

作者:不秃头程序员
为啥后端开发比 20 年前更难?
导读:软件开发的入门门槛越来越低,但是开发的难度却越来越高了。都有哪些内容,详情查看本文。

我们将当今的后端开发格局与 90 年代末的后端开发格局进行比较,可以发现一个重大变化。

虽然软件开发职业的准入门槛已经降低,但这个角色现在更加复杂,开发者将面临着更大的挑战和期望。

现如今,软件工程师们努力构建更大、更复杂的系统,并在软件开发的各个方面面临大量的深度选择:包括从使用哪种语言、工具、平台、框架等,到实现哪种解决方案、架构风格、设计模式等维度。

设计强大、可扩展且安全的分布式系统的需求增加了复杂性,该系统能够支持数千个并发用户,通常具有近乎完美的可用性,并符合严格的数据处理和安全法规。

本文为大家深入研究了过去 20 年后端开发的演变方式,揭示了导致其难度增加的相关因素。

更高的用户期望

当今的计算机拥有指数级更大的内存和处理能力,以及以前难以想象的功能。这些技术飞跃使得能够开发出更加复杂和强大的软件。

随着软件功能的增强,而用户的期望也随之提高。

现代用户需要的软件不仅可以在全球范围内访问,还要提供无缝的跨平台体验、响应式设计以及实时更新和协作功能。人们期望卓越的性能、高可用性和持续更新,以通过新功能和增强功能满足他们不断变化的需求。

这种转变要求开发人员利用一系列技术来满足这些期望,从而使后端开发更具挑战性。

规模和系统复杂性增加

今天解决的软件问题的复杂性远远超过 20 年前,比如我们现在需要编排计算机网络,每秒要处理数千笔交易,并扩展系统以容纳数百万用户。

开发者现在需要知道如何处理大量的多语言代码库、实现分布式系统以及应对多线程和多处理的复杂性。此外,有效抽象和依赖管理的必要性使开发过程进一步复杂化。

对于复杂的分布式系统,抽象对于开发人员降低复杂性、隐藏不必要的细节并专注于更高级别的功能至关重要。广泛使用抽象的缺点是调试更加困难,并且对系统的全面理解更具挑战性,特别是由于传统系统可视化工具的限制。

此外,API 的激增需要细致的依赖管理,以防止创建复杂、脆弱或不透明的系统,从而使它们难以理解、维护或扩展。

尽管许多开发人员仍然使用白板或非交互式图表工具来绘制他们的系统,但最近出现了更加动态和自动化的工具,可以提供对系统架构的实时洞察。

这些变化以及许多其他变化(例如,提高的安全性要求、缓存的引入、对测试覆盖率的期望增加、异常处理、编译器优化等)强调了现代后端开发的复杂性的增加。

单名程序员可以监督整个系统的时代早已过去,取而代之的是对大型分布式团队以及广泛协作、文档和组织技能的需求。

压倒性的选择

随着技术的快速发展,开发者现在必须驾驭庞大且不断增长的编程语言、框架、库、工具和平台生态系统。

这可能会导致决策系统瘫痪,体现了选择的悖论:认为如果我们为开发者提供更多选择,他们就会更快乐、更有效率,现在这是错误的。无限的选择在理论上比在实践中更有吸引力。

最新的 CNCF 报告记录了技术领域的众多选择,其中显示了数百种选择!

虽然为解决方案选择最佳技术或工具时的一定程度的自主权很重要,但过多的选择可能会导致超负荷并最终压垮人们或导致拖延或无所作为。

解决方案是在为开发人员提供做出有意义的选择的自由和策划选项以防止选择过载之间取得平衡。通过提供经过严格审查、以目的为导向的建议,并培育知识共享和最佳实践的文化,我们使开发人员能够自信、高效地驾驭广阔的技术领域。

不同的技能组合

云计算的出现给后端开发者带来了额外的复杂性,要求他们精通在云环境中部署和管理应用程序、了解容器化以及选择合适的编排工具。

除了技术专业知识之外,现代后端开发特别重视的技能还有:

  • 管理遗留软件并减少架构技术债务
  • 如今,开发人员从事的大多数项目都是“棕色领域”。了解如何调整和发展架构以适应不可预见的用例,同时管理(并可能减少)架构技术债务是一项宝贵的技能。
  • 通过选择正确的技术来组装软件
  • 随着软件即服务(SaaS)和开源软件的爆炸式增长,软件开发已经转向类似组装的方法,后端工程师需要精心选择和组合组件、库和框架来创建完整的软件每个部分都无缝配合的系统。
  • 设计可扩展、高性能且安全的系统架构
  • 后端软件工程师也是设计师,他们必须对软件设计原理有深入的了解,才能创建可扩展和可维护的应用程序。
  • 跨团队沟通。分布式系统是由许多不同利益相关者组成的大型团队构建的。优秀工程师的标志是能够有效沟通,促进所有利益相关者的共同理解和高效决策。

结论

回顾过去二十年后端开发的演变,很明显的表现是,该角色已经从相对简单的服务器端编程任务转变为需要广泛技能和知识的多方面学科。

满足更高的用户期望、管理系统的规模和复杂性、应对大量的选择以及获取多样化的技能等挑战,这些凸显了现代后端开发的复杂性。

进入软件开发领域从未像现在这样简单,但如今想作为一名出色的后端开发人员需要适应更复杂且快速发展的技术环境。

拥有系统架构、云服务、容器化和编排工具方面的专业知识,以及有效跨团队沟通所需的软技能,仍然是在这个动态领域取得成功的关键。

参考:

https://dzone.com/articles/backend-development-feels-harder-today-than-20-years-ago

继续阅读