首頁 常見問題 如今當後端開發人員感覺比20年前更難

如今當後端開發人員感覺比20年前更難

Apr 02, 2024 pm 04:38 PM
後端開發

对比当前与 20 世纪 90 年代末的后端开发格局,可以发现一个显著的变化。尽管进入软件开发领域的准入门槛已下降,但后端开发角色变得更加复杂,开发人员面临着更广泛的挑战和期望。

如今當後端開發人員感覺比20年前更難

将当今的后端开发格局与 90 年代末的后端开发格局进行比较,可以发现一个重大转变。尽管软件开发职业的准入门槛已经降低,但这个角色现在更加复杂,开发人员面临着更广泛的挑战和期望。

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

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

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

更高的用户期望

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

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

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

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

规模和系统复杂性增加

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

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

对于复杂的分布式系统,抽象对于开发人员降低复杂性、隐藏不必要的细节并专注于更高级别的功能至关重要。

广泛使用抽象的缺点是调试更加困难,并且对系统的全面理解更具挑战性,特别是由于传统系统可视化工具的限制。

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

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

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

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

压倒性的选择

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

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

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

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

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

不同的技能组合

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

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

  • Manage legacy software and reduce architectural technical debt. Today, most projects developers work on are "brown field." Understanding how to adapt and evolve an architecture to accommodate unforeseen use cases while managing (and potentially reducing) architectural technical debt is a valuable skill.

  • Assemble software by choosing the right technology. With the explosion of software as a service (SaaS) and open source software, software development has shifted to an assembly-like approach, where backend engineers need to carefully select and combine components, libraries, and frameworks to create complete software where every part fits together seamlessly. system.

  • Design scalable, high-performance and secure system architecture. Backend software engineers are also designers, and they must have a deep understanding of software design principles to create scalable and maintainable applications.

  • Communicate across teams. Distributed systems are built by large teams consisting of many different stakeholders. The mark of a good engineer is the ability to communicate effectively, promoting shared understanding and efficient decision-making among all stakeholders.

Conclusion

Looking back at the evolution of backend development over the past two decades, it is clear that the role has evolved from relatively simple server-side programming tasks Shift to a multifaceted discipline requiring a broad range of skills.

Challenges such as meeting higher user expectations, managing the scale and complexity of systems, dealing with an overwhelming number of choices, and acquiring diverse skills highlight the complexities of modern back-end development.

While entering the world of software development has never been easier, being a good backend developer today requires adapting to a more complex and rapidly evolving technology environment. Having expertise in system architecture, cloud services, containerization and orchestration tools, as well as the soft skills needed to communicate effectively across teams, remains key to success in this dynamic space.

以上是如今當後端開發人員感覺比20年前更難的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP將行格式化為 CSV 並寫入檔案指針 PHP將行格式化為 CSV 並寫入檔案指針 Mar 22, 2024 am 09:00 AM

這篇文章將為大家詳細講解有關PHP將行格式化為CSV並寫入文件指針,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。將行格式化為CSV並寫入檔案指標步驟1:開啟檔案指標$file=fopen("path/to/file.csv","w");步驟2:將行轉換為CSV字串使用fputcsv( )函數將行轉換為CSV字串。此函數接受以下參數:$file:檔案指標$fields:作為陣列的CSV欄位$delimiter:欄位分隔符號(可選)$enclosure:欄位引號(

PHP建立一個具有唯一檔案名稱的文件 PHP建立一個具有唯一檔案名稱的文件 Mar 21, 2024 am 11:22 AM

這篇文章將為大家詳細講解有關PHP建立一個具有唯一文件名的文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。在PHP中建立唯一檔案名稱的檔案簡介在php中建立具有唯一檔案名稱的檔案對於組織和管理檔案系統至關重要。唯一文件名稱可確保不會覆蓋現有文件,並便於尋找和檢索特定文件。本指南將介紹在PHP中產生唯一檔案名稱的幾種方法。方法1:使用uniqid()函數uniqid()函數產生一個基於當前時間和微秒的唯一字串。此字串可以作為檔案名稱的基礎。

PHP改變當前的 umask PHP改變當前的 umask Mar 22, 2024 am 08:41 AM

這篇文章將為大家詳細講解有關PHP改變當前的umask,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP更改目前的umask概述umask是一個用於設定新建立的檔案和目錄的預設檔案權限的php函數。它接受一個參數,這是一個八進制數字,表示要阻止的權限。例如,要阻止對新建立的檔案進行寫入權限,可以使用002。更改umask的方法有兩種方法可以更改PHP中的目前umask:使用umask()函數:umask()函數直接變更目前umask。其語法為:intumas

PHP計算檔案的 MD5 雜湊 PHP計算檔案的 MD5 雜湊 Mar 21, 2024 pm 01:42 PM

這篇文章將為大家詳細講解有關PHP計算文件的MD5散列,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP計算檔案的MD5雜湊MD5(MessageDigest5)是一種單向加密演算法,可將任意長度的訊息轉換為固定長度的128位元雜湊值。它廣泛用於確保文件完整性、驗證資料真實性和建立數位簽章。在PHP中計算檔案的MD5雜湊php提供了多種方法來計算檔案的MD5雜湊:使用md5_file()函數md5_file()函數直接計算檔案的MD5雜湊值,傳回一個32個字元的

PHP傳回一個鍵值翻轉後的陣列 PHP傳回一個鍵值翻轉後的陣列 Mar 21, 2024 pm 02:10 PM

這篇文章將為大家詳細講解有關PHP返回一個鍵值翻轉後的數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉數組鍵值翻轉是一種對數組進行的操作,它將數組中的鍵和值進行交換,產生一個新的數組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉:array_flip()函數:array_flip()函數專門用於鍵值翻轉操作。它接收一個數組作為參數,並傳回一個新的數組,其中鍵和值已交換。 $original_array=[

PHP將檔案截斷到給定的長度 PHP將檔案截斷到給定的長度 Mar 21, 2024 am 11:42 AM

這篇文章將為大家詳細講解有關PHP將文件截斷到給定的長度,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP檔案截斷簡介php中的file_put_contents()函數可用來將檔案截斷到指定長度。截斷是指刪除檔案末端的部分內容,從而縮短檔案長度。語法file_put_contents($filename,$data,SEEK_SET,$offset);$filename:要截斷的檔案路徑。 $data:要寫入檔案的空字串。 SEEK_SET:指定為檔案開始處

PHP判斷某個數組中是否存在指定的key PHP判斷某個數組中是否存在指定的key Mar 21, 2024 pm 09:21 PM

這篇文章將為大家詳細講解有關PHP判斷某個數組中是否存在指定的key,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP判斷某個陣列中是否存在指定的key:在php中,判斷某個陣列中是否存在指定的key的方法有多種:1.使用isset()函數:isset($array["key"])此函數傳回布林值,如果指定的key存在,則傳回true,否則傳回false。 2.使用array_key_exists()函數:array_key_exists("key",$arr

PHP會傳回上一個 MySQL 操作中的錯誤訊息的數位編碼 PHP會傳回上一個 MySQL 操作中的錯誤訊息的數位編碼 Mar 22, 2024 pm 12:31 PM

這篇文章將為大家詳細講解有關PHP返回上一個Mysql操作中的錯誤訊息的數字編碼,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。利用PHP回傳MySQL錯誤訊息數字編碼引言在處理mysql查詢時,可能會遇到錯誤。為了有效處理這些錯誤,了解錯誤訊息數字編碼至關重要。本文將指導您使用php取得Mysql錯誤訊息數字編碼。取得錯誤訊息數字編碼的方法1.mysqli_errno()mysqli_errno()函數傳回目前MySQL連線的最近錯誤號碼。文法如下:$erro