后端開發(fā)程序員究竟做什么?在現(xiàn)實(shí)中,即使前端開發(fā)獲得了大部分的榮耀,但是世界上存在的大多數(shù)代碼(可以說是最有用的代碼)是最終用戶從來不會(huì)看到的后端代碼。前端開發(fā)人員構(gòu)建用戶界面,而后端開發(fā)人員編寫代碼,使其工作;后端開發(fā)人員寫可使得按鈕工作的代碼,通過指出從數(shù)據(jù)庫中提取哪些數(shù)據(jù)并將其傳回到前端。后端開發(fā)程序員究竟做什么接下來我們具體說說
在Web開發(fā)的篇章中,我們主要討論Web開發(fā),因?yàn)樗婕芭c最終用戶的直接互動(dòng)——我們可以稱之為“前端Web開發(fā)”。
在大多數(shù)應(yīng)用中,非用戶接口代碼比用戶接口代碼多得多。復(fù)雜系統(tǒng)是在后臺(tái)發(fā)生的各種使其工作的邏輯。
我們需要存儲(chǔ)和檢索數(shù)據(jù),需要遵循業(yè)務(wù)邏輯和規(guī)則,并且需要對(duì)結(jié)果進(jìn)行預(yù)測。所有這一切都發(fā)生在幕后。后端開發(fā)人員就是這樣的開發(fā)人員。
1后端開發(fā)究竟是什么?
這篇文章的目的在于,我將會(huì)考慮后端開發(fā)是一種不涉及創(chuàng)建生成用戶界面的開發(fā)。這可能包括后端Web開發(fā),可能也涉及編寫API,創(chuàng)建庫或和沒有用戶界面或甚至科學(xué)編程系統(tǒng)的系統(tǒng)組件一起工作。
在現(xiàn)實(shí)中,即使前端開發(fā)獲得了大部分的榮耀,但是世界上存在的大多數(shù)代碼(可以說是最有用的代碼)是最終用戶從來不會(huì)看到的后端代碼。
簡單來說,后端開發(fā)就是開發(fā)人員編寫的不能直接看到的代碼。
2后端開發(fā)人員做什么?
根據(jù)正在處理的應(yīng)用程序的大小和范圍,后端開發(fā)人員要做的事情有很大的不同。在我是一個(gè)后端開發(fā)人員時(shí),我做了很多工作,工作于應(yīng)用程序中的業(yè)務(wù)邏輯,以及從前端提取和檢索數(shù)據(jù)。
在Web開發(fā)世界中,大多數(shù)后端開發(fā)人員從事于構(gòu)建他們正在工作的應(yīng)用程序背后的實(shí)際邏輯。
通常,前端開發(fā)人員構(gòu)建用戶界面,而后端開發(fā)人員編寫代碼,使其工作。例如,前端開發(fā)人員在應(yīng)用程序中創(chuàng)建一個(gè)界面,上面有一個(gè)按鈕,按下按鈕來獲取客戶的數(shù)據(jù)。
后端開發(fā)人員寫可使得按鈕工作的代碼,通過指出從數(shù)據(jù)庫中提取哪些數(shù)據(jù)并將其傳回到前端(并最終顯示在那里)。
后端開發(fā)人員也可能會(huì)大量參與系統(tǒng)架構(gòu),決定如何組織系統(tǒng)的邏輯,以便能夠正常維護(hù)和運(yùn)行。
他可能會(huì)參與構(gòu)建框架或系統(tǒng)架構(gòu),以便于更容易編寫程序。后端開發(fā)人員比前端開發(fā)人員花費(fèi)更多的時(shí)間在實(shí)現(xiàn)算法和解決問題上。
我一直都很喜歡后端開發(fā)工作,因?yàn)樗褚粋€(gè)挑戰(zhàn)。
這并不是說前端開發(fā)人員不解決難題,但通常前端開發(fā)工作更多的是關(guān)于創(chuàng)建用戶界面和與之相關(guān)的內(nèi)容,而不是實(shí)現(xiàn)實(shí)際的業(yè)務(wù)邏輯,使應(yīng)用程序工作。
3后端開發(fā)的主要技術(shù)和技能
前端開發(fā)人員需要知道一系列用于創(chuàng)建用戶界面的工具,而后端開發(fā)人員通常使用的是一套完全不同的工具和技能,以便于高效地完成他們的工作。
后端開發(fā)人員所需的一個(gè)重要技能與SQL和數(shù)據(jù)庫有關(guān)。大多數(shù)后端系統(tǒng)需要連接到存儲(chǔ)應(yīng)用程序數(shù)據(jù)的數(shù)據(jù)庫。
后端開發(fā)人員通常的工作是從數(shù)據(jù)庫或其他數(shù)據(jù)源寫入、讀取和處理數(shù)據(jù),因此擁有SQL等技能會(huì)非常重要。后端開發(fā)人員——至少對(duì)于Web開發(fā)——也需要擅長他們正在使用的技術(shù)棧的服務(wù)器端語言。
例如,雖然前端Web開發(fā)人員更多地專注于HTML,CSS和Javascript,而后端開發(fā)人員需要更多地了解PHP Web框架,Ruby on
Rails,ASP.NET MVC或任何正用于構(gòu)建應(yīng)用程序的服務(wù)器端Web開發(fā)框架。
最后,我想說,后端開發(fā)人員需要更多地了解應(yīng)用程序架構(gòu),因?yàn)榇蠖鄶?shù)情況下,后端開發(fā)人員需要去構(gòu)建應(yīng)用程序的體系結(jié)構(gòu)和內(nèi)部設(shè)計(jì)。
一個(gè)好的后端開發(fā)人員得知道如何使用各種框架和庫,如何將它們集成到應(yīng)用程序中,以及如何構(gòu)建代碼和業(yè)務(wù)邏輯,用一種使系統(tǒng)更易于維護(hù)的方式。
如果你喜歡設(shè)計(jì)應(yīng)用程序的基礎(chǔ)設(shè)施,實(shí)現(xiàn)算法和邏輯,以及工作于數(shù)據(jù),那么你可能會(huì)喜歡成為一名后端開發(fā)人員。
4關(guān)于全棧開發(fā)人員?
我曾想為全棧開發(fā)人員另起一篇文章,但后來想到,既然已經(jīng)涵蓋了Web開發(fā)和后端開發(fā),那么延伸開去談?wù)撊珬i_發(fā)更為理所當(dāng)然,因?yàn)槿珬i_發(fā)剛好涉及了前端和后端開發(fā)。
實(shí)際上,全棧開發(fā)包括處理系統(tǒng)或軟件開發(fā)堆棧的所有組件和層。它甚至可能涉及了解服務(wù)器硬件和架構(gòu),或者被認(rèn)為是DevOps。
今天,越來越多的軟件開發(fā)職位在尋找能夠進(jìn)行全棧開發(fā)的開發(fā)人員,因?yàn)閷?duì)于軟件開發(fā)人員來說能夠工作于涉及的整個(gè)技術(shù)棧是很有價(jià)值的,而不是將前端開發(fā)與后端開發(fā)兵分兩路。
一部分原因是現(xiàn)在越來越多的應(yīng)用程序模糊了前端和后端開發(fā)之間的界限。
許多流行的Javascript框架,如Angular,允許你在系統(tǒng)的用戶界面部分中創(chuàng)建可以被視為業(yè)務(wù)邏輯的大部分內(nèi)容。
此外,隨著越來越多的團(tuán)隊(duì)采用敏捷方法,個(gè)體程序員被要求不僅僅能工作于他們的專業(yè)領(lǐng)域,因?yàn)槿蝿?wù)被分配給團(tuán)隊(duì)遠(yuǎn)超過個(gè)人。
我認(rèn)為成為一個(gè)全棧開發(fā)人員是有用的——并且你應(yīng)該充分了解軟件的每個(gè)層次發(fā)生了什么——但我不認(rèn)為“專業(yè)化”全棧開發(fā)人員是頂好的主意,因?yàn)檫@不是一個(gè)專業(yè)領(lǐng)域。
基本上,你應(yīng)該專注于獲取你可能會(huì)用到的最常見的技術(shù)棧的廣泛知識(shí),但你應(yīng)該選擇一個(gè)或兩個(gè)主要的專業(yè),然后朝著選擇的方向真正地去深入鉆研。
所有軟件開發(fā)人員都應(yīng)該知道如何創(chuàng)建用戶界面,所使用的框架的基礎(chǔ),如何從應(yīng)用程序中存儲(chǔ)和檢索數(shù)據(jù)庫中的數(shù)據(jù),甚至了解基礎(chǔ)設(shè)施如何支持軟件,他們不需要成為所有所有這些領(lǐng)域的專家,因?yàn)檫@些領(lǐng)域不但相當(dāng)大而且在不斷擴(kuò)大。
具備技術(shù)堆棧中通用和有效的所有知識(shí)或一些領(lǐng)域中的專業(yè)化知識(shí)或許要好得多。
然后,你仍然可以稱自己為“全?!?,但實(shí)際上,對(duì)于團(tuán)隊(duì)而言,你這樣的人才更加有用得多。
話“見識(shí)、目標(biāo)、認(rèn)清差距、努力+正確的方法”對(duì)人生成長無比重要,想成為Java工程師的你,要先練就一身過硬的本領(lǐng)才行,心動(dòng)百次不如行動(dòng)一次。
感謝大家閱讀由java問答分享的“后端開發(fā)程序員究竟做什么?”希望對(duì)大家有所幫助,想了解更多培訓(xùn)信息請(qǐng)關(guān)注java培訓(xùn)機(jī)構(gòu)官網(wǎng)
免責(zé)聲明:以上內(nèi)容僅作為信息傳播,文中部分信息來源于互聯(lián)網(wǎng),僅供閱讀參考。