作為一個程式設計師 你的進步完全取決於你自己
我曾經在Hacker News網站上讀過一篇帖子的評論,其中一個年輕的程式設計師說他們不想呆在那些只會讓思想陳舊的老程式設計師離開而不是對他們再次培訓的公司裡,因為他明白,有一天他們也會這樣。
也許這個人的本意是好的,但是他這種說法還是讓我惱怒。首先僅僅因為一個程式設計師年齡較大並不能說明他思想陳舊(就像一個年輕的程式設計師你不能因為他年紀輕就說他思想新潮)。我認為這個評論中最大的問題是:始終讓自己接受教育並跟上時代的發展,這應該是你自己的責任而不是公司的問題。
我做程式設計師已經32年了,而且我一直努力讓自己學習各種技術來保持進步。我知道很多像我這個年紀的人自從拿到計算機學士學位以後就再也沒有學習過任何新知識,因此他們最終會被淘汰。我花了6年的時間學習化學,但是一旦當我成為一名程式設計師,我發現我需要了解在我工作之外發生了些什麼,而且我有不斷學習的慾望並一直在嘗試各種各樣的程式設計。當然在當年那個時候,所有事情都要慢得多,因為所有的學習都要靠閱讀,這是一個很大的挑戰(當時沒有網路,你必須讀紙質版的東西!)
在我做程式設計師的第三年,我預見到微型計算機是未來發展的方向,因此我調整了我的工作重心,並加入了他們那個團隊。有一次,在那裡我讀到一門新的語言即C語言,並說服我的經理買下它。事實證明,會用C語言意味著我的第一個啟動應用程式就可以用C語言來編寫而不再用Pascal.
後來我又讀過關於物件導向的程式設計,它點醒了我,於是我在C的基礎上增加了一些可以取巧的物件以便利用。因此當後來C++出現的時候我已經遊刃有餘了。
當我在蘋果工作了一段時間之後,我認為我需要在網上工作並去了諮詢公司使用NeXT WebObjects寫了一些被稱之為稱為objective - c的模糊的語言。一旦Java J2EE出現,我相信公司會使用它來工作,結果就真的利用Java J2EE做了第一個專案。巧合的是,當時做那個專案的公司就是現在我老闆的母公司,這是他們的第一個完整的Java專案。
當你關注的是整個行業發生了什麼,而不是隻關注你自己正在做的事情的時候,一切就自然而然的出現了。你沒辦法知道哪件事會成為下一個大事件,但是你可以做到讓自己對所有的事情都有了解,即使你沒辦法將它們一一嘗試。
我記得2000年中期的時候有一個同事,是搞C++的頭兒,當時他的IE瀏覽器出現了一些問題,我建議他試一下firefox。結果他像看一個瘋子一樣的看著我,因為除了IE之外,他不知道還有別的瀏覽器。在那之後他也沒有興趣去嘗試一下firefox,即使這並不會影響到他的工作。我沒辦法理解這種態度。你沒辦法知道下一個大事件會從何而來,拒絕承認這個世界在改變並不會真的讓世界停止改變。
我有一些獲得本科學位的朋友,當大型機退役之後他們隨之失業,當他們發現他們沒辦法再繼續當程式設計師的時候,他們開始抱怨說早該花點時間學些別的東西。但是當你意識到這些的時候,一切都太晚了。認為你的老闆會來培訓你無異於痴人說夢。有時候你的老闆會連個通知都沒有就開了你,你會丟了工作,專案,甚至是整個公司,然後你不得不去找份新的工作。指望老闆對你進行培訓是不現實的,如果你是一個汽車生產線上的工人這還有可能,但作為一個程式設計師是完全不可能。
能不能進步取決於你自己,你要自己去嘗試新的事物,即使它們並不重要。學習任何東西都是有用的,因為你嘗試的程式設計技術和工具越多,再用其他的工具就會越容易。你所學的東西可能會沒什麼用,但是學習本身永遠不會做無用功。不管是你在寫開原始碼,或是自願的編個程,或者僅僅是在家裡寫一個別人永遠看不到的東西,都沒有關係。它訓練了你的大腦開始接受新事物。即使是僅僅瞭解了在程式設計的世界裡將要發生什麼,也可能是有用的,因為不知道在什麼時候,就會有老闆問到你關於這方面的問題。
當我第一次聽說Ajax的時候(在這個術語出現了幾個月之後)我正在寫web應用程式,然後我開始使用它;再一次的,我先把這個新東西教給我的同事們。遺憾的是這讓公司的架構團隊感到恐慌,他們認為我購買了一種未經批准使用的新技術,他們也懷疑這種新技術能否得到支援。他們中間沒有人聽說過這個東西(其實是他們沒有去關注過),當我告訴他們這只是一種Javascript的時候他們才勉強息怒。我在架構團隊裡,與時俱進的接受新事物是我的職責所在,這也是個很痛苦的過程。
當iphone最初面世的時候,雖然還沒有任何已開發的工具包,我仍然覺得它代表著未來。我的Objective-C方面的知識再次派上了用場,這實在很讓人吃驚。
現如今要與時俱進是很荒謬的一件事。用JavaScript做 web apps的人們每週都能搞出新的大事件;即使學的再快,你也沒辦法在新的框架覆蓋之前就學習完所有的東西。那些日子我的工作並不在這個領域(當時我只做ios),但是我仍然堅持學習,你永遠不知道未來會朝什麼方向發展,也沒法知道你會在哪裡結束。
在老闆給我的少數的幾堂培訓課裡,我基本上沒學到什麼有意義的東西,因為我那些東西我都已經瞭解,而且有些新技術我都已經使用過了,即使它們對我的未來沒那麼重要。不過所有的事情都是這樣,你沒辦法知道哪些東西會在以後幫到你。
在研究生期間學習化學的時候我學到了APL,除了玩,我從沒用它幹過別的事情,但是最後它成了我第一個產品Trapeze的基礎。在1999年之後我把Objective-C忘得乾淨,但是現在它成了我的主要語言。你沒辦法知道在未來能幫到你的東西跟現在有什麼關聯。
有的程式設計師會忽視掉他們工作方面以外的一切,這種行為深深刺激了我。我曾與一些利用4GL工具生成RPG程式碼的人一起工作。他們吹噓說他們使用的工具是世界上最好的,他們無需再瞭解別的什麼東西。我甚至能夠想象當他們中的大多數人下崗的時候,他們會開始疑惑,為什麼他們沒辦法再找到一份新的工作。技術很少會消失,但是你的工作會減少,除了可怕的維護工作外你可能什麼都做不了,然後你就變得多餘,直至被掃地出門。現如今任何人都沒辦法幫助你重新成為有用的人,除了你自己。如果你還在等待,那麼等到一切都已經太遲的時候,你的事業就會遭受到毀滅性的打擊。
所以現在不要再拖延了,學點新東西吧,讓自己更好的學習新東西吧。睜大你的雙眼,你可能就會看到未來正在向你走來。當它展示在你面前的時候你會發現這沒什麼大不了的。很幸運一直以來我能夠保持專注,這讓我在三十年之後仍然能夠進行程式設計,能夠在一些很現代化的東西上進行工作。
所以要睜大你自己的雙眼,不要指望別人會幫助你。就像棒球投手Satchel Page所說的那樣:“別回頭,別人隨時有可能趕上你”。在程式設計方面你需要一直向前看,因為你背後唯一的東西是討厭的顛覆者。
相關文章
- 作為一個程式設計師,告訴你一些編碼知識程式設計師
- [譯]作為程式設計師你不能成功的 10 個跡象程式設計師
- 程式設計師為什麼要高薪?看完讓你勇於為自己開價程式設計師高薪
- 程式設計師-你得把自己賣出去程式設計師
- 作為程式設計師,你的夢想是什麼?程式設計師
- 作為一個程式設計師,CPU的這些硬核知識你必須會!程式設計師
- 作為一個Java程式設計師,這 8 個開源類庫你必須知道!Java程式設計師
- 作為程式設計師,無論你在哪個階段,這些書都值得你看程式設計師
- 當你完全認清程式設計師這個行業,你才能越走越遠程式設計師行業
- 作為程式設計師的你,常用的工具軟體有哪些?程式設計師
- 當你完全認清程式設計師這個行業,你才有走下去的勇氣程式設計師行業
- 你們以為的女程式設計師程式設計師
- 你憑什麼做好一個程式設計師?程式設計師
- 程式設計師的第一步,你走對了嗎?程式設計師
- 你為什麼成為一名程式設計師?程式設計師
- 我來告訴你,一個草根程式設計師如何進入BAT程式設計師BAT
- 程式設計師如何讓自己的技能變現?你是不是感覺自己錯過了一個億?程式設計師
- 作為程式設計師的你,一年看幾本技術相關的書程式設計師
- 你為什麼選擇程式設計師這個職業?程式設計師
- 羨慕程式設計師的高薪?你會讓你的孩子當程式設計師嗎?程式設計師高薪
- 作為程式設計師,這份Markdown備忘單你永遠需要程式設計師
- 作為程式設計師,這些實用工具你必須要知道!程式設計師
- 作為非IT行業大企裡的程式設計師,我講一個自己工作上的故事行業程式設計師
- 程式設計師的差距在哪裡?程式設計師的三個級別,你在哪裡?程式設計師
- 作為Java程式設計師,你遇到過哪些質量很高的Java面試!Java程式設計師面試
- 2018年IT界規模最大裁員,作為程式設計師的你慌了嗎?程式設計師
- 一個故事告訴你什麼才是好的程式設計師程式設計師
- 作為一個程式設計師,記憶體和磁碟的這些事情,你不得不知道啊!!!程式設計師記憶體
- 程式設計師你為什麼這麼累?程式設計師
- 怎樣把自己培養成為一個優秀的程式設計師程式設計師
- 個人程式設計助手: 訓練你自己的編碼助手程式設計
- @程式設計師,你該如何磨快你的鋸子程式設計師
- 給程式設計師的10堂寫作課(一)--30+的你,怎能錯過寫作?程式設計師
- 想要成為一個合格的Java程式設計師, 你必須要做到這些!Java程式設計師
- 程式設計師,停止你的焦慮程式設計師
- 程式設計師,熱愛你的 bug程式設計師
- 6個新手程式設計師程式設計必不可少的工具,你用過幾個?程式設計師
- 程式設計師因工資低拒絕offer,HR:估計你一輩子就是個程式設計師程式設計師
- 程式設計師,請你不要在坑程式設計師了?程式設計師