六星源課堂:干了40年程序員,是一種什么體驗(yàn)?

干了40年程序員,是一種什么體驗(yàn)?今天六星源課堂和大家聊聊!
一位從1984年就開始當(dāng)程序員的老哥出來“現(xiàn)身說法”了。
他總結(jié)了自己從業(yè)近40年的經(jīng)驗(yàn)匯集成了建議,希望能給想長期做程序員的新手們提供一些幫助。

文章一發(fā)布,就在reddit、推特上引發(fā)討論,許多程序員也紛紛跟帖附議,有網(wǎng)友就表示:不能同意更多!

這位老哥叫Noah Gibbs,曾供職于英偉達(dá)、AppFolio Inc、DAQRI等多家公司,目前就職于Shopify。

作為一名資深的軟件開發(fā)者,他一直活躍在開發(fā)一線。
但與想象中不同,這次他并沒有介紹要學(xué)習(xí)什么語言或框架,而是指出了一些他認(rèn)為比技術(shù)更重要的事。
01 、幾歲開始都不晚
大約一年前,也就是45歲時,我才開始學(xué)習(xí)彈鋼琴。這一年我覺得自己一直在進(jìn)步,我相信如果堅(jiān)持下去,到60歲時我一定會非常棒。
學(xué)習(xí)編程也是一樣,當(dāng)你已經(jīng)有了一些其他領(lǐng)域的背景時,你學(xué)習(xí)編程就會變得很快。
相信我,如果你從50歲開始做程序員,10年后,也就是你60歲時,肯定會比我18歲的水平好得多。
我遇到過很多優(yōu)秀的程序員,他們都是在20歲、30歲甚至40歲才入行,所以我不知道你為什么不能從50、60歲開始。這一行需要時間和工作,但你不必非得年輕。
02、 多嘗試不同類型的編程
如果你剛剛?cè)胄?,并且想長期從事編程行業(yè),我的建議是:要多寫一些軟件,任何軟件、寫什么都無所謂。
在我干程序員的40年里,很多潮流來來去去??梢哉f,讓自己多嘗試不同的類型的編程很重要。
這可以使你思想不會變僵硬,而且事實(shí)證明,幾乎任何一種規(guī)則都能教會你一些東西。
如果你太拘泥于某一項(xiàng)單獨(dú)的任務(wù),就很可能會失敗。
03 、不要怕回報(bào)慢
不要覺得自己正在學(xué)習(xí)的東西是無用的,因?yàn)闊o用只是相對的。
我曾經(jīng)把多年的業(yè)余時間投入到一種叫做DGD的舊MUD編程語言中。這當(dāng)然不是為了實(shí)用價(jià)值,因?yàn)閹缀跛嘘P(guān)于它的東西都是奇怪的和不標(biāo)準(zhǔn)的,很少有真正能應(yīng)用的。
但它教會了我很多,它教會了我Ruby on Rails后來應(yīng)用的東西,它教會了我如何使用數(shù)據(jù)庫編程,它還教會了我一些在后來學(xué)的5、6種語言中都能用上的東西。
有趣的是,多年后我在DGD找到了一份咨詢工作。這世界上還沒有多少DGD的工作,但我有一個!這比我學(xué)過的許多“實(shí)用”語言更實(shí)用。
就像我經(jīng)常對自己說的:“現(xiàn)在還早?!蹦憧梢远鄬W(xué)習(xí)一些有趣或有用的東西,即使可能十年、二十或三十年后才有回報(bào)。
不要總是選擇18個月后就會變好的東西,因?yàn)槟銦o法預(yù)見未來會發(fā)生什么。
04 、找到工作對你的吸引點(diǎn)
你開始寫代碼一定是因?yàn)樗哪承┓矫嫖四?,你要做的是試著弄清楚那是什么?/p>
這個答案每一個人都不一樣,對于我來說,我喜歡寫代碼給我?guī)淼某删透泻吐斆鞯母杏X。
只有在工作中找到足夠吸引你的點(diǎn),才能長期堅(jiān)持下去。
如果你感覺不到任何被吸引的點(diǎn),那你可能需要休個假,或重新尋找你喜歡的東西,因?yàn)檫@樣的工作只會讓你精疲力竭。
05 、這不是短跑或馬拉松,這是寫日記
如果你是個新手,很可能在下定決心“我要成為一名程序員”后,列出一個詳細(xì)的計(jì)劃,計(jì)劃中可能包含8個大點(diǎn)、56個小點(diǎn)等等。
我不會告訴你不要這么激動,但我要說:不要把這個計(jì)劃太當(dāng)真。因?yàn)槟悴豢赡芡ㄟ^計(jì)算和計(jì)劃來完成所有的事情。
在某些時候,你并沒有“脫離你設(shè)定的任務(wù)”,你只是“過著自己的生活”。這不是失敗,也不是放棄。
你無法預(yù)測什么是有價(jià)值的,所以你應(yīng)該學(xué)習(xí)所有的東西。我的經(jīng)驗(yàn)就是:你活得越久,工作得越好,你就越能意識到每件事(每個人)都能教給你有用的東西。
你不是在跑短跑或馬拉松。相反,這就像是在寫日記。
十年后,你會翻看這本日記,然后說,“哇,我做了一些很酷的事情”或者“嗯,我是個很有趣的人”,但我想你應(yīng)該不會在日記上寫“我非常擅長Java”。
06 、不要混淆工作和職業(yè)
不要把工作和職業(yè)混為一談,它們不是一回事。
對于我來說,編寫軟件是一項(xiàng)非常棒的工作,但只是一個還行或者可以更好的職業(yè)。
在接受別人的建議時,也要注意對方提到的是關(guān)于工作的建議,還是關(guān)于這份職業(yè)的建議,如果你把兩者混淆,這個建議就沒有多大意義了。
07 、學(xué)習(xí)順序并不重要
在剛?cè)腴T的時候,你往往會得到關(guān)于首先學(xué)習(xí)什么語言或技術(shù)的不同建議,但這其實(shí)不重要。
如果你沒有按老規(guī)矩走,而是開創(chuàng)了自己的道路,那并不意味著你沒有做好基礎(chǔ)工作,也不意味著你就很糟糕。
因?yàn)槿绻臣抡娴暮苤匾氵t早都會發(fā)現(xiàn),并重新去學(xué)它。
08、 你越優(yōu)秀,就越和別人不一樣
早期的程序員職業(yè)培訓(xùn)(例如博客文章、大學(xué)課程、書籍)就像流水線,試圖培養(yǎng)你在每一個方面的基本能力。
而且新手很容易誤認(rèn)為,一個首席工程師需要點(diǎn)滿很多技能、每個技能水平也必須很高,但事實(shí)并非如此。
你可以通過編寫一段相當(dāng)簡單的代碼并詳細(xì)地描述它,就像Patrick McKenzie在《Bingo Card Creator》中做的那樣,也可以通過寫一些真正有利可圖的東西來獲得尊重。
除了基本的能力之外,這些道路幾乎沒有任何共同之處。
這也是為什么當(dāng)你求職時問這樣的問題是很蠢的:“我是一名有15年工作經(jīng)驗(yàn)的軟件工程師,通常的薪水是多少?”
15年是如此之久,以至于你應(yīng)該形成了與其他人不同的優(yōu)勢之處。你寫過書嗎?從事過賺錢的大型項(xiàng)目嗎?整合過一個有趣的開源項(xiàng)目嗎?這15年你做了什么?
當(dāng)然,這也不僅僅是工資的問題。你可以問:“我是一個有15年經(jīng)驗(yàn)的軟件工程師,這意味著我有能力領(lǐng)導(dǎo)這個項(xiàng)目,對嗎?”答案當(dāng)然是“可能”。接下來的問題是“那在15年里你做了什么?”
以上就是本次分享的全部內(nèi)容,想學(xué)習(xí)更多編程技巧,歡迎持續(xù)關(guān)注六星源課堂!