老程序員應該記住的5件事
英文原文:Five Things Old Programmers Should Remember
如果你甘于現狀,并且已經在計劃著怎么用退休金了,那么你不是這個帖子的主角。當然還是要恭喜你,已經快熬出頭了。但是,如果你同我一樣,盡管發現自己在變老,但卻依然無法抵擋編碼和構建東西的欲望,那么請繼續往下看。
我曾是一個系統軟件工程師,但在我快 40 歲的時候,我被創業撞了一下腰。我認為創建自己的公司是一件很酷的事情。我建立了風險投資,在一些非常小的饑餓創業公司得到了一些花哨的頭銜。我很自信我 會成為一個好的 CEO,一個不算壞的管理者,而且即便我不再編碼,我也可以聘請一些優秀的程序員和管理人員——以求高品質和創新。
我順從自己的內心,并盡了最大的努力去奮斗。然后,我 54 歲了,年紀大了,開始有點力不從心。記憶力也下降了。我已經沒法像以前那樣學習得既快又多了。
我的這些負面的想法因為我所看到的種種新生生物而一點一滴地強大起來。這么多的新技術,像潮水一般洶涌而來。我討厭 node.js,我認為 Web 開發框架是可怕的,并且對一些我認為神圣不可侵犯卻墮落成為陳詞濫調的敏捷和極限編程等名詞表示哀悼。我渴望曾經那些大家規范行為,認真仔細編碼和測試的 美好時光。
然后有一天晚上,當我正在看一部毫無新意的老電影《星際迷航》時,里面的 James T. Kirk 感嘆,他感覺自己正在衰老,就像蠟燭一點一點在燃燒。Spock 毫不猶豫地以他慣有的自信和邏輯風格說:
請恕我直言,如果你接受晉升的話,絕對是一個錯誤。指揮飛船是你首選的最好命運:其他的你根本就發揮不出作用。——Spock
我是不是也做了同樣錯誤的選擇?轉去管理層(去做一些勉強擅長的事情),而不是堅持做我真正擅長的事情,是否是一個錯誤呢?
但是,幸運的是,我很快就意識到,這個問題的答案是“yes”。我忘了成為一個軟件工程師是我首選的最好命運,這些年來,我的編碼能力并沒有任何進步。第一家基于我寫的一個軟件而成功的公司,至今為止仍在使用大部分代碼。
因此,在歷經一年時間的徹底反省之后,我開始學習新的語言,開始迎風破浪地向前沖。我真的很幸運,到 57 的時候,我甚至還為一家小型的本地創業公司設計和創建了迄今為止我寫的最好的軟件之一。
如果你和我同病相憐,都一樣正在逐漸走向老程序員的“死胡同”,那么歡迎閱讀我總結提煉出的一些建議,希望能對你有用。
第一件事:不忘初衷
隨著年紀一點一點地變大,我們會漸漸厭倦處理事情。我們會厭倦于花大量時間去做一些收效甚微的事情。我們會厭倦于看到一遍又一遍地犯同樣的錯 誤。我們開始感嘆“逝者如斯夫不舍晝夜”。而面對那些快要退休的朋友,我們開始羨慕他們,羨慕他們安全,可靠,有時略顯無聊的工作,羨慕他們快要拿到退休 金,可以過舒坦的日子了。
從頭開始創業,用 20 年時間去經歷另一種不一樣的人生,聽上去很荒唐,而且老實說,我的妻子到現在還在絮絮叨叨這一點。
但是,當我再次回到這一領域的時候,感覺就像又是第一次寫軟件,一種小別勝新婚的興奮之情油然而生。日新月異的技術。如此多有待解決的問題。層出不窮的新發明和再創造。軟件成為了一個全新的領域,到處都是新的思路和機遇。
對于我們這個群體中的許多人來說,處于最前沿是最令人興奮的工作。它像磁鐵一樣的吸引著我們。而且,我們可以做到!我們這些老程序員擁有更豐富的經驗,經歷過更多的失敗,更多的成功,對于計算機如何工作比業內大多數人士了解得更為透徹。
當然僅僅這些還不夠,為了保持相關性,你還得付出一番努力。你需要去學習,去學習新的語言,如 Swift,Python 和 Go。是的,這可能需要幾年的時間!并且可能會讓你犯以前從來沒有犯過的錯誤。你會停滯不前,你需要知道哪些工具包是相關的。你會看到年輕的程序員將你甩 在身后,但不是因為他們更聰明或更敏捷,而是因為他們沒有任何顧忌地一門心思往前沖。這正是你需要做的。就像你剛開始進入這個領域一樣一往無前。
不要忘記你的初衷,如果你真的想做一些貢獻,那么請捆住內心擔心年紀變大和畏懼流言蜚語的魔鬼。不要禁錮自己的思想,生活不會你的老去而結束,只要你想飛翔,那么每時每刻都是一個新的開始。
第二件事:不要畏懼混亂
有一句老話叫,“事情變的越多,不變的也越多(the more things change, the more they stay the same)”。事實上,很多東西發生的變化比我們預期的要更小。我們以為現在的程序員能夠完全理解編程過程。但其實不是。我們以為當年 bug 和錯誤頻出的日子已經不復存在了。但它們依然橫行肆虐。我們預計花在實驗和改張易弦上面的時間會變少。但其實亦不然。
但從另一個角度看,今天的事情與以往卻又是全然不同的。
我剛開始是在惠普科學計算器上編程,我唯一見過的程序員還是在電視上面,他們穿著實驗工作服,彼時 Unix 還只是 6 歲大的稚兒,內核只由兩萬行代碼組成。即使到了 80 年代中期,軟件開發依然是一項獨立的活動。家用電腦,雖然功能上已經滿足真正的編程,但卻并不提供一般人要想高效學會編碼所需的工具集和知識。
我不知道在我涉及這一行的 1980 年有多少程序員存在,但真的不多。因為直到 1988 年,美國勞動統計局才開始計算這個數值。那時,美國大約有 10 萬個專業的程序員。其中,高級程序員不超過 7000 人。
而今天,最新的 IDC 調查估計,全世界大約有 1800 萬個開發人員,而且近一半還是非專業人士。Linux 內核 GitHub 代碼庫包含 980 萬行代碼,有近 6000 個貢獻者。而且,Linux 內核還只是 github 的 1 千萬個代碼庫中的一個。光是谷歌的企業代碼庫就有超過 20 億行代碼。
每時每刻都有很多代碼問世。
很多很多。
如今的軟件更像是一種極限運動。任何人都可以加入進來。你最好能夠習慣這種現狀,因為編碼已經成為了一種新興的首要素養。當這個星球上的每所學校讓 10 歲的小孩子都開始學習編程的時候,我們已經無法計算將會有多少開發人員進入到這個行業中。
我們這些,說好聽點是有經驗的程序員,需要的是接受當今社會這種一窩蜂學編程的現狀。就像跑步,很多很多人跑步,但大多數人都是業余的,只有少 部分晉升為專業的,而真正夠資格參加奧運會的只有鳳毛麟角。要想取得成功,那么你需要摒棄你大腦中有關軟件的已經先入為主的觀念,接受這種混亂的狀態。
因為這種混亂的現狀,所以軟件世界不可謂不魚龍混雜。人們已經再創造出了我們多年前就知道如何去做的事情。他們正在創造貌似多余的庫。他們正在創造新的技術。可能不一定更好,但會比以前的辦法更容易。
這是軟件增長和發明的黃金時代,工具變得唾手可得。
為了不被這個行業踢出局,你需要重振旗鼓,和其他人競爭,哪怕他們比我們年輕 30 歲。我們這些老程序員也應該感謝年輕一代的程序員,是他們將我們的智慧,經驗和知識添加到這些新的代碼庫和團隊中,從而減少了混亂,并提升了新方向成功的機會。
因此,不要畏懼你看到新的流行詞,也不要害怕明顯的模仿發明,要學會透過現象看本質。學習強者的態度,學習他們的經驗和學習方式。
第三件事:不要留下芝麻丟了西瓜
我最喜歡的編程格言是,“改進軟件更多的是通過刪除代碼而不是添加代碼”。這應該成為每個程序員的至理名言。你需要學習的東西,比你想象得還要多。任何可能會妨礙你學習的事情——無論是你應該遺棄的舊程序,還是老觀念——都會阻止你進步。
作為一個資深的程序員,我們的工具包包含了許多可靠的技術,這是我們技能的基礎。這可以一種祝福,也是一種詛咒。
通常情況下,比起導入一個預先寫好的包,我可以更快地編寫好一個解析例程。在我編寫之前,我通常需要確保包是“正確的”(即:我的做事方式)。 我逐漸意識到,我的這種直覺本能過時了。我得嘗試導入開源包。如果發現我的這種方式是“不正確的”,那么我應該找出優秀的,可重用的代碼,而不是再創造。
在大多數情況下,經驗是創新的敵人。進步的真正唯一辦法是懷疑一切。只有當你嘗試了新的途徑,并測試過它知道是更好還是更壞之后,你才能決定采用什么樣的做事方式。這就像一個過濾器一樣,只接收通過親身體驗的方法思路,過濾掉了只通過檢查審核就得出的思維方法。
通常情況下,這種方式很耗費時間,所以你要抵住回到舊習慣的誘惑。畢竟最后的收獲是你自己的,所以一定要堅持這種方法道路。就像我說的第一件 事,不要忘記你的初衷。隨著時間的積累,慢慢的,你會習慣于發現自己的工具箱多了一個很棒的新工具系列,就去逐個檢查這些技術是否是有價值的,是否是值得 保留的。
如何做好這些抉擇也是最重要的技能之一,并且直覺起了關鍵的作用。幸運的是,你有幾十年的經驗,比大多數人的直覺更敏銳。只是不要讓你的偏見影響到你正確的思考。
第四件事:猶未老矣
假設你今年二十歲,剛從大學畢業的第二年,你發現你不僅熱愛寫軟件,而且也擅長于此。而你周圍的人,你的同齡人也在朝自己的方向努力著。有的通 過創建應用程序或探索在線產品理念,啟動了一家小得不能再小的軟件公司。有些甚至更早就開始創業。John Meyer 在他 19 歲的時候,他的 app 公司 TapMedia 就已經在蘋果 App Store 上近 40 個的 app 了!
灰心,喪氣了?擔心自己老了?現在開始,猶未老矣。
什么是 20 歲的人有的,而你沒有的?沒錯,他們擁有著:一往無前的沖勁以及無窮無盡的熱情。但是,你所擁有的比這些更重要:經驗,知識,以及經歷過的失敗能讓你避開更多的障礙。
如果一個 20 歲剛畢業的黃毛小子到他們 25 歲的時候才能成功創建公司,那么你肯定用不了這么多時間!因為你不需要經歷那么多的失敗和挫折。更何況,你掌握的技能繁多,如健全的管理和正確的期望,這些真正成熟的技能能讓你做得更好。
不管你多大年紀,只要能下定決心朝著目標執行,那么用不了幾年你就能取得下一個軟件的成功。不要在躊躇和猶豫中浪費生命。每個人都會老去,沒有人能阻止歲月的流逝。那么,為什么不能在變老的同時有所建樹呢?相信自己。
成就并不是年輕人的專利。Arthur Rubenstein,世界上最偉大的鋼琴家之一,80 年來憑借其出色的演奏贏得了聽眾廣泛的認可。Julia Child,著名廚師,是在她年屆 40 的時候才開始學習烹飪的。Roget,盡管在他年輕的時候發明了對數計算尺,但是誰都沒有想到,他在 73 歲的時候,居然創作了《Roget’s Thesaurus》!
所以,不要再認為創建公司以及編寫新軟件只有年輕人才可以,你也能行。盡管如此,但隨著你的年紀增大,有一些事情是你不能忽視的。這就是下面我要說的……
第五件事:健康是革命的本錢
還記得以前為了盡快發布下一個版本通宵達旦工作,卻依然感覺精力充沛的日子嗎?戴上耳機,沉浸在代碼的海洋中。房間中只有屏幕發出的暖光,和旁邊滿是可樂罐的垃圾桶,以及亂七八糟的比薩餅盒子相映成趣。
那樣的日子已經一去不復返了。當你一把年紀的時候,如果你要搞新項目,那么你就不能再采取這樣的做事方式。因為你的身體條件已經不允許了。你現在的身體更像是一個生意上的合作伙伴,合作的好就能協助你工作,合作的不好,就會拖你的后腿。
別不承認。你敢說,你現在的肌肉不會偶爾疼痛嗎?你現在沒有大腹便便嗎?想必醫生經常會告誡你要減肥,要多鍛煉了吧。驗光師甚至開始建議你佩戴“遠近雙用眼鏡”了吧。……
總之,你需要改變生活和工作的方式。可以通過鍛煉和改變一些生活方式的來克服這方面的生理問題。健康的身體能讓你在應對挑戰的時候也不會力不從心,能夠讓你老驥伏櫪,志在千里,從容地應對風險和責任。
改變不會自行發生,它需要你的管理和約束。但是這往往卻是我們再次啟程的攔路虎。因為我們身邊有著太多的責任。家庭,孩子,以及需要承擔的家庭財政義務。大多數人會隨著年紀的增長越來越重視這些。而冒風險以及再次學習技術往往會讓人覺得是不負責任的。
將自己接下來的人生繼續定義為程序員,可能意味著你永遠不要想退休了。因為一不留神隨時隨地就會遇到新事物。正是這種不可抗拒的學習心態推動著你的職業生涯的進步。
希望我上面提到的這五件事能夠成為你的精神食糧。并且我還要再次提醒你,無論什么時候開始,都不算太晚。不管你是什么背景,總有可以繼續完成的 重要工作。如果你是一個商業程序員,那么整個商業世界還處在軟件中斷的陣痛中。如果你是一個網頁設計師,那么我想說的是,web 8.0 還沒有大放光彩。
當然如果你是一個 iOS 程序員,那么建議你寫一個優秀的電子郵件 app,不知道你行不?
-
譯文鏈接:http://www.codeceo.com/article/5-things-old-programmer-know.html
翻譯作者:碼農網 – 小峰