(本文作者為 Andrew Wulf,本文摘自他的部落格 The Codist,以第一人稱撰寫)

我曾經在 Hacker News 網站上讀過一篇文章的評論,其中一個年輕的程式設計師說,他不想待在那些不培育較老的程式設計,而是要他們離開的公司因為他明白,有一天他們的下場亦會相同。

這個年輕人的本意是好的,但是他這種說法還是惹惱了我。

首先,僅僅因為一個程式設計師年齡較大並不能代表他思想陳舊(就像你不能因為一個程式設計師較年輕,就說他思想新潮)。我認為這個評論中最大的問題是:始終讓自己接受教育並跟上時代的發展,這應該是你自己的責任,而不是公司的問題。

  • 教育自己是自己的責任

我已經當了 32 年的程式設計師,而我一直努力站在科技潮流的前端。我知道很多像我這個年紀的人自從拿到資工學位、離開學校就再也沒有吸收過新知,最終難逃被淘汰的命運。我花了 6 年的時間學化學,但是當我成為一名程式設計師,我發現我需要知道在工作之外,外面正在發生什麼事,也需要不斷學習的欲望,以及嘗試所有種類的程式編寫。當然在當年,這些事情都比現在要慢得多,閱讀也是一項挑戰。當時沒有網路,而所有資料都印在紙製品上!

在我入行的第三年,我看見小型電腦會是未來的趨勢,因此我調整自己並加入了另一個團隊。在那裏我認識了 C 語言,並說服我的經理它是值得購買的。結果認識 C 語言就代表我的第一個程式不需要用 Picsal,而可以用 C 語言來寫。

後來我又知道了關於物件導向程式設計,而它再度給了我一些新靈感。我在 C 語言的基礎上又增加了一些東西,因此當後來 C++ 出現的時候我已經游刃有餘了。

在我在蘋果那段很糟的工作經驗之後,我認為我需要線上工作,於是換去顧問公司工作,使用 NeXT WebObjects 寫了一些被稱為 Objective-C 的晦澀語言。Java J2EE 出現之後,我說服公司使用它來工作,結果就真的利用 J2EE 完成了第一個企劃。巧的是,這個公司就是現在我老闆的母公司,而那第一個企劃就是他們的第一個完整的 Java 企劃。

  • 拒絕承認這個世界在改變並不會真的讓世界停止改變

當你關注的是整個行業發生了什麼,而不是只關注你自己正在做的事情的時候,事情就會自然發生。即使你並不能真的嘗試每件事情、你永遠無法知道什麼會成為下一件大事,但是你可以讓自己保持對一切事情敏銳。

我記得 2000 年中期的時候有一個同事是 C++ 的領袖人物,當時他的 IE 瀏覽器出現了一些問題,於是我建議他試一下 Firefox。結果他把我當成瘋子一樣的看:他不知道除了 IE 之外還有其他瀏覽器。在那之後,他對於嘗試使用 Firefox 也沒有興趣,即使這並不會影響到他的工作。我沒辦法理解這種態度。你沒辦法知道下一個大事件會從何而來,拒絕承認這個世界在改變並不會真的讓世界停止改變。

我有些朋友拿到學士學位,最後卻失業了,因為大型主機退役了。當他們發現他們沒辦法再繼續當程式設計師時,他們開始抱怨早知道就該花時間學些別的東西。但是當你體認到這些的時候,就已經太晚了。

假設你的老闆會來培訓你,無疑是癡人說夢。有時候你的老闆會連個通知都沒有就開除你,你會丟了工作、企劃、甚至是整個公司,你只好去找份新的工作。指望老闆對你進行培訓是不現實的,如果你是一個汽車生產線上的工人還能指望一下,但程式設計師的話就免了吧。

  • 要不要跟上時代是你的抉擇

要不要跟上時代是你的抉擇、要不要嘗試那些即便看起來不重要的新東西,都操之在你。

學習任何東西都是有用的,當你嘗試的技術和工具越多,使用其他的工具就會越容易。你所學的東西可能沒什麼用,但是學習這件事本身永遠不會白費力氣。不管是你在寫開源程式,或是在自主寫程式,或者僅僅是在家裡寫一個別人永遠看不到的東西,都沒有關係。它會訓練你的大腦以開始接受新事物。就算是只是去了解在程式的世界裡要發生什麼,都可能是有用的,因為你不知道老闆什麼時候會問道你關於這方面的問題。

在 Ajax 這個術語出現幾個月之後我第一次聽說到它,當時我正在寫網路應用程式,而我開始使用它;再一次的,我把這個新東西教給我的團隊成員。然而遺憾的是,這嚇到了整個團隊,他們認為我購買了一種未經批准的新技術,同時也擔心這種新技術得不到支持。沒有人聽說過這個東西(因為他們並不太關心),當我告訴他們這只是一種 Javascript 的時候他們才勉強息怒。與時俱進的接受新事物是我的職責所在,這也是個很痛苦的過程。

當 iPhone 最初面世、甚至還沒有任何開發工具時,我仍然覺得它代表著未來。我的 Objective-C 方面的知識再次派上了用場,這實在很讓人吃驚。

  • 你永遠不知道未來需要什麼

現如今要與時俱進是幾乎不可能的一件事。用 JavaScript 做網路的人們每周都能做出足以影響未來的大事件;即使學的再快,你甚至無法在它們被新東西取代之前就學會它們。我的工作並不在這個領域(只在 iOS),但是我仍然盡量堅持學習,你永遠不知道未來會朝什麼方向發展,也沒辦法知道你會在哪裡結束。

雇主給我的少許幾堂培訓對我來說幾乎都是無用的,因為我早已知道或已經在使用某些新技術,雖然它們並不全部都對我的未來很重要。但你永遠不知道,在未知的未來中哪些東西是實用的。

在化學研究所時的時候我學到了 APL,我只是拿它來玩,並沒有用在其他任何用途上,但是最後它卻成了我第一個產品 Trapeze 的基礎。在 1999 年之後我把 Objective-C 忘得乾淨,但是現在它成了我的主要語言。在未來到底什麼才是有用的,你永遠無法現在就知道。

  • 不要被舊東西壓垮

最能激怒我的,是有些程式設計師會忽視他們工作以外的一切

我曾與一些利用 4GL 工具生成 RPG 碼的人一起工作。他們很自傲地說他們的工具是世界上最好的,而他們永遠都不需要學習其他事情。我可以很輕易的想像某天他們之中的大部分人會被解僱,並且很疑惑為何他們找不到下一份工作。科技幾乎不會消失,但是你的工作會減少,除了可怕的維護工作外你可能什麼都做不了,而你就會變成冗人,最終遭到掃地出門的命運。現在除了你自己,任何人都沒辦法讓你再次成為有用的人。

如果你還在等待,那麼科技的潮流將會壓垮你的生涯。

所以不要再把今天浪費掉了,了解一些比較新的東西吧,或是你能做得更好,去學會某些新知識吧。隨時保持關注,你可能就會看到未來正在向你走來。而當未來真正來到,你將一無所懼。一直以來我很幸運地能夠保持專注,這讓我在三十年之後仍然能夠繼續寫程式、能在最新潮的事情上努力。

因此,讓你的雙眼保持雪亮,並且別再期待他人幫助你成長。就像棒球投手 Satchel Page 說過的:「別回頭,事情可能就要來到你身上。」在寫程式這方面,你必須時時向前看,因為唯一會跟在你後面的就只有生鏽的舊東西,等著把你壓垮。

(資料來源:The Codist;圖片來源: Anne Davis 773 giulia.forsythe, CC Licensed)