老夫這有一些很正經(jīng)的建議
大家好,我是二哥呀!
今天不聊別的,給大家聊一下我認為學編程當中最重要的三點,尤其是針對新人來說。
熱愛 努力 解決問題的能力
先說熱愛。
有的同學是一開始就熱愛,所以選專業(yè)的時候就選擇了計算機專業(yè);有的同學是誤打誤撞,比如說我就是,大學其實選的是機械自動化,后來被調(diào)劑到了計算機網(wǎng)絡專業(yè),屬于典型的后知后覺型。
一開始,和大多數(shù)新人一樣,我認為編程好難學,班里面的好多同學也認為好難學,能轉(zhuǎn)專業(yè)的就轉(zhuǎn),只有不能轉(zhuǎn)的才留了下來。
十幾年前的計算機專業(yè)遠沒有現(xiàn)在這么熱鬧,很多學校都是作為邊緣專業(yè)來錄的。和我同屆的高中同學,我認識的當中,沒有主動選擇計算機專業(yè)的。
所以,我對計算機的熱愛,純粹是經(jīng)過后天刻意練習的。
很多同學可能會不解,熱愛也能練習?
當然。
當我發(fā)現(xiàn)這個專業(yè)找到工作,能養(yǎng)活自己,能不再伸手向父母要錢的時候,熱愛就一點點的來了。隨著年紀的增長,我越來越喜歡這個專業(yè)了,不是因為它充滿魅力,而是它讓我的生活變得越來越好。
對,我是個俗人。
一開始,這很難,因為經(jīng)過兩次高考的打擊,我的厭學情緒特別強烈,以至于我大學的時候好幾門專業(yè)課都掛科了,同學們可能很難想象:二哥,好多人心目中的榜樣,大學還會掛科。

真實情況就是這樣,所以很多新人給我抱怨說,“二哥,編程好難啊,總是學著忘著,我該怎么辦?”我知道原因在哪?你對編程還不夠熱愛!
當我拿到第一筆實習工資的時候,1200 元,我記得清清楚楚,當時心里樂開了花,知道嗎?人生第一次一次性地掙到這么多錢!拿到工資就趕緊給父母打了一通電話,對,現(xiàn)在回想起當時的場景還是有點熱淚盈眶的。
雖然電話里沒有喊出那句:“爸媽,你們的兒子終于掙錢了,終于不用再伸手找你們要錢了!”但其實,心里面早已經(jīng)喊了幾千遍!
同學們可能很難想象,1200 元的實習工資,能有那么激動!能,對于當時的我來說。
有了熱愛,你自然就會去努力!這是水到渠成的一件事情。
但往往很多時候,我們會迷茫,不知道該往哪里去努力,不知道自己的勁往哪里使!
我也有過。當我拿著 1200 元的實習工資高興的屁顛屁顛的時候,身邊的一些同事,尤其是一些蘇州的本地人,來實習根本就不是為了掙錢,而是給自己一些歷練的機會而已。
印象很深刻。我問過一個同事,“你拿到工資后干嘛呀?”
“加油啊!這點錢還能做什么!”這個回答對我的沖擊感特別強烈,有那么一刻,我覺得努力毫無意義。
但后來我想明白了。
原來,人與人之間的差距是與生俱來的!你只有努力地追趕,才有可能把這些差距縮?。欢坏┠阃V古?,差距就會被越拉越大!
想明白了之后,我就去一個叫編程入門網(wǎng)的網(wǎng)站上抄 Demo,每天一有時間我就去抄。對于那時候的我來說,看書提升得太慢,只有通過實戰(zhàn),我才能快速地提升。
后來,從前輩們那里又了解到,公司接下來會非常依賴一個前端框架,我就硬著頭皮去研究源碼,并利用空閑時間做了一個局域網(wǎng)性質(zhì)的聊天工具。
learn by doing,就是我的經(jīng)驗心得,它讓我急速地成長,很快就在技術上領先了同一批進公司的新人。
讓你的代碼量從 100 行到 1000 行,再到 10000 行,再到 10 萬行,你就不會再有那種“學的時候能學會,做的時候不會做”的感覺了。
當然了,在敲代碼的過程中,你要學會思考,為什么人家要這樣實現(xiàn),為什么不能換一種方法?舉個很簡單的例子,人家用的 ArrayList,你能不能用 LinkedList?人家用的插入排序,你能不能用冒泡排序?
在那段野蠻成長的過程中,我確實很少看書。但最近兩年,我讀了很多很多經(jīng)典的書,比如說《代碼整潔之道》、《人月神話》、《編程珠璣》、《重構》等等等等。
讀書可以讓你知道為什么要這樣做,背后的原理是什么。
再加上大量的輸出,就讓我對編程的思考更加深刻了。
大家想一想,程序員最核心的競爭力是什么?
解決問題的能力,是我認為最核心的競爭力。
當一個問題擺在你面前,你不能束手無策呀!你熱愛,你努力,最終是要解決問題的,你做不到的話,就只能被扣上“紙上談兵”的帽子了。
解決問題的過程可以分為三步:
透徹理解問題是什么? 導致問題出現(xiàn)的根本原因是什么? 找到最佳的解決方案。
一開始,由于缺乏編程經(jīng)驗,我們很可能連問題到底是什么都搞不清楚。而解決一個 bug 的首要條件是要能夠重現(xiàn)問題,然而編程和其他很多事情都不大一樣,有些 bug 是很難重現(xiàn)的。
所以對于新人來說,一開始遇到問題的時候,只能面向搜索引擎,去看看別人有沒有遇到類似的問題,有沒有解決方案,然后套用一下,看能不能把問題給解決了。
問題解決不了的時候,想問領導,想問大佬,能不能手把手教一教?。?/p>
有一說一,我一開始也是這樣的。但漸漸地,我就會去思考,為什么會出現(xiàn)這個問題,這個問題的底層邏輯是什么,除了這種解決方案,還有沒有其他更好的呢?要不自己再花點時間去研究一下?
當你有了敢一個人去解決問題的膽量后,其實已經(jīng)證明你進步了,因為只有支撐你的基礎扎實了,你才會有這樣的膽量。
最后,總結一下我認為非常重要的東西吧。
熱愛、努力,解決問題的能力,除此之外,你還應該重視基本功:
編程能力:大量地練習、會 debug,追求高質(zhì)量的代碼; 基礎知識:操作系統(tǒng)、計算機網(wǎng)絡、數(shù)據(jù)結構與算法; 抽象思維:現(xiàn)實是物理的,而程序是虛擬的,這個轉(zhuǎn)化的過程,需要極強的抽象思維能力。
好了,今天就聊到這吧。
多說一句,今年的計算機專業(yè)真的特別卷,就連我的二舅家的一個妹妹都要主動報計算機專業(yè),剛剛我二舅給我打電話的時候我都有點小驚呆了!
難道是我因為我這個“榜樣”,潛移默化了弟弟妹妹們?
(不過,我打算把她勸退到醫(yī)護專業(yè)(成績一般),讓大家少一個競爭對手,大家怎么看?)
