1、迷戀技術(shù),保持對代碼的熱情
記得剛來到培訓(xùn)基地的時候, 講師是一個風(fēng)趣幽默的人, 他說過這樣一句話:"我們首先要有對編碼的興趣,其次我們要做的是改變世界" 當(dāng)時也就當(dāng)成笑話聽了. 打算學(xué)這個, 想到的是前景好, 工資高等等一些其他的因素, 而無關(guān)興趣! 如今的經(jīng)濟狀況太槽糕了,很多人都在找工作。2016年大學(xué)應(yīng)屆畢業(yè)生人數(shù)達765萬人,被稱為“史上最難就業(yè)季”. 與此同時,許多科技公司非常渴望招到程序員,這活兒報酬極高還有很多福利。我相信(沒啥證據(jù))有目的地學(xué)習(xí)一年也許能讓你學(xué)會勝任這些工作的技能。為什么沒有更多的人這樣做呢?供需關(guān)系不應(yīng)該自動調(diào)整這種不平衡嗎?那是因為隨著市場需求增加, 隨之而來的都是些loser, 公司需要的是優(yōu)秀的程序員!
成為優(yōu)秀的程序員是極其困難的,并且這個過程不可能一蹴而就。我們不可能期待去種一些樹,然后一夜間收獲有著2000年樹齡的紅杉樹。如果不是對編程充滿興趣,那么就會非常乏味枯燥。如果你不迷戀技術(shù),對代碼充滿熱情,那你只能做一個平淡的程序員。
2、磨練意志, 在自學(xué)中成長
一個人首先得是自學(xué)者來學(xué)習(xí)編程。僅僅是超過你能寫出可用的小程序這個基本水平,你也需要很多年在實踐中學(xué)習(xí)一切必要的技能。從沒有人僅通過上課和讀書就成為了一個卓越的程序員。這通常需要無數(shù)小時的編程實踐。并且和普遍流行的觀點相反,計算機專業(yè)不是教你編程的,而是傳授理論的。程序員是一個在實踐中成長的職業(yè)。你看再多書,聽再多的視頻課,自以為學(xué)到很多東西,但正在接觸項目的時候,就兩手發(fā)軟,頭腦空白了。最好的提高方法,是參與到項目中去,最好是能參與從設(shè)計到開發(fā)到測試到維護一整套流程。
作為程序員,你必須得有幾乎無盡的毅力來不斷繼續(xù)嘗試調(diào)錯、修復(fù)和開發(fā)。堅持做到這些的人是需要具備特殊本領(lǐng)的,尤其是當(dāng)你看起來沒有取得任何進步的時候。這是非常需要具備的一項人格特點,而沒有這種層次的毅力,足以使大多數(shù)沒有毅力的人遠離程序員這一職業(yè)。
3、不怕失敗,學(xué)會尋找成就感
新程序員由于技術(shù)水平、經(jīng)驗的欠缺,寫出的程序bug多,執(zhí)行效率低,可能被嘲笑(我發(fā)現(xiàn)這還是普遍現(xiàn)象),然后被責(zé)怪,內(nèi)心充滿有挫折感。要學(xué)會自我減壓,相信挫折與失敗只是暫時的,發(fā)奮圖強。在學(xué)習(xí)中要學(xué)會尋找成就感,哪怕你只是完成一個小功能,優(yōu)化了一段代碼,都是你辛勤付出的結(jié)果,是你能力提高的體現(xiàn)。
一旦你習(xí)慣了別人來檢驗?zāi)愕南敕ǎ憔蜁_始自我審視并練習(xí)想象這些想法的結(jié)果。要有面對失敗的健康心態(tài)(就算艾薩克.牛頓的地心引力說是錯的,但我們依然愛他并需要他去嘗試)。
不少程序員都有這樣的習(xí)慣,好不容易思考出解決問題的方法,迫不及待的把代碼寫出來,功能也實現(xiàn)了,立馬提交代碼完事。殊不知你的代碼中還有不少細節(jié)需要完善,大到內(nèi)存泄露、資源釋放、代碼是否高效,小到注釋是否規(guī)范,都是你必須關(guān)注的問題。且不談這些細節(jié)問題對你做出來的項目的影響,就是對你編程習(xí)慣的影響也是深遠的。
最后,你必須自律。意識到計劃里有缺陷不會讓你更高效,除非你有足夠的意志力去改正缺陷,并重建手中正在進行的工作。
4、學(xué)無止境, 永遠不要局限于眼前
起初這句話聽起來會很迷人,你會很喜歡!我喜歡學(xué)習(xí)新事物!尤其是當(dāng)你來自于一個無聊的工作或做永遠不變的事情時 。然而,經(jīng)過了一段時間后,你會發(fā)現(xiàn),這變成了一條永不停息的知識河流,如果你不喜歡水,你會感覺困在了無盡無邊的知識瀑布前,無法停止,也無法窮盡。如果你不喜歡堅持不懈的去學(xué)習(xí)新事物,而喜歡待在一個永不變化的環(huán)境中,那你很可能成為不了一名優(yōu)秀的程序員。
我知道,很多的程序員都上過大學(xué),出自高校的,但這不是我要說的。優(yōu)秀的程序員總是在鉆研程序代碼和文檔,來弄清楚東西的工作原理,他們不會敲開老板辦公室的們說:“我需要上培訓(xùn)課,學(xué)習(xí)這款新軟件”。優(yōu)秀的程序員在不斷的學(xué)習(xí),不斷的靠自己研究出事情的原委——不論是有高學(xué)歷還是沒有學(xué)歷。
沒有哪個行業(yè)能像計算機行業(yè)這么活躍、刺激和有趣了。不僅是新興工業(yè)革命的主力,又滲入到所有的行業(yè)中,干一輩子值了。 程序員首先是工程師,Professional,就跟律師,醫(yī)生一樣,給大家解決問題;但是另一面呢,又是藝術(shù)家,創(chuàng)造新奇好玩的東西。這樣的職業(yè)做一輩子有什么問題?
推薦一本書《程序員的自我修養(yǎng)》
每個編碼的程序員其實心里或多或少都有一些代碼情結(jié),手里頭捧著一本關(guān)于程序的書,就好象捧著自己的夢想似的。
拋開書上面的不說,說一說我所認(rèn)為作為一個程序員應(yīng)該具備哪些修養(yǎng):
1、對程序、編碼的熱愛。如果不熱愛編程,技術(shù)再牛逼也只能是一個代碼工人。
2、謙虛好學(xué)的態(tài)度。早就聽說就有文人相輕的說法,做文章的瞧不起做文章的,其實很多程序員也一樣,不知天高地厚,眼高手低,整天拿編程語言比來比去,在他們眼里別的程序員都是傻逼。這些人就算是某個領(lǐng)域的“高手”,也絕對談不上是一個合格的程序員。
3、團隊協(xié)作能力。自古有一個諸葛亮抵不上三個臭皮匠的說法,這話說的雖然有些絕對,但是也有一定的道理,如果一個程序員不能很好的和隊友交流、合作,哪怕有三頭六臂也很難成為一個出色的程序員。
4、安靜平和的心態(tài)。浮躁、急躁是技術(shù)人員最忌諱的心態(tài),這當(dāng)然不是指火燒到眉毛了還懶的動彈,而是說遇到問題能夠冷靜的分析并作出準(zhǔn)確的判斷。這一點上有些人真讓我望塵莫及,后天可以鍛煉,但我覺得天生的因素占很多。
5、自信。鼻孔朝天也不好,但是沒有自信更要命,總是不相信自己能夠開發(fā)出成功的軟件,或者怨天尤人以語言不通、國內(nèi)環(huán)境為擋箭牌為自己開脫,這樣永遠也寫不出像樣的程序。
When people say hustle, what they really mean is do the fucking work. 當(dāng)人們說忙死了時,他們的真正意思是,正在做的事情真操蛋。