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