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