什么是后端開發?后端能做什么?全棧工程師又是什么?


  軟件應用程序就像冰山一樣。用戶看到的只是應用程序的一部分——在大多數情況下——應用程序的最大部分是看不到的。這就是令人難以捉摸又神秘的“后端”。

  在Web開發的篇章中,我們主要討論Web開發,因為它涉及與最終用戶的直接互動——我們可以稱之為“前端Web開發”。

  在大多數應用中,非用戶接口代碼比用戶接口代碼多得多。復雜系統是在后台發生的各種使其工作的邏輯。

  我們需要存儲和檢索數據,需要遵循業務邏輯和規則,並且需要對結果進行預測。所有這一切都發生在幕后。

  后端開發人員是這樣的開發人員。

 

后端開發究竟是什么?

  這篇文章的目的在於,我將會考慮后端開發是一種不涉及創建生成用戶界面的開發。這可能包括后端Web開發,可能也涉及編寫API,創建庫或和沒有用戶界面或甚至科學編程系統的系統組件一起工作。


 

  在現實中,即使前端開發獲得了大部分的榮耀,但是世界上存在的大多數代碼(可以說是最有用的代碼)是最終用戶從來不會看到的后端代碼。

  簡單來說,后端開發就是開發人員編寫的不能直接看到的代碼。

 

后端開發人員做什么?

  根據正在處理的應用程序的大小和范圍,后端開發人員要做的事情有很大的不同。在我是一個后端開發人員時,我做了很多工作,工作於應用程序中的業務邏輯,以及從前端提取和檢索數據。

  在Web開發世界中,大多數后端開發人員從事於構建他們正在工作的應用程序背后的實際邏輯。

  通常,前端開發人員構建用戶界面,而后端開發人員編寫代碼,使其工作。

  例如,前端開發人員在應用程序中創建一個界面,上面有一個按鈕,按下按鈕來獲取客戶的數據。

  后端開發人員寫可使得按鈕工作的代碼,通過指出從數據庫中提取哪些數據並將其傳回到前端(並最終顯示在那里)。

  后端開發人員也可能會大量參與系統架構,決定如何組織系統的邏輯,以便能夠正常維護和運行。

  他可能會參與構建框架或系統架構,以便於更容易編寫程序。后端開發人員比前端開發人員花費更多的時間在實現算法和解決問題上。

  我一直都很喜歡后端開發工作,因為它更像一個挑戰。

  這並不是說前端開發人員不解決難題,但通常前端開發工作更多的是關於創建用戶界面和與之相關的內容,而不是實現實際的業務邏輯,使應用程序工作。

 

后端開發的主要技術和技能

  前端開發人員需要知道一系列用於創建用戶界面的工具,而后端開發人員通常使用的是一套完全不同的工具和技能,以便於高效地完成他們的工作。

  后端開發人員所需的一個重要技能與SQL和數據庫有關。大多數后端系統需要連接到存儲應用程序數據的數據庫。


 

  后端開發人員通常的工作是從數據庫或其他數據源寫入、讀取和處理數據,因此擁有SQL等技能會非常重要。后端開發人員——至少對於Web開發——也需要擅長他們正在使用的技術棧的服務器端語言。

  例如,雖然前端Web開發人員更多地專注於HTML,CSS和JavaScript,而后端開發人員需要更多地了解PHP Web框架,Ruby on Rails,ASP.NET MVC或任何正用於構建應用程序的服務器端Web開發框架。

  最后,我想說,后端開發人員需要更多地了解應用程序架構,因為大多數情況下,后端開發人員需要去構建應用程序的體系結構和內部設計。

  一個好的后端開發人員得知道如何使用各種框架和庫,如何將它們集成到應用程序中,以及如何構建代碼和業務邏輯,用一種使系統更易於維護的方式。

  如果你喜歡設計應用程序的基礎設施,實現算法和邏輯,以及工作於數據,那么你可能會喜歡成為一名后端開發人員。

 

關於全棧開發人員?

  我曾想為全棧開發人員另起一篇文章,但后來想到,既然已經涵蓋了Web開發和后端開發,那么延伸開去談論全棧開發更為理所當然,因為全棧開發剛好涉及了前端和后端開發。


 

  實際上,全棧開發包括處理系統或軟件開發堆棧的所有組件和層。它甚至可能涉及了解服務器硬件和架構,或者被認為是DevOps。

  今天,越來越多的軟件開發職位在尋找能夠進行全棧開發的開發人員,因為對於軟件開發人員來說能夠工作於涉及的整個技術棧是很有價值的,而不是將前端開發與后端開發兵分兩路。

  一部分原因是現在越來越多的應用程序模糊了前端和后端開發之間的界限。

  許多流行的JavaScript框架,如Angular,允許你在系統的用戶界面部分中創建可以被視為業務邏輯的大部分內容。

  此外,隨着越來越多的團隊采用敏捷方法,個體程序員被要求不僅僅能工作於他們的專業領域,因為任務被分配給團隊遠超過個人。

  我認為成為一個全棧開發人員是有用的——並且你應該充分了解軟件的每個層次發生了什么——但我不認為“專業化”全棧開發人員是頂好的主意,因為這不是一個專業領域。

  基本上,你應該專注於獲取你可能會用到的最常見的技術棧的廣泛知識,但你應該選擇一個或兩個主要的專業,然后朝着選擇的方向真正地去深入鑽研。

  所有軟件開發人員都應該知道如何創建用戶界面,所使用的框架的基礎,如何從應用程序中存儲和檢索數據庫中的數據,甚至了解基礎設施如何支持軟件,他們不需要成為所有所有這些領域的專家,因為這些領域不但相當大而且在不斷擴大。

  具備技術堆棧中通用和有效的所有知識或一些領域中的專業化知識或許要好得多。

  然后,你仍然可以稱自己為“全棧”,但實際上,對於團隊而言,你這樣的人才更加有用得多。


 

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~

【值得關注】我的 C/C++編程學習交流俱樂部!【點擊進入】

問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM