我相信每個(gè)程序員都具備自學(xué)的能力,因?yàn)槿绻麤]有自身的努力,我們不會(huì)成為一名優(yōu)秀的程序員。
故事背景:
2016年,我被計(jì)算機(jī)科學(xué)專業(yè)錄取。計(jì)算機(jī)科學(xué)家需要研究如何使用計(jì)算機(jī)解決廣泛?jiǎn)栴}及其應(yīng)用數(shù)學(xué),但我不太擅長(zhǎng)數(shù)學(xué),此外也不太了解計(jì)算機(jī)科學(xué)專業(yè)究竟是什么,一直以為這大概是關(guān)于如何操作計(jì)算機(jī)的方法——我甚至沒有想過(guò)去 google 一下。
但是作為一個(gè)初學(xué)者,我發(fā)現(xiàn)學(xué)習(xí)編程的過(guò)程并不簡(jiǎn)單輕松。我不知道如何去開始,在好不容易掌握基礎(chǔ)之后又不知道如何去進(jìn)階。老實(shí)說(shuō),一開始我并不知道何謂編程,直到我用 Visual Studio 上的 VB.net 編寫并運(yùn)行了我的第一個(gè)程序 “Hello World”。在學(xué)習(xí)計(jì)算機(jī)科學(xué)的第二年,我用 C++ 編寫并運(yùn)行了另一個(gè)項(xiàng)目。第三年,我用 HTML 和 CSS 編寫搭建了一個(gè)簡(jiǎn)單的個(gè)人博客。
我什么都不懂,只知道自己想開發(fā)可以在手機(jī)或網(wǎng)頁(yè)上使用查看的 APP。我最初的幾個(gè)月耗費(fèi)在了毫無(wú)頭緒的雜亂學(xué)習(xí)上。從網(wǎng)絡(luò)編程到 A + 到 Java 再到 Scratch、Python 甚至圖形編程、HTML、CSS 和數(shù)字營(yíng)銷,各種不同方向的信息向我涌來(lái)。幾個(gè)月下來(lái),我依舊毫無(wú)頭緒,夢(mèng)想之路似乎也毫無(wú)進(jìn)展,對(duì)此,我感到十分沮喪。我聽取他人建議,明白了心急吃不了熱豆腐,決定一步一個(gè)腳印,慢慢來(lái)。
真正的問(wèn)題是,我沒有找到我愿意花時(shí)間和精力在上面,而不是將其標(biāo)記為“工作”的東西。最后,我在 Java 上找到了我的成功之路。我決定將精力集中在研究我打算用一生去做的事情:編程。
我告訴自己要專心并開始編寫代碼,我需要:
- 一、從第一個(gè)步開始,直到我學(xué)到足夠的知識(shí)后,才邁下一步
- 二、想明白我想要怎樣去學(xué)習(xí)編碼。例如,我最終想獲得什么樣的技能?我為什么想學(xué)習(xí)編碼?我可以為此花多少時(shí)間和金錢?
- 三、選擇正確的、適合我的語(yǔ)言。選取合適的資源以幫助我學(xué)習(xí)(例如線上的編程課程、教材、各種平臺(tái)上的視頻文檔等)
- 四、下載對(duì)應(yīng)語(yǔ)言的編程軟件
五、練習(xí)編寫程序
六、加入一個(gè)線上的學(xué)習(xí)社區(qū)或社群。
七、不要停止學(xué)習(xí)
當(dāng)我明確這些需求之后,我明白了我要去往何處,以及接下來(lái)我該怎么做。
這是你可以從我的故事中學(xué)到的第一點(diǎn):
始終關(guān)注你的實(shí)際夢(mèng)想或目標(biāo),以及你真正想要的是什么——而不是你認(rèn)為可能使你成為自己的目標(biāo)的東西。你可能不知道如何實(shí)現(xiàn)自己的目標(biāo),但你可以使用互聯(lián)網(wǎng),并對(duì)你的目標(biāo)進(jìn)行思考,就可以做到。
我為什么選擇Java?
我因?yàn)橹浪梢詭臀覍?shí)現(xiàn)成為移動(dòng)應(yīng)用程序開發(fā)人員的夢(mèng)想,而愛上 Java。我發(fā)現(xiàn),當(dāng)我熟練掌握 Java 之后,學(xué)習(xí)任何其他語(yǔ)言對(duì)我來(lái)說(shuō),也很輕松。Java 的課程不僅僅是教 Java,也教編程概念。Java 的應(yīng)用很廣泛,后端開發(fā)、大數(shù)據(jù)、Android 開發(fā)等。
就像 Code Institute 的這篇文章所說(shuō):
“Java 使開發(fā)人員能夠:
- 在一個(gè)平臺(tái)上編寫出的軟件,幾乎可以在任意一個(gè)其他平臺(tái)上運(yùn)行。
- 創(chuàng)建可以在 Web 瀏覽器運(yùn)行并訪問(wèn)可用 Web 服務(wù)的程序。
- 開發(fā)用于在線論壇,商店,民意調(diào)查,HTML 表單處理等的服務(wù)器端應(yīng)用程序。
- 用 Java 語(yǔ)言組合應(yīng)用程序或服務(wù),以創(chuàng)建高度定制的應(yīng)用程序或服務(wù)。
- 為移動(dòng)電話,遠(yuǎn)程處理器,微控制器,無(wú)線模塊,傳感器,網(wǎng)關(guān),消費(fèi)產(chǎn)品以及幾乎任何其他電子設(shè)備編寫功能強(qiáng)大且高效的應(yīng)用程序。
從筆記本電腦到數(shù)據(jù)中心,從游戲機(jī)到科學(xué)超級(jí)計(jì)算機(jī),從手機(jī)到互聯(lián)網(wǎng),Java 無(wú)處不在?!?/strong>
是的,Java 無(wú)處不在。它可以在臺(tái)式機(jī)、企業(yè)臺(tái)式機(jī)、電視設(shè)備、手機(jī)等多種設(shè)備上運(yùn)行。
我還記得我實(shí)習(xí)時(shí)的第一堂計(jì)算機(jī)編程課,甚至大學(xué)的也還記得,那天老師給我們布置了幾道關(guān)于 Java 的簡(jiǎn)單基礎(chǔ)題。
問(wèn)題1:什么是 println,printf 和 print?
問(wèn)題2:如何存儲(chǔ)變量?
問(wèn)題3:什么是 Java?
我班有一半的人都有 IT 背景。因此,他們輕松編寫出了答案,而另一半人(包括我在內(nèi))卻大腦一片空白。我對(duì)班上發(fā)生的事情一無(wú)所知。
我收集了許多資料,許多關(guān)于 尚學(xué)堂免費(fèi)的Java 編程視頻,同時(shí)報(bào)名尚學(xué)堂的架構(gòu)師課程,并花了好些天的時(shí)間額外學(xué)習(xí)基礎(chǔ)知識(shí)。好不夸張的說(shuō),這并不容易。以前的我從未了解過(guò)這些,這是我那個(gè)階段必須做的。我的同學(xué)比我有優(yōu)勢(shì),我還有很長(zhǎng)的路要走,事實(shí)上,同學(xué)的優(yōu)勢(shì)也成為了我加倍努力學(xué)習(xí)的動(dòng)力。
整個(gè)學(xué)習(xí)過(guò)程中,我不斷遇到使我沮喪和煩惱的錯(cuò)誤,我只能盡可能地保持鎮(zhèn)定、專注、努力,始終如一。我建議每個(gè)人都盡早選擇自己的道路和目標(biāo),并專注于它,因?yàn)槟阋欢〞?huì)以某種方式到達(dá)那里——即使不是馬上。
“你必須從別人的錯(cuò)誤中學(xué)習(xí)。你的有生之年不可能有足夠長(zhǎng)的時(shí)間使自己成為所有人。”——山姆·萊文森
我的痛苦來(lái)源于我犯的錯(cuò)誤:懷疑自己、缺乏自信、拖延、易放棄、膽小。這些錯(cuò)誤,可以讓人反思和自省——無(wú)論是我們自己還是他人,這也是為什么我決定分享故事的原因。
編程如何改變了我的生活
編程使我相信我可以解決問(wèn)題、處理錯(cuò)誤,它給了我人生目標(biāo)。有時(shí),遺漏了一個(gè)簡(jiǎn)單的語(yǔ)法錯(cuò)誤會(huì)讓我感到沮喪,同時(shí),每一次的進(jìn)步都會(huì)讓我欣喜。
所有語(yǔ)句都變?yōu)椴紶栔怠?True or False。我的計(jì)數(shù)從零開始,而不是一。
現(xiàn)在的我才知道,訓(xùn)練計(jì)算機(jī)以執(zhí)行特定任務(wù)比訓(xùn)練人類要難。
我花了幾個(gè)月的時(shí)間找到自己的道路,作為一名開發(fā)人員,我慢慢接受自己的錯(cuò)誤和恐懼,開始享受這種自在,并開發(fā)了一個(gè)小型桌面 APP。
展望未來(lái),我渴望學(xué)習(xí)更多,成為一名優(yōu)秀程序員,并在不久后以程序員的身份擁有我的第一份有薪工作。