在行業(yè)中,“軟件開發(fā)者”和“軟件工程師”這兩個(gè)術(shù)語可以隨意互換使用。
如果招聘信息中寫的是招聘開發(fā)者角色,你去了以后,其實(shí)也可以面試工程師角色。
那么最終究竟哪個(gè)更重要?
職稱為什么很重要?
對于初學(xué)者來說,兩者的區(qū)別沒那么大可能是一件好事,因?yàn)檫@樣就可以使求職界限變得不是那么分明,也更容易找到工作——在寫這篇文章的時(shí)候,澳大利亞有超過1200位“軟件開發(fā)者”以及1500位“軟件工程師”。
如果你已經(jīng)身處該行業(yè)之中,試圖往上攀升,或者希望能夠找到另外一份職位,不想再從事編碼的工作,那么評估接下來哪些步驟可行也是很重要的。
毫無疑問,Reddit上的這篇帖子會(huì)引發(fā)很多爭議,有人認(rèn)為沒有區(qū)別,甚至付諸實(shí)際行動(dòng),將自己的職位名稱給改了,該用戶說道:“我的招聘合同上寫著我的職位是‘軟件開發(fā)者’,但有一天,我把網(wǎng)站上自己的職位改為了‘工程師’。這事好像發(fā)生在2年前,直到現(xiàn)在壓根就沒有人注意到這點(diǎn)?!?/p>
最重要的是,這種情況還將會(huì)只需很長一段時(shí)間。隨著軟件的進(jìn)步,技術(shù)和工程角色的數(shù)量將只會(huì)增長。就業(yè)部預(yù)測,到2019年信息和通信技術(shù)(ICT)行業(yè)將會(huì)新增14,600個(gè)新角色,所以我們認(rèn)為是時(shí)候?qū)で筮@兩者之間的差異了。
雇主怎么說
我們決定和兩位領(lǐng)導(dǎo)交談,正面討論這個(gè)話題,并試圖從討論中得到一點(diǎn)見解。我們聯(lián)系了Tribal Melbourne的技術(shù)主管Aaron Sempf以及Big Red集團(tuán)首席技術(shù)官Brett Raven。
Aaron是一名很有素養(yǎng)的工程師,具有結(jié)構(gòu)化系統(tǒng)和軟件的開發(fā)背景。最近一直在建立自己的團(tuán)隊(duì),他在尋找新員工時(shí),研究了其他公司發(fā)布招聘信息時(shí)給出的招聘角色。在與其他公司的行業(yè)招聘人員和同行交談時(shí),他發(fā)現(xiàn)自己對開發(fā)者和工程師角色之間缺乏了解。
Brett于2017年初加入RedBalloon,幫助推動(dòng)產(chǎn)品的重新構(gòu)建,并推進(jìn)技術(shù)路線圖。從那以后,他跳槽到了Big Red集團(tuán),為Redii和其他集團(tuán)公司提供技術(shù)指導(dǎo)。
Brett在大學(xué)的專業(yè)是計(jì)算機(jī)科學(xué)(他自己也不是“工程師”),但在Lux集團(tuán)和RedBalloon等公司領(lǐng)導(dǎo)過強(qiáng)大的工程團(tuán)隊(duì)。
開發(fā)者或工程師
“開發(fā)者和工程師這兩個(gè)角色之間有一個(gè)本質(zhì)區(qū)別?!?/p>
Aaron:大多數(shù)時(shí)候我覺得“職稱無所謂”,但開發(fā)者 和 工程師這兩個(gè)角色之間還是存在著根本區(qū)別。
工程師
在開發(fā)生命周期中,可以根據(jù)角色和執(zhí)行任務(wù)的不同可以很輕松地將兩者區(qū)別開來。
但是由于通信環(huán)境正在不斷發(fā)展創(chuàng)新,也逐漸以用戶為中心,而且所有的JS框架、標(biāo)記預(yù)處理器、語言和應(yīng)用程序框架都使得瀏覽器和移動(dòng)設(shè)備可實(shí)現(xiàn)的范圍變得越來越大,因此要想真的區(qū)分工程師和開發(fā)者之間的區(qū)別,還是有點(diǎn)困難的。
傳統(tǒng)意義上的工程師或工程技術(shù)人員,都是一個(gè)可以憑借其基礎(chǔ)教育和培訓(xùn)能力,能夠運(yùn)用科學(xué)方法來分析和解決工程問題的人。
簡而言之就是說工程師可以通過工程原理的教育,然后具有了一定的根本基礎(chǔ),然后通過應(yīng)用工程概念來創(chuàng)造解決方案。
開發(fā)者
而開發(fā)者不像工程師那樣經(jīng)過科學(xué)方法和工程原則基本原理的培訓(xùn),開發(fā)者更傾向于在工作者閱讀書籍或者博客,或?qū)W⒂陂_發(fā)生命周期的特定方面的課程,使自己變得更有思想。
盡管到目前為止,我只是說明了工程師和開發(fā)者之間存在著教育、應(yīng)用方法和模式的差異,實(shí)際上在團(tuán)隊(duì)中他們的角色也是不同的。
在填補(bǔ)工程師角色或開發(fā)者角色時(shí),我在招聘時(shí)判斷的特性可能完全不同,然而我給予這兩者的任務(wù)或測試是相同的,但以不同的方式進(jìn)行評估。
通過解決不同的技術(shù)知識問題是獲得關(guān)于專業(yè)水平和領(lǐng)域的基本指標(biāo)的簡單方法,但這是技術(shù)分配和模糊問題,真正將工程師與開發(fā)人員區(qū)分開來。
我最喜歡一道簡單的數(shù)學(xué)測試,這個(gè)測試經(jīng)常讓人變得混亂,6÷2(1 + 2)=? …每個(gè)人必須提供一個(gè)答案,并解釋他們是如何得到這個(gè)答案的。
這個(gè)測試可以反映每個(gè)人的教育基礎(chǔ)。我得到的最常見的兩個(gè)答案是1和9,候選人需要解釋出如何得到這個(gè)答案,這樣才更具有說服力。但是真正能區(qū)分出誰擁有數(shù)學(xué)或科學(xué)基礎(chǔ),誰不具有,通常是能給出第三種不常見的答案。
“由于模棱兩可,這個(gè)等式是無法解決的”。與提供這個(gè)答案的人進(jìn)行討論,結(jié)果表明,他們不是沒辦法解決這個(gè)問題,而是從更高的層面來理解方程式。
在技術(shù)評估中,開發(fā)者可以將真正的創(chuàng)造力更多地體現(xiàn)出來,比如給定的輸入和期望的輸出測試,候選者必須編寫邏輯來接受給定的輸入并提供預(yù)期的輸出。在這樣的測試中,開發(fā)人員如何運(yùn)用他們的邏輯就可以反映出他們的“代碼人格”。
沒有所謂的正確或錯(cuò)誤的答案,只要能達(dá)到期望的輸出,解決方案就會(huì)歸結(jié)到個(gè)人能力,即在給定的框架內(nèi)將指令轉(zhuǎn)換為解決方案的能力。
在一天結(jié)束的時(shí)候,如果想證明我可以進(jìn)行創(chuàng)新型思考,并為模塊化問題開發(fā)邏輯解決方案,這非常適合于通信行業(yè)的Web開發(fā),這種人可能更接近于開發(fā)者。
另一方面,如果我想證明我可以運(yùn)用科學(xué)和工程原理來創(chuàng)建一個(gè)更高層次的總體解決方案,而不是描述許多模塊的工作原理,那么這種人可能更接近于工程師。
作為工程師的開發(fā)者
“我更喜歡使用’Junior’,’Mid’和’Senior’作為限定詞的分類,將開發(fā)人員和工程師視為可互換的?!?/p>
Brett:我也覺得“職稱不重要”,現(xiàn)在科技領(lǐng)域中很多角色之間的界限都是很模糊的。至少在過去十年中,每個(gè)人都可以聽到開發(fā)者,程序員(/分析師),工程師,編碼員等等的術(shù)語。
傳統(tǒng)定義似乎隨著最新的趨勢而變得模糊和淡化。在過去的五年或更長的時(shí)間里,編寫代碼或?yàn)閷W(xué)習(xí)代碼而支付的人數(shù)已經(jīng)爆炸性地增長。
不同類型的類別
我可以看出,“開發(fā)人員”和“工程師”之間唯一真正的區(qū)別就是在任務(wù),目標(biāo)或業(yè)務(wù)問題上橫向思考的廣度。在我的職業(yè)生涯中,我更愿意使用“Junior”,“Mid”和“Senior”作為限定詞的分類,將開發(fā)者和工程師視為可互換的。
我的意思是,我希望高級開發(fā)人員能夠全面地有所表現(xiàn)和思考。他們應(yīng)該運(yùn)用一切本質(zhì)上的科學(xué)或工程方法,并且每分鐘考慮一下工作的架構(gòu)和附帶效應(yīng)。我期望初級開發(fā)人員執(zhí)行給予他們的任務(wù)和實(shí)現(xiàn),關(guān)注他們需要知道什么,而不是知道所有事情。我期望中級開發(fā)人員開始考慮代碼的影響,而且仍然執(zhí)行分配給自己的任務(wù),并開始更深入地考慮體系結(jié)構(gòu)和業(yè)務(wù)需求。對于我來說,這是一個(gè)專業(yè)發(fā)展的問題,它決定了手頭任務(wù)的廣度和細(xì)節(jié)(或相反的戰(zhàn)略影響),而不是角色名稱背后的細(xì)微意義。這是關(guān)于個(gè)人和他們的能力,而不是傳統(tǒng)意義上的工作描述。
兩者的比較
Aaron用術(shù)語總結(jié)他的理論,“開發(fā)者是負(fù)責(zé)實(shí)現(xiàn)的。開發(fā)者只需要把他們的才能集中在單一領(lǐng)域,一個(gè)特定的任務(wù),或者一個(gè)特定的環(huán)境中,不需要關(guān)注“大局”。 而工程建筑師,需要關(guān)注“大局”。工程師可以擔(dān)任開發(fā)者角色,但是工程師的核心重點(diǎn)在于架構(gòu),設(shè)計(jì)和規(guī)劃。
可以做一個(gè)簡單的比喻;從事于機(jī)械工作并不代表你就是機(jī)械工程師,同理編寫代碼也不代表著你就是軟件工程師。
然而,Brett認(rèn)為,“與記者和編輯比較,機(jī)械師和機(jī)械工程師的類比可能更適合軟件開發(fā)。前者能夠憑借多年的經(jīng)驗(yàn)和扎實(shí)的業(yè)績,學(xué)習(xí)他們在工作中的更廣泛的技能。 機(jī)械師通常沒有機(jī)會(huì)學(xué)習(xí)實(shí)際建造他們知道如何修理的機(jī)器所需的必要紀(jì)律(例如數(shù)學(xué),物理學(xué),材料等)。
結(jié)束語
說實(shí)話,這個(gè)總結(jié)太困難了?,F(xiàn)在你應(yīng)該很清楚如果不結(jié)合發(fā)布者的背景而想要單純的區(qū)分哪種角色意味著什么是一個(gè)多么大的挑戰(zhàn)了吧。
所有答案都有一個(gè)共同之處,就是職稱似乎并不重要。
索尼互動(dòng)娛樂公司的軟件工程師Jason Roos可能總結(jié)出了最好的建議,他認(rèn)為這取決于你自己所信仰的東西:
“‘工程師’一詞通常意味著某種設(shè)計(jì)過程是有條不紊的“建設(shè)者”,其中包括有意識地應(yīng)用既定的模式和原則。
當(dāng)然,有些開發(fā)者是滿足這個(gè)意義的。然而,實(shí)際上,正式的標(biāo)題沒有任何意義。軟件工程不是一個(gè)被許可的行業(yè),公司經(jīng)常利用這個(gè)事實(shí)和標(biāo)題的價(jià)值,把它作為一種附帶的福利給他們的員工 - 不管個(gè)人的方法如何。
話雖如此,我并沒有把自己稱為“軟件工程師”,因?yàn)槲业睦习甯嬖V我可以(即使那是我的頭銜)。我這樣做是因?yàn)槲蚁嘈抛约菏且粋€(gè)人。我這樣做是因?yàn)槲易鹬剡@個(gè)詞的內(nèi)涵,因?yàn)槲颐刻於荚谂_(dá)到這個(gè)意思。
如果有人有同感,那么在我的書中,他也是一個(gè)軟件工程師(不管他的名片上有什么)?!?/p>
所以,如果認(rèn)為你現(xiàn)在的職稱是不正確的,其實(shí)對雇主來說,他們根本就不在乎。但是,如果這對你來說很重要,那就把你的情況跟老板說。
如果你正在尋找新的角色,請確保你很清楚你想要涉及的那個(gè)行業(yè),然后很簡單,只需要向招聘你的人問一個(gè)問題,在這個(gè)角色里面你的核心工作是干什么的就可以了。
如果一切都失敗了,而你還執(zhí)意如此,不要擔(dān)心 - 有人說2060年軟件工程師就會(huì)被淘汰了。
-
工程師
+關(guān)注
關(guān)注
59文章
1565瀏覽量
68412 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
548瀏覽量
16971
發(fā)布評論請先 登錄
相關(guān)推薦
評論