我多次聽經理或招聘人員說,優秀工程師是可以與其他優秀工程師交換的。他們可能會說,“首席工程師為這個項目選擇了 F# 語言,如果外面沒有太多的 F# 開發者,那么有幾年經驗的優秀開發者應該也還不錯。”
我還聽說過一些這樣的言論,“我知道他們是前端人員,但我們現在需要他們做些后端工作。因為他們本身很優秀,所以這沒什么大不了的。”
如果你相信這些蠢話,那我都可以把布魯克林大橋賣給你了。我還創立了下一個獨角獸公司,業務就是把冰賣給愛斯基摩人!我敢肯定,公司很快會有 10 億美元的估值!機會難得,快來投資吧~
好吧,不開玩笑了,說實在的,“優秀的”軟件工程師可以交換,這樣的想法并不靠譜。我有時會對軟件工作感到疑惑,是不是我在簡歷上寫,“我保持良好的記錄,不斷在新技術上開拓馳騁”,然后我就能去任何想去的公司了?
我不敢相信今天要坐下來和你解釋這一點,但是,現在讓我們從語言差異開始說起。實際上,我已經將多種語言的代碼投入生產,從 Scala 到 C#,從 Java 到 JavaScript。即使我能在幾周內學會任何類 C 語言的的語法,(給別人可能需要更多時間,)我仍然清楚地知道,我不會用一種新的語言去開發一個生產代碼庫。
那么行業或商業背景呢?我已經涉獵在很多領域,包括健康衛生、電子商務、教育和電信。我是否應該認為我有資格在社交媒體工作哪?那么制造業、航空航天、數字加密貨幣(Cryptocurrency)哪?我的領域究竟能拓展到哪一塊?在我被要求從 Web 過渡到移動、桌面或物聯網時,也發生了同樣的情況。
現在,讓我給你講個小故事。去年,在做后端 Java web 服務工程師的全職工作時,我還參與了另一個團隊的工作,他們要在 Ionic Framework 中做一個移動應用程序,并使用 Angular、TypeScript 和一些定制庫打組合拳。直到長達八個月的項目臨近結束時,我才得以“適應”這種融合了 Ionic/Angular/TypeScript 的工作方式。實際上,“適應”這個詞可能有點夸大其詞。但仍然困擾我的是,我要在控制器中公開字段,因為需要在視圖中顯示它們,或者常量應該與其他變量一樣命名。
順便一說,如果你想在 JavaScript 中使用靜態類型(static typing),你很快就會發現,這條路走不通。必須準備好“任何”類型!不過,我喜歡使用的 RxJs 訂閱。
在項目結束后,我愉快地撤了。我現在再也不會自稱為 TypeScript 或移動開發者了。這不是要在口頭上表達優越性,而是一個簡單的經驗問題:八個月的時間不足以證明我在此方面的資質。我敢打賭,任何全職編程的人都會同意我的看法。
一個花了幾年時間研究某種語言的開發者,將能夠毫不費力地用它思考。她會在腦海中隨時準備好所有需要的資源來完成任務,然后繼續投入下一個任務。她了解語言環境,可以輕松地將標準庫和第三方庫結合成一個具有內聚性的新功能,就像一把鑰匙對應一把鎖一樣,以此來輕松地解決問題。然而,當她不知道什么是可用的時候,她會重新造輪子,或者更糟的情況是,她會完全不知所措。
每一種語言都有著其獨特的習慣用語、構建和依賴管理工具、框架、庫、在線社區、IDE 等一系列東西,這些東西在日常實踐中,對開發者生產力的影響比我們想象的要大得多。
但是,所有的語言都一樣嗎?我是說,C# 和 C++ 的開發者,到底有什么區別?“只是 # 和 ++ 的區別,哈哈,沒什么大不了的!”快,把說這話的人扔去喂獅子!
我不是說任何人都不應該更換自己的語言、行業或設備。我只是說,程序員是不一樣的。一個以 F# 為主要語言編寫應用程序的軟件團隊,不會從我的 Java 經驗中獲益,盡管我也花了大量時間寫 Scala。我只是說,我們不能找到那些“優秀的開發者”,然后出于奇思妙想,隨機地把他們拖到不同的團隊,并期望他們能夠發揮出應有的效果。我是說,不要把所有“優秀的”開發者當作是可以交換的。
可交換開發者的神話是不現實的。人與人之間的不同無法消除,并愿每個人都能找到最適合自己的那個角色!
-
軟件工程師
+關注
關注
8文章
243瀏覽量
21640
發布評論請先 登錄
什么是BSP工程師
大普技術田學紅榮獲2025年東莞市優秀工程師稱號
工程師變身AI“指揮者”,吉利與阿里云的軟件開發變革實驗
工程師經驗分享:社區之星 趙云 沉著穩定才能做好技術
如何成為一名嵌入式軟件工程師?
優秀的軟件工程師真的可以隨意交換嗎
評論