我在謀殺​​自己的職業生涯。沒錯,很多人都這樣說我。

我的同事剛剛得知我即將離開公司的消息。大多數表示理解。但讓​​他們困惑的是,我現在的公司是一家 Windows 商店,用 C# 和.net 編寫程式碼。然而,我要去擔任的是 Linux 環境下主要語言為 Java 的開發工作。

因為語言的改變,他們覺得我拋棄了自己的優勢,拋棄了自己這麼多年的工作經驗,正在自尋死路。很多人都秉持這樣的觀點。

程式語言很多很多,數以百計。有些很常見,如 Java,C#,PHP,Ruby,Python 和 JavaScript,而有些則比較邊緣化或是新出現的,如 awk,Go,Julia,Rust。選擇如此之多,我們又該關注哪個呢?於是,我開始思考這個問題 ── 我們真的需要知道多種語言嗎?

圖:Pixabay,CC Licensed

你會想要學習不止一種語言的 9 個原因

▌能用多種方式來解決同樣的問題。懂得不同的語言意味著擁有更多的選擇。正如古語有云,當你只有錘子時,你看什麼都像是釘子。

▌更有競爭力,擁有更多的就業機會。學習第二門程式語言,有時能增加一倍你可勝任職位的數量。不過,這取決於你學習的語言。但是無論怎麼說,這都能為你增加就業機會。

▌表明你能夠學習新的語言。你潛在雇主能夠從中了解到你不是死板的工程師。

▌一個很有趣的過程。學習新的東西可以充實你的大腦,幫助你在一個新領域中成長和提高。

▌緊跟當前的技術發展趨勢。知道哪個行業在獨領風騷,就可以永遠站在潮流的尖端。你的技能便不會過時。

▌讓你知道為什麼你應該喜歡你的「主」語言,或者讓你知道如何讓事情變得更好。有時候,你只是不知道你的主語言有多好,直到你嘗試新的東西。你會贊同於你喜歡的語言的概念。與此同時,新的語言可能會有一些讓你很驚訝的某些新功能。

▌有助於成為一個更好的工程師。學習新的語言可以幫助你提高能在所有語言之間轉移的技能,例如,設計和架構算法,或處理不同的數據結構。

▌針對工作使用最好的工具。尺有所短寸有所長——有的語言更善於處理某些特定方面的事情。知道更多的語言就可以為工作選擇更好的工具。

▌表明你是一個快速的學習者。通過學習第二門程式語言可以表現你學得很快。

你不想學習更多語言的 9 個原因

▌一種語言更容易掌握。專心致志和一心工作往往才是通往精熟通達的道路。如果你不斷地在多種語言之間進行切換,那麼真正掌握一門語言的概率就會降低。只涉及一種語言可以幫助你集中註意力。

▌大多數人只需要一份工作,大部分公司只使用一種語言。在你已經被錄用後,知道多種語言不一定會幫到你。如果你知道該項目的語言,就 ok 了。

▌總有需要學習的地方:這意味著你可以深入研究你掌握的這一種語言。

▌專家在大多數情況下可以要求較高的薪酬,因為人們願意支付給專家更多的錢。John Sonmez 在他的影片 “I’m Not Sure I Want To Be A Specialist” 中,談到了為什麼成為一個多面手並不總是最好的主意。

▌即使只知道只有一種語言,仍然可以被認為是一個偉大的開發者。是否是偉大的開發者與你知道多少種語言無關。關鍵在於你構建的內容。因為只涉及一種語言,所以你可以花更多的時間來構建。

▌你只需要學習有限的軟體開發工具。大多數語言只有為數不多的幾個工具。切換語言通常也意味著要切換工具。只了解一種語言,你就可以更快地掌握工具。這可以幫助你提高工作效率

▌更易於定位自己的市場。因為只了解一種語言,基本上你只會朝這個方向安頓下來(即使不是出於自己的選擇)。

▌任意一種語言都可以解決大多數的軟體問題。如果製作東西是你的主要目標,那麼知道更多的語言並不一定對你有​​幫助。

▌深入理解一件事比表面了解 10 件事要好。

這並非是一個非黑即白的問題。和其他問題一樣,最好的解決辦法是取中間值:總會有一個灰色地帶。如果你是一個初學者,那麼光學一種語言,然後用它開發個十幾個項目,明顯更容易。但在那之後,我建議你成為一個 T 型的軟體開發人員。

什麼是 T 型的軟體開發人員?

所謂 T 型的軟體開發人員在某一個特定的區域擁有很深的造詣,而且是一種語言的專家,這就是 T 字母中非常堅實的豎直線,而 T 的水平線則代表了在此基礎上還應該繼續更廣泛地學習其他技能。

那麼,這與軟體開發,更具體地說,是學習程式語言有什麼關係呢?我的建議精通一種語言。這種語言將成為你解決大多數問題的左膀右臂。你應該盡你所能掌握這門語言。然後你才可以學習最適合工作的第二種語言或技能。可以閱讀我先前寫的《 Finding What To Learn Next  》這個帖子。

T 型的軟體開發人員不光精通於某一領域,還是一個多面手。

在成為 T 型開發者的歷程中,你不但能享受成為某一領域專家的好處,還能因了解多種語言而增加靈活性和適應性。

你應該選擇掌握什麼樣的程式語言?

看到這裡,很多人或許就要問了,那麼我們應該選擇學習哪種程式語言呢。亦或者,你才剛剛步入程式這個時間,你想知道你應該先學習什麼語言。對於主要語言,我會選擇那些已經存在了一段時間的語言,而不是新出來的。語言應為多個行業使用,並且有一個堅實的社區基礎,擁有大量的開發工具。一些符合這些標準的語言是:Java、C#、.NET、Ruby、Python 和 Swift。

軟體排行榜基於這些標準持續跟踪軟體語言的人氣指數。你可以點擊這裡查看完整的程式語言列表。指數每月更新,前 20 名中的大多數語言都是不錯的選擇。那麼 10 年之後,這些語言還會依然名列前茅嗎?我也不知道。不過至少在未來 4 年內是準的,我想,4 年時間應該已經足夠你從現在開始開發無論什麼項目了。

是否需要了解更多的語言取決於你的目標:
▌想開始新的業餘項目或業務?你可能只需知道一種語言。
▌想換行業或駕馭技術發展趨勢?你可能需要知道不止一種語言。
▌想在企業環境中工作?你可能只需要知道一種語言。
▌想工作在前沿項目?你可能需要知道不止一種語言,因為潮流總是在變化。

說實話,關於是否需要了解更多的語言,其實並沒有絕對正確或絕對錯誤的答案。最後的決策結果取決於你。

你知道多少種語言?你的專業領域是什麼,你如何擴展它?歡迎分享。

譯文鏈接:http://www.codeceo.com/article/do-you-need-more-language.html
英文原文:Do You Need To Know More Than One Language?
翻譯作者:碼農網  –小峰

(本文轉載自合作夥伴《碼農網》;圖片來源:Piqsels,CC Licensed;未經授權,不得轉載)

延伸閱讀

神級 Coder 在線等!「問啊」平台用共享解答所有 Coding 相關疑難雜症
11 歲小男孩手把手教你:怎麼自學 Coding,寫出第一款遊戲?
破過哀鳳、創造紫雨》天才駭客這次親自編碼,要打造出比 Tesla 還強的無人車
血淋淋的科技職場現實:小心,你上班的公司讓你丟了謀生的本錢