你真的須要掌握多種編程語言嗎?

簡述

我剛剛斷送了本身的職業生涯,沒錯,不少人都這樣對我說。算法

同事得知我即將離開公司的消息,大多數對此表示理解。但讓他們困惑的是,我目前就任的公司是一家Windows商店,用C#.net編寫代碼,而我要入職的崗位要求在Linux環境下進行開發,以Java爲主要的編程語言。他們認爲編程語言的改變會讓我丟失多年經驗,許多人都贊同他們的觀點。編程

編程語言不少,數以百計。有些很常見,例如:Java、C#、PHP、Ruby、Python、和JavaScript,而有些則比較邊緣化或是新興的,例如:Awk、Go、Julia、Rust。面對如此多的選擇,咱們又該關注那種語言呢?所以,我開始思考這個問題 - 你真的須要掌握不止一種編程語言嗎?markdown

想要掌握多種編程語言的9個理由

  1. 能用多種方式來解決一樣的問題,掌握不一樣的編程語言意味着擁有更多的選擇。畢竟,當你只有錘子時,一切看起來都像是釘子。數據結構

  2. 更有競爭力,擁有更多的就業機會。學習第二門編程語言,有時能加倍工做機會的數量。然而,這取決於你學習的語言種類。但不管怎麼說,你將會有更多的合適機會,從而增長求職能力。架構

  3. 代表你具有學習新語言的能力。潛在的僱主會認爲你並不是是死板或者慣守成規的人。編程語言

  4. 學習是頗有趣的。學習新的事物會讓你的頭腦保持興奮。這將有助於你在新領域的成長和提升。工具

  5. 緊跟當前的技術發展趨勢。瞭解哪一個行業在獨領風騷,就能夠永遠站在潮流的尖端,你的技能便不會過期。學習

  6. 這將提醒你爲何應該熱愛你的「主」語言,或者如何將事情作得更好。有時候,只有嘗試過新語言,纔會知道主語言是何等的優秀。你會更加欣賞本身最愛的語言。與此同時,新語言可能會有一些驚人的特性,讓你深覺相見恨晚。開發工具

  7. 有助於成爲一個更加優秀的程序猿。學習新的語言,有助於提升在全部語言之間通用的技能,例如:設計和架構算法,或處理不一樣的數據結構。.net

  8. 針對工做選擇最佳的工具。尺有所短寸有所長 - 有的語言更善於處理某些特定方面的事情。掌握了多種語言,你能夠在工做中選用最佳的工具

  9. 代表你的學習能力強。沒有任何事情比掌握第二語言更能證實你的學習能力。

不想掌握多種編程語言的9個理由

  1. 掌握一種語言更容易。一般,集中精力和全心投入才能精通某一事物。若是不斷地在多種語言之間進行切換,那麼真正精通一門語言的機率就會下降。掌握一種語言也有助於你集中精力。

  2. 大多數人只須要一份工做,大部分公司只使用一種語言。在你被錄用後,掌握多種語言不必定會有所幫助。有時候,只要掌握項目所用的語言就夠了。

  3. 總有一些東西值得學習;有時候,這意味着要更深刻地學習一種語言。

  4. 大多數狀況下,專家能提更高的薪資要求,由於人們更願意爲專家支付更多的薪水。John Sonmez在其視頻《 I’m Not Sure I Want To Be A Specialist》中談到爲何多面手並不老是最好的。

  5. 即使僅掌握一種語言,仍然能夠被認爲是一個偉大的開發者。是不是偉大的開發者與你掌握多少種語言無關。關鍵在於你創造的是什麼。由於只涉及一種語言,因此你能夠花更多的時間進行創造。

  6. 你只須要學習有限的軟件開發工具。大多數語言只有爲數很少的一些工具。切換語言每每意味着要切換工具。只掌握一種語言,你就能夠更快地掌握相關的工具。這將有助於提升工做效率。

  7. 更易於定位本身的市場。由於只掌握一種語言,基本上你只會朝這個方向安頓下來(即便不是出於本身的選擇)。

  8. 你能夠憑藉任何一種語言解決大多數軟件問題。無論有多少人告訴你,大多數語言能夠用於解決任何問題。若是解決問題是你的主要目標(本應當是),掌握更多的語言並不必定有助於實現這個目標。

  9. 深刻理解一件事比表面瞭解十件事更好。

這並不是是一個非黑即白的問題。和其餘問題同樣,最好的解決辦法是取中間值:總有一片灰色地帶。若是你是一個初學者,那麼學習一種語言,並將其應用到前十多個項目中會比較容易。但此以後,建議你成爲一個「T形」軟件開發者。

什麼是「T形」軟件開發者?

所謂「T形」軟件開發者在某一個特定的區域擁有很深的造詣,並且是一種語言的專家,T字母中的垂直線表明了這一點;此外,他們會繼續普遍學習另外一種技能,T字母中的水平線表明了這一點。

那麼,這與軟件開發,特別是編程語言的學習,有什麼關係呢?個人建議是精通一種編程語言,這將成爲你之後的生計,並用於解決大部分問題。你應該盡你所能掌握這門語言。在此基礎上,能夠學習最適合工做的第二種語言或技能。假如你不知道應當學習什麼技能,能夠閱讀我以前的帖子《 Finding What To Learn Next 》這個帖子。

T形軟件開發者是一個多面手,精通於某一領域。

在成爲T形開發者的歷程中,你將靈活地掌握多種語言,同時具有某個領域專家的優勢。

應該掌握哪一種編程語言?

一個常見的問題是,應當學習哪一種語言。或者說,假如你是初學者,應當首先學習哪一種語言。一般,我會選擇有必定歷史的語言做爲主要語言。這種語言應當用於多個行業,而且有普遍的使用羣體和大量的開發工具。符合這些標準的語言有:Java、C#、.NET、Ruby、Python和Swift。

Tiobe軟件基於這些標準持續跟蹤軟件語言的流行性,並編入索引中。你能夠點擊TIOBE Index查看完整的編程語言列表。索引會每個月更新,前20名中的大多數語言都是不錯的選擇。將來10年,這些語言還會流行嗎?我不肯定。不過至少在將來四年內仍是極可能保持流行的,我想,這對任何準備着手的項目都是夠用的。

是否須要掌握多種語言取決於你的目標

想開始新的業餘項目或業務?或許你只須要掌握一種語言。

想換行業或駕馭技術發展趨勢?或許你須要掌握不止一種語言。

想在企業環境中工做?或許你只須要掌握一種語言。

想工做在前沿項目?或許你須要掌握不止一種語言,由於潮流老是在變化。

說實話,關因而否須要掌握更多的語言,其實並無絕對正確或錯誤的答案,最後的決定取決於你。

你掌握了多少種語言?你擅長的領域是什麼?你如何擴展它?歡迎分享。

更多參考

相關文章
相關標籤/搜索