我剛剛斷送了個人事業。嗯,別人就是這麼對我說的。php
個人同事們知道了我要離開公司,大多數對此表示理解。讓他們不解的是,我目前就任的公司是一家 Windows 商店,咱們用 C#.net 寫代碼,而我要入職的崗位要求在 Linux 環境下進行開發,以 Java 爲主要的編程語言。他們認爲編程語言的改變會讓我丟失多年的編程語言經驗,許多人贊同我同事們的觀點。html
編程語言有上百種。有些編程語言十分常見,例如 Java、C#、 PHP、 Ruby、 Python、Javascript 等,而有些編程語言則處於邊緣地帶或者是新興的,例如 Awk、Go、Julia、Rust等。面對這麼多的選擇,你如何知道應該重點關注那種語言呢?所以,我開始思索,你真的須要掌握不止一種編程語言嗎?java
##九個掌握多種語言的理由程序員
1.對於同一個問題,你能夠有多種解決方法。掌握不一樣的編程語言以後,你會有更多的選擇。畢竟若是你只有一把錘子,一切看起來都像是釘子。算法
2.你具備更多賣點,所以你會有更多的工做機會。有時,學習第二種語言能加倍工做機會的數量。然而,這取決於你所學習的語言種類。不管如何,你將會有更多的合適機會,從而增長求職能力。編程
3.這代表你具有學習新語言的能力。潛在的僱主知道你並不是死板或者慣守成規的人。服務器
4.學習是有趣的。學習新的事物會讓你的頭腦保持興奮。這將有助於你在新領域的成長和提升。數據結構
5.你將掌握技術動態。你瞭解業界的發展趨勢,並能藉此獲利。你的技能也不會過期。框架
6.這將提醒你爲何熱愛你的「主」語言,或者如何將事情作得更好。有時候,只有嘗試過新語言,纔會知道主語言是何等的優秀。你會更加欣賞本身最愛的語言。同時,新語言可能會有一些驚人的特性,讓你深覺相見恨晚。編程語言
7.你會成爲更加優秀的程序員。學習新的語言,可以提升在全部語言間都通用的技術能力,例如設計和建立算法或者處理不一樣數據結構的能力。
8.你能夠在工做中選擇最佳的工具。顯然,並不存在完美的語言;一些語言在特定情境下會比其餘語言更好。掌握了多種語言,你能夠在工做中選用最佳的工具。
9.這代表你是學習能力強的人。沒有任何事情比掌握第二語言更能證實你的學習能力。
##九個不想掌握多種語言的理由
1.掌握一種語言更加簡便。一般,集中精力和全心投入才能精通某一事物。若是你在不一樣的語言之間切換,精通一門語言的機率將下降。掌握一種語言也有助於你集中精力。
2.大多數人僅需一份工做,大部分公司僅採用一種語言。在你受僱以後,掌握多種語言不必定會有所幫助。有時候,你只要掌握項目所用的語言,就夠了。
3.總有一些東西值得學習;有時候,這意味着要更深刻地學習一種語言。
4.大多數狀況下,專家能提更高的薪資要求,由於人們更願意爲專家支付更多的薪水。約翰·森梅茲在其視頻《我不肯定成爲一位專家》中談到了爲何通才並不老是最好的。
5.即使你僅掌握一種語言,仍有可能成爲偉大的開發者。開發者的成就與掌握的語言種類沒有任何關係。重要的是你創造的是什麼。僅掌握一種語言,你能夠花更多的時間進行創造。
6.你僅需學習數目有限的軟件開發工做。大多數語言只有屈指可數的一些工具。切換語言每每意味着轉換不一樣的工具。只掌握一種語言,你能夠更快地精通相關的工具。這將有助於提升你的生產力。
7.這更易於推銷本身。只掌握一種語言,你其實已經將本身細分了(即使不是經過選擇)。
8.你能夠憑藉任何一種語言解決大多數軟件問題。無論有多少人告訴,大多數語言能夠解決任何問題。若是解決問題是你的主要目標(本應當是),掌握更多的語言並不必定有助於實現這個目標。
9.精通一種事物比淺嘗十種事物更好。
這不是一個非黑即白的問題。和大多數問題同樣,最佳的解決方法是取中庸之道——總有一片灰色地帶。若是你是初學者,那麼學習一種語言,並將其應用到前十多個項目中會比較容易。在此以後,我建議你成爲一位T形軟件開發者。
##什麼是 T 形軟件開發者?
一位「T形」軟件開發者具有某一特定領域的深層知識,而且是一種語言的專家。T 的垂直線表明了這一點。此外,他們會繼續普遍學習另外一種技能,T的水平線表明了這一點。
那麼,這和軟件開發,特別是編程語言的學習,有什麼關係呢?我建議你精通一種編程語言,這將成爲你之後的生計,並用於解決大部分問題。你應當盡你所能掌握這種語言。在此基礎上,你能夠學習對工做有益的第二種語言或者技能。假如你不知道應當學習什麼技能,參考我上個帖子《發現你將要學什麼》。
A T-shaped software developer is a jack-of-all-trades, but a master of one. T形軟件開發者是萬事通,可是卻精於某一項技能。
成爲T形軟件開發者後,你將靈活地掌握多種語言,同時具有某個領域專家的優勢。
##應當掌握哪一種編程語言?
一個常見的問題是,應當學習哪一種語言。或者說,假如你是初學者,應當首先學習哪一種語言。一般,我會選擇有必定歷史的語言做爲主要語言。這種語言應當用於多個行業,而且有普遍的使用羣體和大量的開發工具。Java、C#、net、Ruby、Python、Swift 是符合上述標準的少數語言。
Tiobe 軟件根據上述標準跟蹤軟件語言的流行性,並編入索引中。點擊此處可查看完整的編程語言榜單。該索引每個月更新一次,前20名的語言都是不錯的選擇。將來10年,這些語言還會流行嗎?我不肯定。但這些語言在將來四年內仍是極可能保持流行的,這對任何準備着手的項目都是夠用的。
##是否掌握多種語言取決於你的目標
你準備開始新項目或事業嗎?或許你僅需掌握一種語言。
你想改變行業或者引領科技潮流嗎?或許你須要掌握多種語言。
你想在一家企業固定工做嗎?或許你只需掌握一種語言。
你準備從事前沿項目嗎?或許你須要掌握多種語言,由於發展趨勢老是不斷變化的。
老實說,在決定是否要掌握多種語言時,並無正確或者錯誤之分。最終仍是須要你本身下決定。
你掌握了多少種語言?你擅長的領域是什麼,你是如何經過興趣擴展擅長的領域的?在評論中與咱們分享吧。
(編譯自:https://dzone.com/articles/do-you-need-to-know-more-than-one-language)
OneAPM 爲您提供端到端的 Java 應用性能解決方案,咱們支持全部常見的 Java 框架及應用服務器,助您快速發現系統瓶頸,定位異常根本緣由。分鐘級部署,即刻體驗,Java 監控歷來沒有如此簡單。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客。
本文轉自 OneAPM 官方博客