活到老,學(xué)到老,程序員也該如此
此前,“網(wǎng)傳阿里巴巴要求盡快實(shí)現(xiàn)P8全員35周歲以內(nèi)”的消息鬧得沸沸揚(yáng)揚(yáng)。雖然很快被阿里辟謠,但蒼蠅不叮無縫的蛋,無蜜不招彩蝶蜂。消息從何而來?真相究竟怎樣?我們無從而知。我們只知道一個事實(shí):不知從何時開始,程序猿也被劃在了“吃青春飯”行業(yè)之列。
飽受“996ICU”摧殘后,好不容易“頭禿了變強(qiáng)了”,即將步入為“高級程序猿”的巔峰,卻被告知:你年紀(jì)大了,35了,反應(yīng)慢了,我們不要你了。
程序猿,老慘了。
許多人都在網(wǎng)上發(fā)帖,他們希望時光可以倒流,回到那個他們還是毛頭小子的美好往日。
他們認(rèn)為現(xiàn)在才開始學(xué)習(xí)某些東西已經(jīng)太遲了,要是早點(diǎn)開始學(xué)習(xí)就好了。
“如果我失敗了怎么辦?”
“我希望我可以……”
“如果我現(xiàn)在才開始學(xué)習(xí),永遠(yuǎn)都不會成為程序員。”
等等……不勝枚舉。

其實(shí),這些都是借口。戰(zhàn)勝自己,如果你想做,就一定可以做到。
小芯接觸過形形色色的開發(fā)工程師——有老有少。他們和你一樣,都是從想要做好生活中的某件事開始。
不要擔(dān)心你的年齡。說實(shí)話,年齡與你坐在鍵盤前的表現(xiàn)無關(guān)。
重要的是自律和動力。
一位成功的老程序員大佬向我們講述他的經(jīng)歷和感悟。(下文采取第一人稱敘事,我皆指“這位老程序員大佬”)
當(dāng)然,不是每個人都能面對成為一名程序員所需經(jīng)歷的痛苦旅程。(這位程序員大佬使用“痛苦”二字來形容“他歷盡千辛萬苦才走到今天的位置”的過程)。
因為如果你想嘗試并喜歡編程,那么在某種程度上,編程會變得具有挑戰(zhàn)性并令人上癮,最后會很痛苦——至少對我來說是這樣。最重要的是,把自己逼到極限的過程很有趣。
但如果你下定決心想學(xué)點(diǎn)什么,那就去學(xué)吧。作為一個沒有大學(xué)學(xué)位的人,我在這里要告訴你,無論你處于人生的什么階段,年老或是年輕,一切皆有可能。
編程的“技能”
許多人把技能與編程相提并論,就好像隨著年齡的增長,你會更擅長編程。你在某個領(lǐng)域花費(fèi)的時間越長,你確實(shí)會掌握一定的知識,但這取決于你的個性。
請記住,技能與編程的時間長短無關(guān)。技能是你的適應(yīng)能力,記住如何修正常見的錯誤,又能學(xué)到新東西。
當(dāng)我學(xué)習(xí)代碼的時候,大腦就像一塊海綿盡全力地吸收網(wǎng)上和辦公室里的信息。我不需要像坐在旁邊的老員工剛開始工作時那樣,要親身經(jīng)歷才能學(xué)會識別某些錯誤。
人們認(rèn)為一個人的編程時間決定了他的編程能力。但事實(shí)并非如此。我知道你們中的一些人會這么想僅僅是因為你年紀(jì)大了,這意味著你永遠(yuǎn)不會學(xué)習(xí)如何編程,或者沒有時間去精進(jìn)。
如果這是你,我希望你現(xiàn)在不要讀這篇文章,也希望你把這些想法當(dāng)垃圾扔掉。
邁克,告訴我需要什么
要學(xué)習(xí)編程,你只需要了解編程的工作原理。
如果你了解編程的概念: OOP、函數(shù)、類型等等,那么你就擁有了擴(kuò)展不同語言和框架知識的能力。
在學(xué)習(xí)了第一種編程語言和概念之后,初次學(xué)習(xí)編程并不能成為你無法成為一名開發(fā)工程師的理由。
有許多優(yōu)秀的JavaScript開發(fā)人員只學(xué)了短短的6個月。
你要用學(xué)習(xí)速度來衡量自己,而不是已知的知識。
可能明天我去工作,首席開發(fā)工程師就會告訴我,我們將改變應(yīng)用程序的架構(gòu),使用Ruby on Rails來編程。
你知道嗎?這時,我和你現(xiàn)在一樣:惴惴不安、充滿疑慮,害怕學(xué)習(xí)Ruby On Rails。
但幸運(yùn)的是,在網(wǎng)上有很多很棒的開發(fā)工程師,在一定程度上他們愿意幫助你。
另外,我已經(jīng)有了一個大致的概念,所以我現(xiàn)在要做的就是理解Ruby語法,這樣就可以了。
我以前從未使用過Ruby on Rails,但我了解編程的工作原理。我知道代碼需要如何與計算機(jī)交互。我知道代碼需要編譯(如你所知,有些代碼與其他的不同)。
我知道我有大量的資源,比如官方文檔和谷歌,以此來理解Ruby on Rails的工作原理。更驚喜的是,大多數(shù)語言甚至有一個啟動應(yīng)用程序或教程。
內(nèi)容在那里;而你是你自己唯一的學(xué)習(xí)阻礙。
放手去做
如果在你學(xué)習(xí)第一種編程語言時候理解了編程的一般工作原理,那么你應(yīng)該可以走得更遠(yuǎn)。
在學(xué)習(xí)和適應(yīng)其他語言以及可能遇到的挑戰(zhàn)時,你在學(xué)習(xí)第一種編程語言的時候所學(xué)到的知識就可以幫到你。
如果你想成為一名開發(fā)工程師,那就學(xué)習(xí)JavaScript。用這種語言做幾個項目,再用這些項目向你的潛在雇主展示你的能力。
這并不是說你花一周時間學(xué)習(xí)JavaScript,就可以在蘋果找到一份首席開發(fā)工程師的工作。并非如此。
但是通過練習(xí),你會對自己的編程能力更有信心。你會經(jīng)歷困難、沮喪、甚至惱火,但這都是值得的。
制定一個6個月的學(xué)習(xí)計劃,每天預(yù)留一定的時間坐下來學(xué)習(xí)JavaScript。一旦你創(chuàng)建了一些應(yīng)用程序,取得了不錯的投資,那么你早已成為公司的價值所在。
此外,當(dāng)你學(xué)習(xí)普通的老式JavaScript時,引入如Angular或React這樣的框架會幫助你掌握和理解。不要急于搞懂一個框架。你要用到它的時候自然會明白。
但我能像其他人一樣聰明嗎?
問題是: 這重要嗎?
當(dāng)然,有經(jīng)驗的開發(fā)工程師會知道一些技巧,而且他們有經(jīng)驗。但是,當(dāng)你和從事編程工作20年或30多年的人交談時,我想他們告訴你的和我一樣。
如今,他們能寫出更好的代碼只是因為他們更善于理解和記憶過去所遇到的某些問題。他們?nèi)匀还雀杷阉鳛g覽堆棧溢出問題的答案。
而且,我認(rèn)為你擅于預(yù)測計算機(jī)的反應(yīng),也擅于閱讀技術(shù)文檔并將其應(yīng)用到你試圖解決的問題上。
當(dāng)你開始學(xué)習(xí)并實(shí)踐時,你會發(fā)現(xiàn)閱讀堆棧溢出問題并理解其解決方案將變得更容易。你解決問題以及向他人闡述問題獲得答案的方式也將變得更加容易和準(zhǔn)確。
對于那些已經(jīng)編程多年的人來說,在有新技術(shù)發(fā)布時,他們也不得不像你學(xué)習(xí)第一種編程語言時一樣去學(xué)習(xí)。
但是他們的優(yōu)勢是他們已經(jīng)學(xué)會了第一種編程語言和概念。
經(jīng)驗豐富的開發(fā)工程師仍會遇到問題。他們?nèi)詴稿e。每一天都是一個不斷學(xué)習(xí)的過程。
我發(fā)誓,當(dāng)人們問我以什么為生時,我不會再回答“我是一名開發(fā)工程師”。我會說“我學(xué)習(xí)軟件開發(fā)”,因為一年之后,我很可能會學(xué)到一些我今天不知道的新知識。
源源不斷的學(xué)習(xí)動力,就是你一直成功的秘訣,就像這位程序員大佬一樣,你也可以,加油!米娜桑~