哈嘍,大家好,我是月亮。一個工作n年的老程序員啦,平時在公號上給大家分享一些心得體會/有趣的工具,每周更新~
今天月亮想和大家聊一下,我是怎么從一個什么都不會的計算機專業(yè)的小白,成功入門軟件開發(fā)的。
普遍現(xiàn)象
很多計算機專業(yè)的學生,畢業(yè)前夕會面臨的一個尷尬情況就是:快要畢業(yè)了,才猛然醒悟,自己貌似啥也不會。
起初月亮以為是自己大學太差的原因,才導致自己和大學同學有這樣的困惑,但后來參加工作,遇到了來自五湖四海的同事,其中絕大多數(shù)人,他們的學校都比月亮就讀的學校更好。
他們中的大部分人,剛畢業(yè)時居然都有同樣的感受,自己似乎什么都不會...
如果你現(xiàn)在、或者曾經(jīng)也有同樣的困惑。那么不要著急,大部分普通學校的計算機學生剛畢業(yè)時能力都非常有限,大家都是一樣的。
而月亮稍微幸運一點,在畢業(yè)時稍微感覺自己還是學到了一些東西,起碼能夠勝任一些基礎的開發(fā)工作。雖然當時能力也不強,但是我相信自己一定能找到一份軟件開發(fā)的工作。
那么我是怎么學會軟件開發(fā)的呢?
復盤下來,我認為自己做對了3件事情。
學會從網(wǎng)上找教程
在我的編程學習之路上,可以說學校的課程幾乎沒有對我產(chǎn)生任何的幫助,全是靠自學的。
甚至學校的課程,對我學習編程造成一些心理障礙,我甚至都懷疑自己究竟適合做軟件這行嗎?我怎么聽不懂老師講課呢?
我們是從大一下學期開始學習編程的,從C語言開始學,然后是Java,一年的課程下來,我只會照著教科書抄兩段循環(huán)語句,能夠運行成功、不報錯,就謝天謝地了。
當時我很疑惑,就憑學校教的這些內容,我們出去能找到相關的工作嗎?一年學下來,我連這兩門語言到底能做什么都不知道,我不知道Java可以做網(wǎng)站開發(fā)、Android開發(fā),不知道學C可以做嵌入式...
就這樣,學習一年之后我們開了Android開發(fā)課程,可我連Java基礎都沒有學明白,這些課程自然也學不懂了。
當時我很擔心,照這種情況發(fā)展下去,到期末肯定只有掛科了,搞不好最后連畢業(yè)證都拿不到。
我想,這樣肯定不行,就算畢業(yè)不能找到軟件開發(fā)的工作,起碼畢業(yè)證我得拿到,否則大學幾年的時間就真的是完全浪費了。
抱著死馬當活馬醫(yī)的心態(tài),我想,現(xiàn)在網(wǎng)絡這么發(fā)達,網(wǎng)上會不會有軟件開發(fā)的相關教程呢?
我就拿著手機搜:Android開發(fā)學習軟件。
當時也不太會用搜索引擎,隨便胡亂搜索了一通,從結果來看,還是很幸運。
沒花多少時間,就找到了一款App,里面只有三套視頻教程,一套叫做java4Android,另兩分別叫做Android開發(fā)教程、Android開發(fā)(第二版)(Android的兩套大概是這個名稱,記不太清楚了)。
這幾套教程給我的大學生涯帶來了轉機,讓我知道了可以使用搜索引擎來找教程,找到那些自己當前的學習能力能夠消化的教程。
java4Android這套教程,現(xiàn)在我都保存在我的電腦上,這是一套非常適合Java入門學習的教程,雖然講師一再強調,這一套教程是為了Android入門錄制的,不適合Java web開發(fā)者學習。
但是在我看來,只要是Java入門,都可以學習這套教程,教程的特點就是:深入淺出,我這樣的小白都能聽懂。
這套教程給我?guī)砹诵判模布m正了我的一些錯誤想法:
- 原來我是能夠學會編程的!之前一直學不會,完全是老師的教學方法有問題,畢竟全班30多號人,能學會的只有倆,這問題就完全出在老師身上了。
我甚至覺得,讓學習一學期的我去帶新手入門,都一定能做得比學校的老師更好,多年以后我仍然深信這一點。
- 學習Android開發(fā),不會C也沒關系,只要會Java基礎,就能快速上手。
就這樣,我無意中在正確的道路上踏出了第一步:
學會自己找教程。
拆解目標,持續(xù)拿到正反饋
上面的課程十分簡單易學,但是對于在學校廢柴了幾年的學生來講,已經(jīng)沒有足夠的自制力讓自己專心學習了。
而且當時我記得自己很多時候都很焦慮,焦慮期末掛科、焦慮畢業(yè)證、焦慮畢業(yè)后的工作...
雖然當時才大二,但是我已經(jīng)開始為自己畢業(yè)的工作發(fā)愁了。
有了能學懂的教程,但是我不保證自己能持續(xù)地堅持學習呀,這可咋辦?
好在才大二,我還有很多時間,所以當時我選擇不要逼自己太緊,每天完成一點學習任務就行。
我給自己定的目標是,每天只學習30分鐘,時間一到就可以休息了,不要有太多的壓力。
現(xiàn)在來看,當時的策略很正確,如果我當時采用每天學習2、3個小時的策略,有極大的可能,我會堅持不下去,半路就選擇放棄了。
在2、3個小時里,接收大量的陌生概念,一般人很難消化,尤其是長期不學習的人。
即便是每天30分鐘,我還是感覺到了困難,因為學習編程,單單只是看是不行的。學習了一兩周,我就發(fā)現(xiàn),好像前面的內容我已經(jīng)忘記了...
忘了咋辦?我只能用最笨的辦法,再回過頭去再看一遍,第二遍再看的時候,就非常輕松了。
在這個過程中,我慢慢地就找到了信心。
“哈哈,也沒想象中的那么難嘛,我當時咋會聽不懂呢?”
“真是太簡單了?!?
就這樣,我給自己定下了能夠完成的目標,并且持續(xù)去做,甚至周末我還允許自己休息,可以不用學習。
無意中,我做對了第二步:
把目標拆解到足夠小,讓自己能夠持續(xù)地完成目標,在這個過程中持續(xù)地獲得成就感,正反饋就形成了。
大量練習非常重要
現(xiàn)在,我還差一個關鍵的步驟沒有完成,當我完成這一步的時候,我開始廢寢忘食地學習編程了,每天想的都是學習更多的內容,豐富自己的知識儲備。
學習編程,不只是要上課,更重要的是進行大量的練習,只有你自己寫得多了,才能慢慢理解到:面對一個新的需求,代碼應該怎么寫。
當時每次課堂最后,都留有簡單的練習題,讓學習者進行鞏固,我自然也跟著去完成了。
我記得,在學習一兩個月之后,課程來到了IO流(文件操作)的階段,學完之后,演示了一個文件復制的例子。
具體操作為:執(zhí)行main函數(shù),調用一小段自己寫的代碼,把一個txt文件給復制一份。
文件操作,對我來說是一個全新的概念,我當時只能照著屏幕,把代碼給敲到編輯器里,然后就執(zhí)行成功了,我記得自己操作成功時還小小的興奮了一下。
“看,編程有什么難的,不就這樣嘛~”
當時自己寫一遍,只是為了完成任務,我已經(jīng)完成了。
但是,腦子里突然冒出了一個念頭:我能不能做到不抄代碼,憑記憶自己給寫出來!
我想,大概需要多重復幾遍,也許能做到... ...
于是,我又給自己定了一個小目標:每天把這段代碼抄一遍。
事實上只過了三天,我就能把這段代碼背著寫出來了,為了能盡快完成這個小目標,我每天大概抄兩三遍,加上就只有一小段,很快就完成了。
這件事帶給了我很大的成就感,即便已經(jīng)過去很多年,但是我依然記得當時自己很興奮!
我在這個階段學到的東西是:
想要真正掌握編程技能,必須要大量地練習,寫得多了,自然就知道應該怎么寫了。
從那之后,學習編程對我來講,已經(jīng)完全不是問題了,我開始投入更多時間去主動學習,總算不再覺得自己什么都不會,并且開始確定了自己以后的就業(yè)方向:就干軟件開發(fā)了!
并且也相信自己肯定能做到!雖然底子差,但還有很多時間可以去學習!
月亮想說
上面這一段經(jīng)歷,對月亮來說非常寶貴,這可以說是我人生的一個轉折點。
以前我從來不知道應該怎么自學,但是你瞧,在上面這段經(jīng)歷里,月亮不就已經(jīng)學會自學了嗎?
雖然我也是后來才意識到,原來從那個時候開始,我就已經(jīng)開始摸索著進行自學了呀。
自學,是我大學時期最大的收獲,當你掌握自學之后,學習什么技能都沒有問題的。
希望月亮今天的分享,能夠給大家?guī)硪恍﹩l(fā),咱們下期再見呀~
關于讀者群
了不起的程序員讀者群開放啦!?。?
歡迎各位讀者進群,群內以聊天學習摸魚為主,不定期分享好玩有趣的優(yōu)秀工具。
進群方式:公眾號后臺回復進群,按提示操作即可進群。
各位了不起的老鐵們,最近公眾號改版了,大家記得星標了不起的程序員,第一時間收到原創(chuàng)優(yōu)質推薦哦