為什麼DevOps和SRE職位這麼難招人?
Reddit上一位網友有這樣的困惑:
顯然,在任何領域都沒有足夠優秀的工程師,但是,為什麼DevOps / SRE人才特別難找?
這個問題引發了大家的討論,其中的回答總結起來大致有這些點:
“DevOps工程師”:被過度使用的術語
撇開“DevOps是一種文化而不是一種角色”這種老生暢談的話不談,DevOps工程師需要做任何事情:包括本地伺服器系統管理,構建工程,釋出管理,雲基礎架構管理,內部工具開發,IT支援,分散式系統工程,文化推廣或幾乎任何與技術有關的事情。DevOps工程師要掌握的技能範圍如此廣泛,扛著這麼多責任,以致於在為團隊篩選簡歷時對技能和工具的要求實在是太混亂了。
對於DevOps團隊管理者來說,有些人傾向於不用DevOps這個詞,但它現在已經很流行了。公司能做的最好的事情就是尋找體面的系統管理員和有開發技能的人員(或有良好的能力+很好的態度)。相比起硬技能,很多人更看重態度和學習的意願。只要有一位優秀的高階導師,這些有學習意願的人就可以學到很多東西。額外的收穫是,這個人學習你們的做事方式和最佳實踐,這樣可以避免一個太自我的員工。
沒有通往DevOps的傳統教育途徑
經驗和背景的多樣性是DevOps群體的強大優勢之一,但人才很難在早期被發現。一個優秀的DevOps工程師可以來自任何地方:很多DevOps工程師沒有正式的計算機專業文憑,有些甚至來自法律或會計等非技術背景。如果有更好的認證/學位真正能驗證“DevOps”技能,那將是很好的,但目前的現狀只能是這樣。
還有一些優秀的候選人具有技術實力和很好的軟技能,但在現在一些比較酷的面試中(如白板面試等)不能很好地展現出來,有人提到最好的方式是“試用”工作:候選人進來與團隊合作,如果他們表現和溝通都良好,就可以留下來了。但這很難實現。
流行工具相對年輕
顯然,大家聘請擁有二十年AWS經驗的工程師和十年kubernetes生產管理經驗的人。但如果對於這些工具每個人的經驗都不到三年,那麼很難確定誰的能力更強。
是的,所有的工具都很新。所以要尋找聰明,有學習動力的人(有良好的操作技能和一些開發背景的人),現在可能不具備所有的技能,但可以花時間慢慢培養。
有的人可能只有兩年的經驗,但是他們主動設定了公司整個Azure基礎設施,Arm模板,自動化測試。如果有人表現出了創新的主動性,並且從技術的角度來看會使公司的運作更加順利,就應該給他們機會,給他們3-6個月的試用期以證明他們是值得保留的。
而對於求職者來說,大家普遍提到的有以下這幾點。
薪酬福利
招一個可以寫好程式碼的開發人員很難。
想找到懂基礎設施的開發人員?那幾乎不可能。
想找到懂基礎設施,自動化,部署,網路,作業系統,資料庫等的開發人員,還不想開出足夠的薪酬?祝你好運。
一位網友提到他所在地區(丹佛)的優秀DevOps工程師每年起薪約為125,000美元。高階DevOps工程師的收入約為165K-185K美元。
Stack Overflow 2018 年最新的開發者調查結果顯示,在很多國家DevOps 專家收入最高,美國 DevOps 專家的年薪中位數接近 10 萬美元。看看各種發生故障刪庫跑路的事故就知道,一個高階DevOps人員真的值得花錢。
如果你的Title是devOps並且你的年薪不到100k美元,那麼恭喜你,要麼你是一個釋出工程師,要麼是一個系統管理員。
其次,文化/福利/工作生活平衡。SRE需求量很大,即使你能滿足你所在地區的工資需求和經驗需求,公司的文化如何?如果它比我目前的工作環境更糟糕,那應聘者為什麼還要考慮你們?薪酬很重要,但更有經驗的工程師知道錢並不是一切。
總結來說,這個問題的原因在於DevOps/SRE現在很熱門。如果想要招到高水平人才,就要給出比他們現在的工作更誘人的薪酬福利。或者,也可以招一個初級水平的人才慢慢培養。
全棧神話
SRE / DevOps被視為“兼職”工作。即使他們管理了數百個服務和數千個例項/容器,他們的技能組中也沒有在Java中構建微服務。或者他們不會白板資料結構和二叉樹,因為工作不需要。
但是公司希望他們能瞭解一切事情: “必須有5年的程式設計經驗,必須瞭解CI / CD,會用docker,kubernetes,linux,windows,Azure,GCP,AWS,jenkins,懂octopus部署,VSTS等”……
公司對DevOps/SRE角色定位不清楚
對於這一點,主要問題是公司認為他們需要一個DevOps或SRE人員來填補需要來自不同背景人員的多個職位空缺。
招聘DevOps很難,因為僱主通常不清楚他們想要什麼樣的DevOps人。關於DevOps,大致可以劃分成這樣的三類:
- 偏運維的DevOps - 系統管理員,具有一些網路技能,並且可以熟練地使用除shell / powershell之外的至少一種語言編寫指令碼。他們會部署和自動化IT基礎架構的各種元件,並可幫助解決這些元件的問題。他們還可以確定下一個專案的基礎設施要求,並可以設定CI / CD管道來傳遞基礎設施工件。
- 偏開發的DevOps - 他們是熟練的開發人員並且瞭解公司的開發棧。他們可以深入研究構建/部署故障並進行故障排除。他們還可以識別資源需求(例如JVM設定)和要使用的潛在框架。他們熟悉構建指令碼和設定構建,並知道如何新增和利用正在使用或建立的應用程式的效能指標。他們可以支援諸如應用軟體開發最佳實踐之類的事情,並且可以啟動/使用現有的CI / CD管道來提供軟體工件。
- DevOps工具專家 - 他們精通DevOps管道的管理,可以協助本地開發或其他IT成員使用工具。他們能及時瞭解IT行業中DevOps工具的最新資訊,並可幫助構建和引導DevOps管道更改的實現。
高階系統運維人員可能沒有在X雲的X年經驗,但他們可能一直在使用基於雲的工具。對於VMWare,Chef,Docker等工具有一定的經驗的人都應該能夠很好地過渡到其他虛擬和雲技術。
缺乏認可
現實情況是,大多數管理人員並不瞭解 DevOps的全部內容。對於純軟體開發人員,他們有一套指標 - 簽入數量,編寫程式碼的行數,解決的JIRA問題數量等等, 但他們不知道如何衡量DevOps人員的水平。保持一切正常執行並確保通過自動化順利部署非常重要,但管理人員不瞭解這其中的發生方式,也不知道如何衡量。
也有很多管理人員將DevOps視為成本,而不是收入來源。他們將DevOps人員當作一次性和可互換的物件,拒絕投資DevOps人員平穩工作所需的資源。除了缺乏支援之外,DevOps人員可能還做著髒活累活:正在嘗試使用的自動化工具有時候到處是bug,簡直讓人心累。
從公司管理者的角度來說,無論如何,如果你沒有從你自己的工程人員內部培養出優秀的DevOps人員,那麼就該問自己為什麼了。如果你不重視DevOps,其他人也不會,這樣就會在招人方面困難重重。
真正要找DevOps / SRE的僱主應該回到“誰對生產中斷負責”這個問題。如果答案是DevOps / SRE職位,那麼這個僱主的招聘就多了很多挑戰。如果他們說整個產品團隊,那麼至少他們對現實情況的認識是對的,出了問題不會只想找人背鍋,這樣的團隊才更容易找到合適的人才。
你的團隊的DevOps/SRE職位招聘困難嗎?作為DevOps/SRE工程師你在求職過程中感覺也是如此嗎?