歡迎2020年的開發棧
作者認為是時候更新自己的職位發佈和招聘實踐,以反映一個新的現實:"全棧"不再幫助他將求職要求與求職者技能相匹配。
全棧的起源
在新千年來臨之際,Web工具已經達到了可以使用開源軟件組裝網站所需的一切工具的地步。 鬆散地遵循OSI網絡模型,我們開始將程序集的各個部分稱為層,將該集合稱為開發棧。
LAMP棧是其中的第一個,具有四個層:L表示Linux操作系統,A表示Apache HTTP服務器,M表示MySQL數據庫服務器,P表示PHP腳本語言。 隨著時間的流逝,層概念已經證明了自己的優勢,並且彈出了許多棧的變體:WAMP,MAMP,XAMPP,LEMP,LEPP,MEAN,JAMStack等。
有了這些,就可以免費獲得復興軟件開發的關鍵,這對任何有興趣創建網站的人來說都是一個很小的障礙。 所需要的只是毅力和學習新工具,語言和協議的渴望。 不需要Microsoft或Oracle或IBM或其他商業供應商。 這是一個公平的領域,吸引了很多參與者,導致了1990年代後期的投機網絡時代。
不久,在瀏覽器(XMLHttpRequest)中引入AJAX啟用了一種新型網站,從而引領了Web 2.0時代和Web應用程序。 但是,開發這些新應用程序需要進行大量工作,因此,獨佔開發人員很難按時完成業務。
結果是專業化。 前端開發人員處理了HTML,CSS和JavaScript。 後端開發人員處理了主機操作系統,HTTP服務器和數據庫。 精通這兩種語言的開發人員稱為全棧開發人員。
全棧時代
專業化是一件好事。 直到事情發生了變化。 一方面,這意味著團隊可以並行工作以縮短開發週期。 另一方面,這意味著我們必須付出更多的努力來傳達初始要求和變更單規範,否則我們可能會失去並行工作所帶來的好處。
因此,擁有一個由全棧開發人員組成的團隊而沒有可區分的前端/後端組,似乎是一個好主意。
最重要的好處是,團隊中的每個開發人員都充分了解每一次小的更改都會帶來的後果。 他們每個人都可以適當地評估影響和風險,從而使管理層清楚瞭解成本和延誤情況。 而且,作為附加的獎勵,當工作人員離開時,可以立即進行換人,並且可以高效地進行入職。
但是隨著基礎技術的改進,這種樂觀的前景變得不那麼吸引人了。 開發棧不再侷限於操作系統,HTTP服務器,數據庫和腳本語言的最初四層。
- 由於我們需要增長應用程序來處理越來越多的併發用戶,因此出現了複雜性。 因此,我們添加了負載平衡器。
- 我們需要更快地配置新服務器,同時降低災難性故障的風險。 因此我們轉向了雲計算。
- 我們開始製作東西以吸引全球觀眾。 因此,我們開始將部署複製到區域數據中心。
- 我們發現,架構繁重的數據庫和複雜的聯接並不總是最好的。 因此,我們開始使用鍵值存儲。
- 我們需要更好的質量控制。 因此,我們聘請了專門的測試工程師來構建迴歸套件。
- 我們想讓瀏覽器控制渲染和合成。 因此,我們從服務器端腳本轉換為REST API。
- 我們瞭解到,良好的代碼管理對團隊的效率至關重要。 因此,我們使用Github創建了工作流程,再也沒有回頭。
隨著能力的增強,我們開始更加密切地傾聽用戶的意見:
- 我們的用戶期望應用程序具有更少的提交表單,更多的流利性,更高的一致性和更易用的功能。 因此,我們聘請了具有藝術技巧和人體工程學敏感性的用戶界面專家。
- 我們的用戶要求更少的障礙來完成工作。 因此,我們聘請了用戶體驗專家來研究我們的缺點並設計更好的交互方式。
- 我們的用戶發現了手機的便利性,並困擾著我們,直到我們為他們提供了大型SaaS應用程序的移動版本。
在所有這些方面,基本面一直在前進:
- HTML5逐漸成熟,涵蓋了語義網,可訪問性,服務器工作者和組件。
- CSS的發展已超出選擇器和級聯的範圍,涵蓋了過渡,變量,新的佈局模型和分頁媒體。
- JavaScript爆發了,它具有模塊化,面向對象的類,異步函數以及能夠在任何地方執行的功能-在瀏覽器的DOM中,在服務器上以及在桌面上-都使用相同的腳本語言。
- HTTP通過更好的緩存,安全策略,持久會話,多路複用流,標頭壓縮和優先級進行了改進。
完整棧時代並沒有死得那麼早,而是已經超支。 棧的層數如此之大,以至沒有人可以成為一切方面的專家。 職責多樣化和專業化是自然的結果。
全棧工程師作為文藝復興時期工作人員的榮耀已成為傳奇。 在這個新時代,沒有人會希望做到這一切。
2020年的開發棧
這給我們留下了開放的問題。 具有跨越多層知識和技能的才華橫溢的個人仍然有作用嗎? 我們如何容納全棧開發人員傳統上帶來的項目經驗的多樣化? 管理如何滿足所有這些需求? 招聘人員應如何篩選潛在的招聘人員? 求職者應如何宣佈其技能?
現在該重新考慮術語"全棧"了。
我之所以這樣說,是因為我幫助推廣了這個概念。 我在2009年就使用了full-stack.com網站。但可悲的是,在2019年,這是計算機歷史博物館的遺物。
奇怪的是,人們對"全棧"一詞的好奇心在不斷增加。 2009年至2019年期間的Google趨勢快照顯示,過去五年中急劇上升。 而且它每年都達到新的高度。
但是,如果所有這些查詢都在尋找下一件事,那就是。 當然,我們必須給它起一個名字,以便我們進行適當的討論。
我將其稱為2020開發棧。 新一代的新名稱。
這是我的看法:
首先,讓我們稱讚那些在各個領域具有深厚技能的人。 他們是我們不落入專業陷阱的最大希望。 我們要避免那些建立帝國的傾向,那些帶有秘密咒語的大師,以及那些隨著專業化而悄悄滲透的信息孤島。
其次,讓我們來了解一下事實,即職業發展意味著人們來來往往。 組織必須在正常操作中期望這一點。 高級職員離職後,業務不會中斷。 "沒有人是必不可少的。"
第三,領域術語會削弱專家之間的溝通。 當專家使用特定於領域的術語,首字母縮寫詞和慣用語時,他們自己和隊友將面臨危險。 "他/她說。"跨域施肥對於保持溝通渠道暢通至關重要。
因此,這是新的2020年堆棧專家的一些特徵:
由於沒有人可以處理所有這一切,因此2020年堆棧必須由一個團隊來解決。 不是一群人,而是一個真正的團隊。 這意味著,當一個人落後時,另一個人就會鬆懈。 當一個人擁有出色的技能時,就會有一種機制來指導其他人。 當團隊的知識庫存在差距時,他們會尋找並僱用比所有團隊都聰明的團隊成員。
每個2020年的團隊成員都必須是跨領域專家。 任何技能僅限於堆棧的一兩個層的人都不是真正的2020年團隊合作伙伴-這些類型的個人可能渴望成為未來的2020年團隊成員,也可能不是。 但是,直到他們在棧的各個層次上獲得深入的知識之前,他們才是2020年的候選人。
2020年團隊成員為項目帶來的技能組合並未嚴格分類。 與我們迄今為止所採用的前端/後端類別不同,2020年的細分是多種多樣的。 一個2020年團隊的成員可能具有NoSQL,雲配置和持續集成等技能。 同時,另一個2020年團隊可能擁有一個類似的團隊成員,其技能包括SQL數據庫,Node.js服務器,容器和業務流程。 僅僅將其稱為2020年後端團隊球員,就不會給他們帶來太多榮譽。
最後,至關重要的組成部分:進行交流時應有共同的意願,即針對當前問題做出最佳決策。 這意味著技能重疊的同齡人應該以開放的心態進行交流。 同行不僅應該向同行通報新的發展,還應該討論一些事情。 這使每個人都變得更聰明,並且防止了專業化重新流行。共生增長。
您好," 2020 Stack!"
因此,讓我們旋轉一下,看看我們如何使用它來更好地將職位要求與求職者技能相匹配。 以下是項目經理可能發佈的內容,希望找到適合他們公司文化的方式:
Rock City Brewing正在尋找具有測試,文檔和代碼管理背景的“ 2020堆棧”團隊成員。申請人還應該至少在以下兩個領域中具有跨領域技能:雲配置,容器,編排,CI / CD和服務器端腳本。通過幫助我們選擇最佳的工作工具來塑造我們的未來。在RCB,職業發展是您工作的一部分。每週在技術星期二與RCB 2020其餘部分分享您的知識。
同一職位的招聘人員可以選擇一組更具體的關鍵字來查找候選人:
我們的客戶正在尋找“ 2020開發棧”團隊成員,以幫助進行迴歸測試,API文檔,Github工作流管理和DevOps。如果您有這些組合,我們希望收到您的來信。
這是申請人可能會在自己的LinkedIn個人資料中添加的內容(因為他很務實,因此使用了新舊術語):
Antoní是“ 2020 Stack”團隊的成員,在經典後端技術和2020 Gevlab,Kubernetes和Digital Ocean等較新的2020 DevOps層方面具有豐富經驗。Antoní積極倡導開源和DRY,並認為成功重用的關鍵是在出色的文檔中。
在每種情況下,我們都會看到代碼管理域和DevOps域之間的角色顯式橋接。 在每種情況下,對" 2020年開發棧"的點頭都表明,比起敏捷團隊的老手陳詞濫調,角色更加複雜。
分層,分層,分層
那麼,開拓這個新空間的最明智的方法是什麼? 前端和後端之類的術語是否給我們提供了我們所需的特異性? 服務器和網絡這兩個術語與設計和操作並列而已。 當然,這些類別足夠廣泛。 對?
但是,等等,我們不能忽視測試人員,因為我們知道沒有他們的技術,我們將交付劣於競爭對手的產品。 如果沒有營銷方面的幫助,我們甚至都不會擁有客戶。
所有這些以及更多情況都可以成立。 我已經分享了我的2020年最佳組合。 但是,如何分割層並不像其堆積方式那麼重要。 新的2020協議棧全部涉及跨域通信。 我認為那是新的文藝復興時期。
(本文翻譯自Joe Honton的文章《Full Stack Pronounced Dead》,參考:https://medium.com/better-programming/2020-001-full-stack-pronounced-dead-355d7f78e733)
閱讀更多 聞數起舞 的文章