除了写软件,软件工程师何去何从?
在非專業(yè)人的眼里,似乎軟件工程師出了寫代碼還是寫代碼。當然,也有不了專業(yè)人士會問到這幾個問題:“我接下來應(yīng)該學哪種語言?”、“如何準備技術(shù)面試?”、“你們招人嗎?”
這個問題無法給出很好的答案,那就是,“如果我不想當個開發(fā)人員去編寫軟件,那么該何去何從呢?”
當我于 InfoQ Pro(infoqpro)看到一篇文章后,才發(fā)現(xiàn)寫代碼的不一定成為軟件工程者,學法律的不一定成為律師。隨著社會和科技的發(fā)展,許多新興行業(yè)拔地而起,當很多學過、做過軟件開發(fā)的人不想再從事軟件開發(fā)工作時,還可以做這些事兒......
面向客戶的崗位
人際交往能力是一項軟技能,很多職業(yè)都能從中受益,軟件工程師也不例外。但有很多軟件工程師并不甘于此,我了解過的一些人不希望整天靜靜地坐在那里寫代碼。如果你希望你的職業(yè)道路有更多的機會與人交流,可能以下工作會適合你。
1. 開發(fā)者關(guān)系,宣傳,或傳道
現(xiàn)在越來越多的公司在努力建立與開發(fā)人員的關(guān)系,開發(fā)人員就是他們的客戶、用戶或擁護者,開發(fā)者關(guān)系領(lǐng)域也因之迅速發(fā)展。
開發(fā)者關(guān)系專家(一些公司稱他們?yōu)殚_發(fā)人員提倡者、開發(fā)人員傳道者、社區(qū)經(jīng)理或“DevRels”)負責幫助建立一個以公司軟件為中心的社區(qū)。
他們經(jīng)常參與開發(fā)應(yīng)用程序 Demo、撰寫博客文章、在會議上發(fā)言,以及管理科技公司的社交媒體賬戶。許多知名科技公司(如 Facebook、谷歌、亞馬遜等)都聘請了開發(fā)者關(guān)系專家團隊。
如果你對這個領(lǐng)域感興趣,可以了解一下 Mary Thengvall 和 PJ Hagerty 現(xiàn)在正在做什么。他們是這個領(lǐng)域中我最喜歡的兩個人,具有很高的影響力,一起推出了社區(qū)脈搏播客。
2. 開發(fā)者營銷
雖然這一工作與開發(fā)者關(guān)系有一些重疊,但相比而言開發(fā)者營銷更側(cè)重于對外。
針對開發(fā)者進行營銷特別棘手,因為我們不喜歡人家給我們“賣”東西,所以許多較激進的營銷策略在其他市場或許有效,但在這里卻成了禁忌。作為一個有技術(shù)背景的人,你自然更理解開發(fā)人員的思維方式,會比傳統(tǒng)的營銷人員有更大的優(yōu)勢。
SlashData 發(fā)布了很多關(guān)于開發(fā)者營銷的內(nèi)容,包括在 2018 年就這一主題出版的一本書。如果你想在這個領(lǐng)域起步,可以學習一下網(wǎng)絡(luò)營銷:SEO、社交媒體、內(nèi)容營銷、影響者營銷,等等。你可以在你的博客上練習這些技能,在應(yīng)聘崗位之前先把自己的能力展示出來。
3. 銷售工程師
許多工程師對任何標有“銷售”字樣的工作都不感興趣,但那只是因為我們遇到過的都是些糟糕的銷售人員。
其實,每個人都在做銷售。無論你是在面試過程中身為求職者“推銷”自己,還是鼓吹你的工程團隊采用的新框架,這些都是在做銷售。銷售,就是用恰當?shù)慕鉀Q方案去滿足客戶的需求。
在一定程度上,擁有一些技術(shù)專長的銷售工程師會很獨特。對于那些不想整天寫代碼但又了解軟件工程的開發(fā)人員來說,這是一個很不錯的選擇。
從事銷售的另一個好處是你不需要任何專業(yè)認證。Hubspot 做了一份很不錯的簡介,里面介紹了一些技能和資源,你可以據(jù)此進行入門學習。由于越來越多的公司在圍繞工程師開發(fā)軟件工具和服務(wù),使銷售工程師在未來十年可能會變得更加搶手。
4. 技術(shù)招聘
還有一份職業(yè)在軟件工程師中的口碑也不太好,那就是技術(shù)招聘。
我聽說過一些誠實、真誠的技術(shù)招聘人員(例如,來自我的家鄉(xiāng)芝加哥的 Taylor Dorsett 和 Matt Hoffman),但我也聽到過一些糟糕、無知的招聘人員,他們只是專注于為完成指標而去篩選候選人。
好消息是,具備軟件開發(fā)背景的你,會比其他技術(shù)招聘人員更有同理心和可信度。和銷售一樣,這個行業(yè)需要更外向、注重人際關(guān)系的個性,而不需要專門的證書或課程。
壞消息是,許多技術(shù)招聘的入門級職位都是在一些低端公司,所以在求職之前一定要先在網(wǎng)上查查他們的聲譽。
面向產(chǎn)品的崗位
如果你想繼續(xù)留在產(chǎn)品團隊,但又不確定是否想成為一名軟件開發(fā)人員,那么也有許多領(lǐng)域可以考慮。這些角色在工作中需要與工程師緊密協(xié)作,所以你的編碼知識會有所幫助,但這些崗位也需要具備一些其他的專業(yè)知識。
5. 質(zhì)量保證或測試工程師
雖然質(zhì)量保證和測試工程師之間存在著細微的差別,但他們的共同點都是在軟件上線之前從事測試工作。
如果你眼尖心細,喜歡想些創(chuàng)造性的方法來自動化重復的工作,這可能是一條很好的職業(yè)道路。它可能需要一些編碼以及一些手工測試工作。
規(guī)模較小的公司一般會讓他們的軟件工程師彼此之間互測,所以基本上都是在大公司中才能見到專門的測試和 QA 崗位。公司進行測試的方式有很大的差異,所以一定要問問他們使用的工具,他們的測試的自動化程度,以及你的崗位需要做多少手工測試和自動化測試。
6. 業(yè)務(wù)分析師
產(chǎn)品開發(fā)生命周期的另一個端點是業(yè)務(wù)分析師。它們通常充當業(yè)務(wù)團隊和技術(shù)團隊之間的橋梁,以確保需求、限制和時間安排得到充分理解。取決于團隊的結(jié)構(gòu),他們還有可能參與一些測試和質(zhì)量保證,因此他們需要具備豐富的產(chǎn)品知識。
如果你具有業(yè)務(wù)、產(chǎn)品開發(fā)或設(shè)計方面的背景和一些編碼技能,你就可以勝任初級業(yè)務(wù)分析師的角色。如果還不具備這些條件,我建議你去找一些在線課程來幫助你對這個角色有一個大概的了解,知道它的崗位基本需求是什么。
7. 項目經(jīng)理
與業(yè)務(wù)分析師一樣,項目經(jīng)理必須了解產(chǎn)品的業(yè)務(wù)需求和技術(shù)約束。
它們的關(guān)鍵區(qū)別在于,項目經(jīng)理通常會深入?yún)⑴c到某個項目中。他們經(jīng)常為該項目的團隊定義任務(wù)和資源,在項目臨近發(fā)布日期時跟蹤項目的進展。
較小的公司可能會以各種方式合并業(yè)務(wù)分析師、項目經(jīng)理、Scrum Master 和產(chǎn)品經(jīng)理的角色,而較大的公司可能會單獨定義各自的崗位職責。
作為一名項目經(jīng)理,優(yōu)秀的組織能力、對業(yè)務(wù)的理解和人際交往能力是其取得成功的關(guān)鍵。在這個職位上,要具備管理期望的能力,并且,能夠激勵那些可能比你更資深或更有經(jīng)驗的人,所以你必須與他們迅速建立起彼此信任的關(guān)系。這個角色的多面性使得它非常適合那些不想再寫代碼的分析型、技術(shù)型人員。
8. Scrum Master
在敏捷團隊中,Scrum Master 幫助確保每個人都了解并認同 Scrum 理論、最佳實踐和規(guī)則。
看起來這很像是項目管理,但需要特別注意的是,它是為其他構(gòu)建產(chǎn)品的團隊提供服務(wù)的。與上述很多角色一樣,這個崗位不一定總是只負責這些工作,可能還要肩負其他的職責,但在較大的組織中,可能會設(shè)有專崗。
管理期望和約束的能力對能否成為一名成功的 Scrum 管理員至關(guān)重要。你還需要了解敏捷的最佳實踐,因此我建議你就這一主題找一些合適你自己的課程或書籍。在各種規(guī)模的組織中,敏捷已經(jīng)得到了廣泛的采用,因此在未來的十年中,這條職業(yè)道路可能會繼續(xù)發(fā)展下去。
9. 產(chǎn)品經(jīng)理
產(chǎn)品經(jīng)理從整體上看公司的產(chǎn)品,以確保它們是符合預(yù)期的(客戶想要的),在商業(yè)上是可行的(有商業(yè)意義的),在技術(shù)上也是可行的(我們能做得出來)。像這樣能在高層次上思考的能力是很稀缺的,所以如果你擁有這樣的能力和一些技術(shù)背景,可能會成為一名出色的產(chǎn)品經(jīng)理。
初級產(chǎn)品經(jīng)理可以從產(chǎn)品中比較小的組件開始入手,或者先來當當項目經(jīng)理。這可以讓你對產(chǎn)品開發(fā)有一個初步的了解,并在被委派管理你自己的產(chǎn)品之前,幫你與所有必要的利益相關(guān)者打好關(guān)系。
10. 設(shè)計師
如果你有設(shè)計或藝術(shù)背景,可以考慮當一名具有編程能力的 UI 或 UX 設(shè)計師,這是一個令你在這一領(lǐng)域脫穎而出的好方法。綜合運用這些技能將使你能夠更有效地與工程師交流,使用 HTML/CSS 創(chuàng)建交互式模型,而不僅僅是靜態(tài)圖像文件。
如果你在設(shè)計方面沒有太多經(jīng)驗,那就上上課,動手做一個作品集。許多公司也會雇傭沒有相關(guān)學位的人,只要他們能展示出自己的知識和技能。在我見過的作品集平臺中,最常用的是 Dribbble,當然,你也可以選擇使用自己的網(wǎng)站。
11. 無代碼或低代碼開發(fā)人員
在過去的幾年里,無代碼和低代碼開發(fā)工具的激增使一些公司可以無需雇傭開發(fā)團隊即可快速構(gòu)建軟件。這些工具可以讓你在數(shù)小時內(nèi)就能創(chuàng)建一款移動或網(wǎng)絡(luò)應(yīng)用程序,而不必再花費數(shù)周的時間。而且,它們每年都在進步,越來越多的公司開始擁抱無代碼應(yīng)用程序。
Makerpad 和 No Code Jobs 是嘗試入手這類工作的不錯選擇。因為這是一個新的領(lǐng)域,你會發(fā)現(xiàn)它有著各種不同的技能要求和工資標準,但你會寫代碼的背景毫無疑問會是一個競爭優(yōu)勢。
支持類角色
其實,要保持服務(wù)器、網(wǎng)站和運維的順暢運行需要許多員工的幫助,很多新入行的軟件工程師都不知道這些幕后的角色。其中一些角色需要編寫自動化腳本,或者對服務(wù)器管理有深入的了解,但是如果你正在尋找傳統(tǒng)產(chǎn)品開發(fā)周期之外且又偏技術(shù)型的崗位,那么這些角色可能非常適合。
12. 系統(tǒng)管理員或 DevOps 工程師
大型軟件公司每年都有成百上千臺服務(wù)器需要打補丁、升級和輪換使用。雖然云計算的廣泛采用改變了這項工作,將它從物理插拔服務(wù)器變成了與 Terraform 和 Kubernetes 這樣的軟件打交道,但這個領(lǐng)域仍有大量的工作要做。
傳統(tǒng)上,系統(tǒng)管理員負責根據(jù)工程團隊的需要維護和管理服務(wù)器。隨著組織的發(fā)展,服務(wù)器遷移到云上托管,許多組織都采用了 DevOps 工程師這個頭銜,表示提升了這個過程中的自動化程度。實際上,兩個角色之間有很多的重疊。
無論是其中哪一個,你都需要對操作系統(tǒng)、托管平臺、自動化工具、bash 腳本和系統(tǒng)架構(gòu)有基本的了解。想在這個領(lǐng)域找到入門級的工作是很困難的,因為它需要大量的技術(shù)知識儲備,但是如果你喜歡不借助于 UI/UX 來解決工程問題,這是一個很好的過渡角色。
13. 數(shù)據(jù)庫管理員
一些公司將數(shù)據(jù)庫管理員與系統(tǒng)管理員混為一談,但其實它們屬于不同的角色。
數(shù)據(jù)庫管理員處理底層數(shù)據(jù)存儲系統(tǒng)的安全性、供應(yīng)、擴展和優(yōu)化。如果從事這一崗位,你需要具備 SQL 和 NoSQL 數(shù)據(jù)庫的知識、安全最佳實踐以及一些基本的腳本技能,但整天都去編寫代碼的可能性不大。你還需要關(guān)注一些非常小的優(yōu)化問題,比如調(diào)整索引和緩存。
如果你是軟件開發(fā)方面的新手,那么入門的時候請盡可能學習數(shù)據(jù)庫方面的知識。你需要知道哪款數(shù)據(jù)庫適用于哪類應(yīng)用程序,以及如何對每個數(shù)據(jù)庫進行大規(guī)模優(yōu)化,因此你靠自己一個人是很難做到的。如果你想找一些大型數(shù)據(jù)集來使用,可以到 Kaggle 看一看。
14. 網(wǎng)站可靠性工程師
網(wǎng)站可靠性工程師負責解決生產(chǎn)環(huán)境中出現(xiàn)的致命問題。?這通常意味著他們必須輪流值班,以便時時有人待命以便能“隨叫隨到”,所以你的工作時間可能會與大家有點不同。?積極的一面是,你將真的能夠擅長解決各種不同尋常的問題、編制自動預(yù)警和看懂服務(wù)器日志。
由于網(wǎng)站可靠性的工作要求隨時立即做出響應(yīng),所以很難做到讓富有經(jīng)驗的軟件工程師長期擔任此類崗位。也就是說,如果你在尋求第一份軟件開發(fā)的工作時遇到困難,那么它可能是你入行的不錯選擇。你甚至可能會發(fā)現(xiàn)自己喜歡上這種快速解決問題的挑戰(zhàn),喜歡上這種刺激的感覺。
15. 技術(shù)或客戶支持
雖然有些工程師害怕與客戶打交道,但也有一些工程師覺得整天幫助人們解決問題能讓他們活力滿滿。在軟件公司中,你的編碼經(jīng)驗將使你成為客戶支持這一職位的理想人選,這些公司需要有技術(shù)背景的人來回答問題并提出解決方案。
在支持團隊工作的缺點是,你可能不得不在人家最不爽的時候與人家打交道。心懷不滿、滿腹怨氣的用戶可能不愿意與技術(shù)支持團隊交流,因此你需要極大的耐心和極厚的臉皮才能長期擔任這個角色。教學與寫作類角色
我一直都很喜歡教學,所以我很喜歡那些讓自己有機會去做這件事的工作崗位。如果你喜歡把復雜的話題拆解簡化并介紹給其他工程師,那么下面幾條職業(yè)道路可能會適合你。
16. 技術(shù)寫手
這是一份非??菰锏墓ぷ?#xff0c;但能每天學習新東西。技術(shù)寫作不僅僅意味著寫文檔。你可以將目光瞄向技術(shù)博客或文案;你可以編寫內(nèi)部或外部文檔;你可以編寫應(yīng)用程序演示和教程。對于寫手來說,這是收入最高的領(lǐng)域之一,所以值得考慮。
顯然,如果你走這條路,需要擅長寫作,此處還需要能夠?qū)碗s的想法有條理地組織起來,并善于學習新東西。你自我改稿的能力越強,你的工作就越有價值,所以一定要在相關(guān)工具上投資,讓它們幫助你變得更好、更有效率。
一開始,你可以先為一些付費的社區(qū)寫作項目寫作,然后建立和完善你的關(guān)系網(wǎng)和作品集,在此過程中把這些經(jīng)驗轉(zhuǎn)化為一份全職工作。
17. 教師
有幾種途徑可以使你從軟件開發(fā)的職業(yè)轉(zhuǎn)向教師。你可以在編程訓練營找到一份教學的工作,你可以在大學或高中教書,你可以加入 egghead.io 這樣的平臺?;蛘吣憧梢允褂?Teachable 或 Educative 創(chuàng)建自己的課程網(wǎng)站。選擇什么道路,取決于你的背景和承擔風險的能力。
無論如何,教師必須能夠快速學習新知識,并通俗易懂地呈現(xiàn)給學生。你必須適合聽眾的水平,他們樹立起成功的信心,這樣才能取得成功。教學的報酬可能比不上軟件開發(fā),但它也可以成為一個非常令人滿意的職業(yè)道路。
18. 培訓師
企業(yè)培訓是另一種教學形式,也是一個很值得考慮的選擇。培訓師可以是獨立的咨詢師,也可以是大公司的員工,他們通常會到客戶辦公場所提供特定軟件的實操培訓。
培訓師可能有深厚的專業(yè)知識,但也有可能只是一些技術(shù)高超的傳播者。做企業(yè)培訓通常比教學收入高,但它也可能更受銷售導向的影響。培訓師經(jīng)常在峰會上演講,在社區(qū)講習班講課,或者在培訓課程間隙參加些聚會。
如果你喜歡在臺上講述技術(shù)概念,這可能是一個理想的職業(yè)道路。
分析類角色
科技公司的很多職位都需要具備分析能力。雖然它們大多都需要接受一些專門的教育,但是如果你想不再從事軟件工程方向,還是值得考慮一下的。你的工作節(jié)奏將與大多數(shù)以產(chǎn)品為中心的工程師不同,像上面提到的支持角色一樣,你可能要與公司的其他角色進行交互。
19. 數(shù)據(jù)科學家或工程師
這兩個角色(有些公司將它們合并在一起)的主要工作是使用大數(shù)據(jù)來幫助企業(yè)或客戶做出更好的決策。
數(shù)據(jù)工程師通常是圍繞數(shù)據(jù)攝取和數(shù)據(jù)組織流水線開展工作,而數(shù)據(jù)科學家則是設(shè)計實驗和算法,將這些數(shù)據(jù)處理成有用的結(jié)果。數(shù)據(jù)科學(人工智能、機器學習等)是一個立足于數(shù)學、軟件工程和統(tǒng)計的廣闊領(lǐng)域。
關(guān)于數(shù)據(jù)科學和工程,有一些專門的課程、訓練營和大學學位,但是如果你有很強的數(shù)學背景,也可以自學一些基礎(chǔ)知識。如果沒有這方面的背景,可以考慮先溫習一下數(shù)值分析、矩陣代數(shù)和統(tǒng)計。
因為這些技能需要花很長時間才能掌握,而且數(shù)據(jù)科學家的需求量又很大,所以這個職位薪水很高,而且短期內(nèi)不太可能消失。
20. 安全分析師
如果不出現(xiàn)問題,信息安全角色通常得不到關(guān)注。雖然每個開發(fā)人員都應(yīng)該對安全漏洞和風險有一定認識,但一般都會專門招聘安全分析人員來查找安全問題,對這些問題予以歸類,并提出修復建議。
有些工作是請獨立的顧問來開展的,但在大公司,可能會有內(nèi)部的安全團隊。這個角色很有意思,因為它既需要掌握技術(shù)和法律法規(guī),也需要掌握業(yè)務(wù),能夠做風險評估。
安全崗位也是最難招聘的崗位,所以你從事這一工作會很有保障。信息安全是一個非常廣泛的領(lǐng)域,因此,如果你有興趣致力于此,可以有很多選擇。
21. 研發(fā)
對于擁有軟件工程技能的人來說,在研發(fā)部門的工作會成為一種獨特的經(jīng)歷。像谷歌和亞馬遜這樣的大公司會拿出一部分利潤由研發(fā)團隊進行一些高風險且可能會有高回報的實驗。這些跨學科團隊可能包括軟件開發(fā)人員、數(shù)據(jù)科學家、業(yè)務(wù)分析師和項目經(jīng)理。
進入一個優(yōu)秀的研發(fā)團隊并不容易。這些崗位往往要面對很強的競爭,并且它需要非常專業(yè)的知識,這些知識可能在編程訓練營是學不到的。所以說,有些公司雇傭道德黑客、創(chuàng)始人或多語言達人來幫助團隊更加完善,并為團隊注入一些創(chuàng)造性思維。
獨立的、靈活的角色
雖然有些職業(yè)常常允許我們遠程辦公,有時甚至有學術(shù)休假,但你可能想讓自己的生活更加靈活、自由。如果你有動力創(chuàng)業(yè),可以選擇每周只工作 4 小時,一年花 6 個月的時間來旅行,或者把一半的時間花在開源項目上。創(chuàng)業(yè)并不容易,但是作為一名軟件開發(fā)人員,相比大多數(shù)人有很大的優(yōu)勢。
22. 自由職業(yè)者或顧問
如果想要更加自由,有個方法是辭掉朝九晚五的工作,成為一名自由職業(yè)者。作為一名自由職業(yè)者,你可以把自己雇傭給一個或多個客戶,他們會按小時付費請你為他們寫代碼。公司經(jīng)常雇傭自由職業(yè)者從事特定的短期項目,清理技術(shù)債務(wù),或者在正式員工休假時補個缺。
咨詢師是為客戶解決特定問題的高端自由職業(yè)者。雖然他們可能會編寫代碼,但他們的賣點主要是他們的專業(yè)知識或獨特的背景。自由職業(yè)者和咨詢師之間的界限是非常模糊的,所以不要在名稱上太過糾結(jié)。
入行做自由職業(yè)者或顧問是最困難的。如果你沒有一個龐大的關(guān)系網(wǎng),可能將依靠 Upwork 或 Toptal 這樣的平臺來尋找客戶。這些平臺的抽成占你收入的很大一部分,而且你還必須得與世界各地許多其他自由職業(yè)者直接展開競爭。
如果你贏得了口碑和聲譽,有了自己熟絡(luò)的客戶,他們的推薦能讓你得到更多的工作。推薦的好處在于,客戶是基于可信的關(guān)系來找你的,而不是在網(wǎng)絡(luò)上盲目搜索。如果你真的很擅長做自由職業(yè)者或咨詢,可以把你的報酬標準提得足夠高,這樣每次做完一項工作就可以休息更多的時間了。
23. 創(chuàng)業(yè)公司的創(chuàng)始人
互聯(lián)網(wǎng)上充斥著軟件工程師創(chuàng)業(yè)的故事(1, 2, 3),所以你可能會覺得創(chuàng)業(yè)很簡單,甚至是個好主意。
事實上,這要視情況而定。
創(chuàng)業(yè)通常需要很長一段時間才能產(chǎn)生收益,所以在你取得成功之前,可能幾個月甚至幾年都沒有收入。話雖如此說,但如果你想開一家自己的軟件公司,幾乎有數(shù)不清的好處。
你也可以一邊上班,一邊開一家公司。雖然這很難做到(可能會有法律后果),但也并不罕見。如果你能找到一兩個其他的創(chuàng)始人一起創(chuàng)業(yè),可能會增加成功的機會。
結(jié) 語
軟件工程是一個令人興奮的領(lǐng)域,但它并不適合所有人。即使你離開這一領(lǐng)域,決定做些別的事情,你已經(jīng)掌握的技能也不會白白浪費。
許多人對于在軟件開發(fā)領(lǐng)域之外找工作充滿顧慮,而我鼓勵你走自己的路。在務(wù)實(賺足夠的錢來生活)和你的興趣之間找到平衡,希望你能找到一條讓工作感覺不像是“工作”的職業(yè)道路。
我很想聽聽大家的想法。如果你有著不同的職業(yè)道路,歡迎在評論區(qū)留言。
?
總結(jié)
以上是生活随笔為你收集整理的除了写软件,软件工程师何去何从?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据分析方法论有什么用,主要的数据分析模
- 下一篇: wamp mysql 启动 mysql_