專家:程式設計師不配叫工程師

2020-12-11 快科技

一些人把程式設計師稱為工程師,這破壞了「工程」的一個悠久的傳統——為公眾利益而設計和建造基礎設施。以下為全文摘要:

我的一個朋友最近提到:「科技界習慣把程式設計師稱為工程師。但是我覺得,那種嚴格按照規定修建橋梁的人才算是工程師。」

這個說法讓我心生感慨。大家都知道,矽谷經常用「工程師」這個詞來形容技術工作者。不知道是出於什麼緣故,如果你在初創公司工作,而且又不是銷售、營銷或者設計人員,那他們就會把你稱為工程師。「我們正在招聘工程師」是初創公司的口頭禪,指的可能是從JavaScript程式設計師到機器人專家的各種崗位。

這種「工程師」可能是「軟體工程師」的簡稱,但這個用法暴露了天機:對於軟體開發工作來說,工程師這個頭銜太「硬」了一些。因為在傳統上,工程師會受到監管、獲得認證,經歷學徒教育和繼續教育。工程對於公眾安全性和可靠性負有明確的責任,就算不一定每次都能實現

科技業拉低了「工程師」頭銜的含金量

最近幾年,軟體行業爆發了一些重大故障,導致塔吉特、家得寶、哈佛大學、LastPass等等機構和公司的海量數據遭到洩露,但這只是計算機系統帶來的網絡安全問題的冰山一角。大眾汽車柴油排放造假案也屬於「軟體事件」,雖然那是對軟體的故意改動。

但這僅僅是幾個比較轟動的例子。如今的計算機系統給個人和社區帶來的風險,如果發生在橋梁、高層建築、電廠,或者飛彈防禦系統這些更有形的領域,完全屬於不可接受的範圍。某些人的iPhone在更新蘋果的iOS 9系統之後「變成了磚」,無法使用。而像谷歌文檔這樣的服務也會莫名其妙地宕機,讓重度用戶陷入困境。 「你的密碼包含了無效字符,」Twitter上有人吐槽一個網站的提示,「不,是你的公司包含了不稱職的工程師。」

和辦公室大樓結構的完整性、國家核武器庫的安全性相比,這些看起來都是小事。但是你買的新車很少出現不能啟動的情況,你辦公樓的電梯也很少會莫名其妙地卡住吧?計算已經成為了一種基礎設施,但它沒有其他基礎設施運轉的那麼良好。

在摩天大樓和橋梁、發電廠和電梯這些領域,都有專業標準和監管機構對工程進行管理。但是,對軟體開發進行工程化的努力已經進行了五十年,如今卻離成功越來越遠。人們目前採用迭代方式開發軟體,這倒也很合情理:製造業和建築業的項目一旦實施就難以改動,但軟體業和它們不一樣。

軟體業與世界的隔絕

軟體雖然變得更加重要,但它與世界之間的隔絕加深了。早期的計算機系統涉及企業、行業、政府和社會等方面。比如汽車客戶管理系統需要對經銷商、供應商、運輸商、銀行和貸款機構、監管機構、遺留系統和客戶進行整合。但是,今天的軟體大多都非常獨立。比如照片共享服務Instagram去年的估值達350億美元,它需要的只是在伺服器和應用之間上傳和下載照片。

可以肯定的是,今天的雲工具仍然會依靠一些基礎設施(尤其是物理伺服器和網絡)來處理數以百萬計的用戶訪問數以十億計的文件。但這些活動基本上都被外包給了基礎設施巨頭去做。

在對通訊、金融和存儲之間的整合進行了抽象之後,單個軟體開發人員可以將它們當作黑盒子來使用。這種抽象有時候可以讓軟體更好更可靠地運行,但它也可以把開發人員與外面的「雜亂世界」隔離開來。

結果就是,軟體開發已經在體制上成為了一種類似閉門造車的活動。而這和「工程」的主旨是背道而馳的。工程的主旨是與世界合作,而不是置身於一個單獨的空間,一心要超越世界。

傳統的工程學科——土木、機械、航空航天、化工、電子、環保——即有技術屬性,又有社會屬性。在工程師的協調下,橋梁和大樓修建起來。工程師設計了車輛和重型機械,又發明並實現了驅動這些設備的動力系統,設法把所有系統連接在一起。

矽谷不重視證書

其他工程學科都有證書和許可證機制。如果你想僱傭一個土木、結構或液壓工程師,肯定會找擁有專業工程師(PE)證書的人。專業工程師一般需要獲得4年制的學位,並通過一種或多種考試,並在註冊工程師的監督下,接受4年或更多年的專業實踐。

但IT行業不僅不像工程業那麼重視證書,而且還越來越不把它當回事。一些矽谷大佬對正式學位並不在意,即使是谷歌那樣的大公司也表示,他們看重的是能力而不是學歷。

在軟體開發的模式上,敏捷開發已經佔據了主導地位,它側重於快速迭代,而不是長期規劃和複雜的文檔。Scrum是一種流行的敏捷開發方法,其特點是朝著一系列不斷變化的目標進行短暫的「衝刺」。

應用或Web服務具有暫時性,和橋梁、大樓那樣的「百年基業」非常不同。但是,軟體開發與我們生活的息息相關,卻並不亞於橋梁和大樓。我們的汽車、飛機、醫療設備,以及銀行系統、醫療機構和保險系統,電話和通訊網絡,乃至於娛樂活動都在使用計算機。像Scrum這樣的方法即使可以產出像樣的成果,也無法保證基礎設施級別的穩定性。

創業文化也正在改變工程教育。創業是崇高的,加速器和孵化器比比皆是,並非所有讀計算機科學課程的學生認為自己會成為初創公司億萬富翁……但也不是所有的學生都不這樣認為。這些「工程師」獲得的鼓勵是把每一個項目都當作一門潛在的生意,做好擴大規模和兜售它的準備,而不是在這門學科中長期浸淫,把社會福利看得至高無上。工程一向都是高薪職業,但是IT業把它視為了一種投機,而不是一種使命。

是生意,還是工程?

「工程師」這個詞讓人聯想到頭戴安全盔的高大形象,他們是設計者和締造者,兢兢業業地開創著明天。工程的尊嚴來自於數十年來的嚴格管控、教育,以及學徒式認證制度,現在,一些人卻把它看成一種寬鬆的速成手藝,想把它當作一門生意來做。

矽谷擅長於重新定義一些事情,比如他們把商業利益重新定義為一個「改變世界」的過程。而工程,就被他們定義成了一個建造臨時性東西的過程。畢竟,像平面設計師和對衝基金經理這樣的專業人士也確實可以創建東西,但我們通常不會把他們稱為工程師。他們的成果可能會成為基礎設施,也可能不會,可能會符合公共利益,也可能不會。

如果成果是基礎設施,而且又符合公眾利益,那麼他們做的就是工程,而不僅僅是生意。在加拿大,很多土木工程師都戴著一枚鐵指環,象徵著對這份職業的道德承諾。他們畢業的時候會參加一個「工程師冠名典禮」(The Ritual of the Calling of an Engineer),被告知自己在工程界工作的義務,並宣讀詩人魯德亞德·吉卜林撰寫的誓言,然後才被授予這枚指環。

加拿大有一座魁北克大橋,在1907年修建過程中垮塌,造成數十名工人遇難。有人說鐵指環的製作材料就取自於那座垮塌的橋梁。這個說法雖然不是真的,但卻流傳不衰。鐵指環的材質象徵著魁北克大橋以及其他所有其他設施。

工程師對公眾負有責任。作為橋梁、高樓或者軟體的設計者和建造者,他們在責任心驅使下發揮著各種才幹。只有在對自己職責做出承諾之後,工程師才開始建造東西,無論具體建造的是橋梁、建築物,還是軟體。

相關焦點

  • 程式設計師和工程師的不同
    我剛剛工作的時候,面試官曾經跟我說:好好幹兩年,可以迅速從程式設計師成長為工程師。當時我覺得太詫異了,從很多招聘啟事來看,「程式設計師」不就等於 「工程師」嗎,只是「工程師」更好聽一些而已。等我工作久了,才知道「程式設計師」和「工程師」真的是不一樣的——程式設計師只寫程序,工程師寫能在現實世界中創 造價值的程序。
  • 算法工程師和程式設計師有什麼不同?
    在很多人的眼裡,算法工程師和程式設計師是兩個不同的概念,程式設計師即碼農, 很多時候被人誤解為就是敲鍵盤碼代碼的超級IT工人。算法工程師和程式設計師側重點不同在網際網路發展初期做開發基本屬於一勺匯,程式設計師自己做需求,做設計,完成算法,測試,上線,售後服務。後來隨著功能與業務的複雜程度的加深,就有了更精細的分工。
  • 當程式設計師比機器人工程師香嗎?
    僻~機械佔地,汙染,都在鳥不拉屎的鬼地方。孤~工廠都是男的,或者大媽,最多的就是鐵疙瘩。發展~中層領導基本是上限,收入就是死工資,銷售的一個獎勵,不是提成,就是你一年收入,機械自己創業的成本極高,機械的利潤又很低,我們公司20的利潤都算暴利了。因為所處偏僻,所以子女的教育基本跟不上,挨踢毀一生,機械窮三代不是沒道理的,三代以後就娶不到媳婦沒第四代了。[捂臉]。亂讀書的路過。
  • 編碼人員,程式設計師,開發人員和軟體工程師之間的差異
    我們都聽說過編碼員,程式設計師,開發人員和軟體工程師這些職位,但是你知道他們之間確切的區別嗎?許多人聲稱,這種差異取決於他們受的教育和個人取得的成就,也有人認為是他們就職的公司決定你是程式設計師還是編碼員。讓我們來看看編碼員,程式設計師,開發人員和軟體工程師之間的確切區別是什麼?1.編碼員編碼員是負責編寫代碼並且能夠使得程序正常運行的人員。編碼員有能力編寫代碼來製作軟體,他們不僅能夠編寫應用程式,還可以製作視頻遊戲和其他許多東西。但是編碼員不能夠單獨開發軟體,在製作軟體的時候需要一定的幫助,例如設計和測試方面。
  • 程式設計師與工程師令人崩潰的鬥圖~~~
    項目要啟動,經理要通過工程師定方案,定完以後就要交個程式設計師去做產品.但是,工程師要改一個小細節,程式設計師可能設計工程量要多三倍。但是工程師這邊又是程式設計師的「上帝」。因為他是客戶,工程師要改一下,程式設計師不得不改,那麼程式設計師會這麼老實的去改嗎???
  • 北大青鳥:軟體工程師與程式設計師有什麼區別?
    在外行人看來,很多從事與計算機相關的工作人員都被叫做程式設計師,當然很多想轉行IT的朋友同樣也會有這樣的疑惑:軟體工程師和程式設計師有什麼區別呢?接下北大青鳥大興校區帶大家了解一下二者的區別,也方便大家做職業方向的選擇。
  • 打工型程式設計師與創業型程式設計師的對話,還敢自稱IT工程師嗎?
    打工型程式設計師與創業型程式設計師的對話,還敢自稱IT工程師嗎?打工型程式設計師當初在學校,學C程序語言純粹是為了應付期末考試,60分萬歲。別的沒多想,也不敢想。指針,內存管理,算法優化,簡直是反人類的設計,能讀懂的都是非人類的。人生苦短,功能為王。只要能實現需求,只要代碼能運行,憑什麼要花費那麼多時間精力去琢磨這種瑣碎的底層理論?
  • 程式設計師的發展空間是什麼?
    我們只能根據程式設計師的職位和晉升空間,以及他們的工資水平來判斷他們的發展空間。當然,這些也是基於程式設計師的個人能力。根據相關資料表明,程式設計師的發展主要分為三個階段:第一階段:從初級工程師到中級工程師,這一階段將大大提高程式設計師的知識水平和專業技能,工資也將從原來的年薪5-10W提高到12-20w。
  • 漫畫:我是程式設計師,總想打測試工程師怎麼辦?
    當然,對於有的程式設計師和測試工程師,最後可能會演變成這種情況:測試工程師上報的缺陷中,有一部分可能在後來被裁決為「設計如此」(By design), 但這不影響測試工程師有權上報任何任何他覺得不對的問題。所以,測試工程師哪怕上報你覺得是吹毛求疵的問題,他們也是在做正確的事情——因為這就是測試這門專業的「設計如此」。有的時候程式設計師想打測試,是因為覺得測試老愛針對他們。
  • 1024程式設計師節,向用代碼改變世界的程式設計師致敬!
    除了俄羅斯之外,其他國家的一些程式設計師社區也會慶祝這個節日。為什麼會選9月13日呢?因為它是每年的第256天(閏年就是9月12日)。256這個數字對程式設計師來說有著特別的意義,1個字節(等於8位元)最多能表示256個數值,而且在整年中,256是2的最大冪中小於365的值。
  • 知道JAVA程式設計師和C程式設計師的差別嗎
    C程式設計師的差別嗎?食堂裡,吃完飯就走的是JAVA程式設計師,吃完飯還要自己收拾的那就是是C程式設計師。至於為什麼會這樣,大家都明白(因為JAVA自帶垃圾回收機制,C需要手動釋放內存)←這就是原因。 2、我是個程序猿,一天我坐在路邊一邊喝水一邊苦苦檢查bug。這時一個乞丐在我邊上坐下了,開始要飯,我覺得可憐,就給了他1塊錢,然後接著調試程序。
  • 大齡程式設計師都去哪兒了?
    在國內,一般程式設計師的壽命在20~35歲之間。雖然不是絕對,超過35歲的程式設計師,如果繼續從事開發工作,很可能會面臨淘汰、裁員等不利於個人的局面。那麼問題來了:大齡程式設計師都去哪了?出路一:成為更高階的程式設計師每個成熟公司都會有級別劃分,比如,剛招募的大學畢業生是「初級軟體工程師」,工作一兩年之後,會被提升為「軟體工程師」,再工作幾年,會被提升為「資深軟體工程師」,當能力和影響力進一步提升,成為「首席軟體工程師」……按照這樣的晉升制度一步步攀爬
  • 我外婆是個程式設計師
    ,我的媽媽隨著她也選擇成為了程式設計師,而我延續了這個傳統。當時的計算機(那時叫「電子計算機」)體積龐大而且非常昂貴,大學買不起計算機。也就是為什麼在學校裡只教授理論,在暑假期間學生會被派到有計算機的地方實習。大學三年級的暑假,外婆被分配到基輔電工研究所實習,那裡有一臺叫做MESM的計算機。當然,學生們不會被分配解決實際問題。事實上,我毫不懷疑MESM的工程師會拒絕讓學生參與MESM的研製工作。
  • 三年php程式設計師到後面走全棧工程師路線,不再拿一萬的工資
    全棧工程師是指掌握多種技能,並能利用多種技能獨立完成產品的人。在小公司全棧工程師是非常重要的,關係著公司的存亡,特別是剛成立的公司,需要一個全能的工程師。php是目前程式語言最容易學習的程式語言之一,中文文檔也很多,可以說學習php不需要投資很多的資本就可以完全成為合格的php工程師,但是小編建議到後面走全棧工程師路線。
  • 全棧工程師會是未來的發展趨勢嗎?
    最近,網上很流行一個詞:全棧(Full Stack)工程師,也可以叫全端工程師,無論是前端知識,還是後端架構你都要了解。甚至有些調皮的程式設計師這樣理解全棧工程師:全棧工程師=屌絲戰鬥機=系統+網絡+研發+dba+架構+安全=沒女朋友、拿一份工資做三份事情的典型、每個站長都是一個全棧工程師,每個站群的站長都是超級全棧工程師。
  • 工信部搞了個web前端開發工程師證書,程式設計師也要持證上崗了?
    程式設計師,近年來毫無疑問是最熱門的職業之一。而Web前端開發工程師,則主要進行網站開發,優化,完善的工作。簡單地說,它的主要職能就是把網站的界面更好地呈現給用戶。無論是開發難度上,還是開發方式上,現在的網頁製作都更接近傳統的網站後臺開發,所以現在不再叫網頁製作,而是叫Web前端開發。雖然這個職業也需要一定的技術門檻,但與律師和醫生又有不同。從實際操作來講,Web前端開發工程師更加靈活,在工作中並不需要什麼執業或等級證書。
  • 王垠:程式設計師的心理疾病
    如果力學工程師犯了錯誤,飛機會墜毀;如果結構工程師犯了錯誤,大橋會垮塌;可是如果軟體工程師犯了錯誤,大不了網站掛掉一小時,重啟一下貌似又好了。所以所謂「軟體工程師」,由於門檻太低,他們的工作嚴謹程度,其實是根本沒法和力學工程,結構工程等真正的工程師相提並論的。實際上「軟體工程」這個名詞根本就是扯淡的,軟體工程師也根本不能被叫做「工程師」。
  • 程式設計師的這108個笑話 你都看得懂嗎?-程式設計師,笑話,編程, ——快...
    24、程式設計師的四大理想:南極有套房,澳大利亞有群羊,全世界電腦死光光,孩兒有個娘。25、有一種崩潰叫密碼輸入有誤;有一種驚慌叫做帳號異地登陸;有一種感情叫隱身對其可見;有一種誤會叫人機離線;有一種失落叫沒有訪問權限;有一種感情叫站點訪問失敗;有一種無奈叫bug無法復現。26、黑體的鋸齒,宋體的滄桑,崩潰的避頭尾集。
  • Android程式設計師未來十年的發展前景如何?
    我們只能通過程式設計師的職位和晉升空間,以及程式設計師的薪資水平來判斷他們的發展空間有多大。當然這些也都是按照程式設計師的個人能力來看的。據有關資料來看,Android程式設計師的發展主要是三個大的階段:第一階段:由初級工程師發展為中級工程師,在這個階段程式設計師的知識水平和專業技能將會有很大的提升,薪資待遇也會由原來的年薪5-10w上升為12-20w。
  • 程式設計師現實生活中的8個呆萌bug,敲代碼五年以上的肯定都遇到過
    很多人認為程式設計師是代碼的機器,每天只知道敲代碼,其實這種看法非常片面。程式設計師不僅僅精通代碼的編寫,還要熟悉項目所在行業的知識,例如開發門禁系統的程式設計師要對門禁系統了解,開發自動控制的程式設計師要熟悉自動控制的原理。