專業主義/伊恩·博戈斯特、娜迪亞·埃格巴爾和軟體工程師
2015年,伊恩·博戈斯特,一位遊戲設計師和佐治亞理工學院媒體研究和互動式計算教授,在《大西洋月刊》上發表了一篇文章,名為“程式設計師:停止稱自己為工程師”,討論了他對使用“工程師”一詞來描述軟體工程師的看法。 [1][2]博戈斯特認為,現代軟體工程原理和方法論已經偏離了傳統工程領域,因此“軟體工程師”一詞不再適用,這樣做是對工程行業的傷害。娜迪亞·埃格巴爾在回應博戈斯特的文章中指出,博戈斯特的觀點雖然部分正確,但沒有考慮到讓該領域發生如此變化的軟體工程師。 [3]
博戈斯特強調軟體工程和傳統工程原理之間的差異,作為他對“軟體工程師”一詞看法的理由。
博戈斯特將傳統工程學科定義為機械、土木、化學、電氣和環境工程,強調它們對基礎設施和公共福利與安全的關注。這些工程領域的設計過程是一個非常謹慎而徹底的過程,它依賴於準確性和精確性,以確保產品在現實世界中的成功,因為錯誤會導致災難性的後果。 [2]失敗的例子包括魁北克大橋的多次坍塌,其中一次是由於負荷誤算,以及美國宇航局的氣候軌道器,它在工程師未能正確轉換單位後墜毀在火星表面。 [4][5]博戈斯特指出,因此,工程師有責任“第一次就做對”。工程道德規範也強烈強調公共福利和安全。 [6]傳統領域的工程師現在必須滿足各種要求才能執業,包括學歷和專業資格考試。
博戈斯特認為,軟體工程沒有遵循與傳統工程相同的原則,因此不應該在職位名稱中使用“工程師”一詞。當軟體工程在 1960 年代初開始發展時,它確實表現出更多博戈斯特所描述的傳統工程特徵。軟體開發所需的物理基礎設施已到位,軟體維修費用昂貴,有時甚至需要物理干預。這意味著軟體工程師與其他工程師一樣,必須仔細而有條理地編寫程式碼,以最大程度地減少在實施後修復和除錯的機會。然而,隨著個人電腦開始越來越普遍,軟體開發變得更加容易被公眾接受。博戈斯特認為,這使得軟體工程成為一種更非正式的實踐,產生了兩個後果。首先,它減少了在第一次嘗試中製作正常工作的軟體的壓力。軟體工程教育現在側重於快速編寫和測試迭代,然後在之後修復。博戈斯特將此與土木工程進行比較,稱該學科永遠不會有這樣的原則。其次,它將該學科與其他領域隔離開來,包括其他工程領域。雖然許多計算系統仍然與社會中的其他領域相互連線,但博戈斯特指出,社交媒體等平臺只依賴於軟體。這種缺乏與其他領域的合作違背了博戈斯特對傳統工程的定義。現在的軟體工程師不再需要擔心甚至瞭解軟體工程背後的數字和物理基礎設施,而只專注於程式碼。這可以使程式碼更可靠,但也造成了軟體工程師與工程其他部分之間更大的差距。然而,博戈斯特還指出,現代軟體工程問題正在變得越來越大規模,在日常生活中越來越突出,這表明其重要性、高風險以及因此需要遵守傳統工程方法。 [2]
根據博戈斯特的說法,“工程師”一詞的含義帶有來自設計和維護複雜大型系統的技能的聲望。他認為,在軟體工程中使用該詞“貶低了該詞”,並且被用來吸引矽谷投資者,使其顯得更具聲望和可信賴。博戈斯特將這個概念稱為“工程師清洗”。 [2]
在工程領域,工人們通常需要在其領域獲得認證以證明其專業知識。美國國家專業工程師協會 (NSPE) 和美國質量學會 (ASQ) 等組織都提供證明此認證的證書。博戈斯特特別關注什麼是註冊工程師 (PE),這是 NSPE頒發的認證。 [6]他回顧了為什麼工程領域的人員需要獲得此認證。博戈斯特和 NSPE 都指出,為了獲得此認證,您需要: [2][6]
- 擁有經過認證的課程的四年制學位
- 透過工程基礎考試和工程原理與實踐考試
- 在已獲得 PE 資格的人員的指導下完成四年的工作經驗。
博戈斯特還補充說,並非所有工程師都需要學位,但是,要能夠開設諮詢業務或聲稱自己是正式工程師,您需要獲得學位。該宣告也直接來自 NSPE,NSPE 指出 PE 是唯一被允許建立公共計劃、向學生教授工程的工程師,並且還發現 PE 的平均工資可能更高。 [7]正如他們所說,這種學位也具有倫理意義。當一個人擔任 PE 的角色時,這意味著他們對自己的生命負責,如果出現問題,他們將對發生的事情負責。因此,此證書表明他們是有責任感的工程師,他們致力於維護人們和支援他們的工程師職業。
對於客戶來說,這意味著您擁有獲得他們信任的資格。對於僱主來說,它表明您有能力承擔更高層次的責任。在您的同事中,它需要尊重。對於您自己來說,它是一個自豪的象徵,也是您來之不易的成就的衡量標準。-美國國家專業工程師協會
對於軟體工程師來說,雖然存在認證,但很少是硬性要求。像 NCEES 和 IEEE 這樣的組織合作建立了軟體工程師的認證體系。2013 年,第一個類似於 PE 認證的軟體工程師認證開始提供。當時軟體工程師需要參加考試並透過才能獲得該領域的認證。自 2019 年停止該考試以來,該考試一共進行了五次,共有 81 名考生參加。2018 年 1 月,考試政策與程式委員會向 NCEES 建議停止該考試。次月(2018 年 2 月),NCEES 接受了 EPP 委員會的決定,並決定 2019 年 4 月將是該考試的最後一次考試。2018 年 4 月,只有 19 人報名參加考試,這表明軟體工程領域對這種認證的需求並不高。[7]
除了軟體工程師的認證之外,還有其他形式的認證可以證明對程式語言或計算機程式設計服務的精通(例如思科或 C++ 認證)。特別是,像亞馬遜這樣的公司提供亞馬遜雲服務 (AWS) 認證,甚至有些公司會特別尋找這種特定技能。因此,雖然計算機工程領域沒有類似於工程領域的硬性要求,但某些特定領域的人可以證明自己的精通,這可能值得申請。
對於絕大多數軟體相關職位來說,計算機科學學位通常是入門級程式設計職位的必備條件。當然,也有例外,比如 Google 和美國陸軍等公司提供不需要 CS 學位的職位。[8] 然而,這並不意味著僅滿足最低要求就能輕鬆獲得工作。招聘者還會關注其他要求,通常會重點關注應聘者在沒有接受正規教育的情況下所取得的成就。雖然這確實更難,但這整個理念與工程領域普遍存在的學歷要求形成了巨大的差異。
2015 年,娜迪亞·埃格巴爾針對伊恩·博戈斯特的文章“大西洋錯了,軟體工程師確實存在”做出了回應,反駁了博戈斯特關於軟體開發者不配稱為“工程師”的觀點。埃格巴爾認為,真正的軟體工程師確實存在,但他們只是程式設計師中的少數。她聲稱,真正的軟體工程師與僅僅是“開發者”或“程式設計師”的區別在於她所說的“數字基礎設施”,她將其定義為“一層又一層的開發者工具、語言、庫和框架,使得“程式設計師”在當今時代更容易編碼”。[3]
許多現代軟體開發者使用的數字基礎設施的一個例子是整合開發環境 (IDE)。IDE 是高度增強的原始碼編輯器,提供諸如語法高亮、錯誤檢查、除錯工具以及其他根據其實現方式而有所不同的功能。IDE 可以將複雜的過程(例如將大型程式編譯成可在典型計算機上執行的可執行檔案)隱藏在單個按鈕的點選之後。一個為 Python 程式語言設計的流行 IDE 稱為 PyCharm,由捷克公司 JetBrains 開發和維護,它配備了“預安裝的智慧 Python 輔助功能,提供各種功能,如智慧程式碼補全、程式碼檢查、動態錯誤突出顯示和快速修復,以及自動程式碼重構和大量導航功能”。[9] 除了 PyCharm 之外,JetBrains 還維護著可以用於開發超過 12 種其他程式語言的 IDE,擴充套件了對不同技術群體開發者的幫助。[10] JetBrains 的軟體員工正是埃格巴爾定義中稱得上“工程師”的典型代表,因為他們建立的工具幫助全球數百萬程式設計師進行軟體開發流程。
雖然對數字基礎設施做出貢獻似乎將一個人提升到了普通程式設計師之上,但那些負責現代軟體基礎設施中最關鍵部分的人卻未必能夠獲得太多回報,除了那些認可他們貢獻的人的尊重之外。一個明顯的例子是 OpenSSL 的開發團隊。OpenSSL 是一個安全網路通訊和加密庫,如今被三分之二的 Web 伺服器使用。OpenSSL 被銀行、防火牆、武器系統、智慧手機、政府機構以及其他處理敏感資料的組織使用。儘管 OpenSSL 具有關鍵的功能,但它由一個由 11 名志願者組成的團隊維護,每年收入不到 100 萬美元。[3] 雖然 OpenSSL 團隊可能贏得了同行們的尊重,併為他們的技術影響數十億人感到自豪,但他們的情況表明,對於新開發者來說,幾乎沒有激勵措施去走上成為工程師的道路。
儘管軟體影響著世界上幾乎所有人的生活,但軟體工程仍然是一個非常年輕的職業,並且不斷發展。與傳統工程學科相比,該職業的尚不成熟引發了人們對程式設計師是否應該被稱為工程師的爭論。然而,用來稱呼那些建立和維護軟體的人的術語可能無關緊要,因為與“工程師”一詞相關的法規和職業標準才是影響公共安全的重要因素。從政府和銀行等長期機構到社交媒體等現代現象,推動著一切的軟體的一致性直接影響著數十億人的生活質量。無論透過政府監管、教育認證還是輿論轉變,確保進入或已在軟體相關職業中的人員的高標準,都位於軟體工程未來的中心。
- ↑ http://bogost.com/about/
- ↑ a b c d e 博戈斯特,伊恩。(2015 年 11 月 5 日)。程式設計師:不要再自稱為工程師。於 2020 年 4 月 6 日從 https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/ 檢索。
- ↑ a b c 埃格巴爾,娜迪亞。(2015 年 11 月 5 日)。大西洋錯了,軟體工程師確實存在。於 2020 年 4 月 6 日從 https://medium.com/@nayafia/the-atlantic-was-wrong-software-engineers-do-exist-24b2ed024861 檢索。
- ↑ 約翰·塔科夫,“一場正在發生的災難”,《美國發明與技術遺產》1(1986 年春季)
- ↑ https://solarsystem.nasa.gov/missions/mars-climate-orbiter/in-depth/
- ↑ a b c https://www.nspe.org/resources/ethics/code-ethics
- ↑ a b https://ncees.org/ncees-discontinuing-pe-software-engineering-exam/
- ↑ https://careers.google.com/how-we-hire/#do-i-need-a-computer-science-degree-to-be-a-google-software-engineer
- ↑ https://www.datacamp.com/community/tutorials/top-python-ides-for-2019
- ↑ https://www.jetbrains.com/products.html