想要搞開發(fā)?開發(fā)可不像你想得那樣簡(jiǎn)單。 有一種對(duì)軟件開發(fā)者的偏見是:他們都是無趣的極客,是學(xué)校里的數(shù)學(xué)天才,每天都要在計(jì)算機(jī)屏幕前花費(fèi)多個(gè)小時(shí)去寫代碼。 沒錯(cuò),開發(fā)者確實(shí)會(huì)在計(jì)算機(jī)屏幕前花費(fèi)多個(gè)小時(shí)去寫代碼。但是,每天的工作中還有很多比寫代碼更重要的事情。就我個(gè)人而言,開發(fā)者意味著有機(jī)會(huì)自己做出很酷的東西。 我在大二那年開始自學(xué)前端開發(fā)。剛開始時(shí)我遇到了各種障礙,并一度懷疑自己,但這條路上也到處都是快樂和興奮。我從沒想過我在學(xué)習(xí)過程中能經(jīng)歷什么事情。但有時(shí)候,即使是現(xiàn)在,我依然在考慮我是否選擇了正確的路。但我會(huì)對(duì)自己說,沒有什么是比從事自己熱愛的事業(yè)更快樂的了。 從我寫下第一行代碼到現(xiàn)在已經(jīng)過去大約兩年了。經(jīng)過這許多小時(shí)的練習(xí),曾一度想過放棄,也曾經(jīng)歷過中斷,現(xiàn)在我想跟你們分享一些我的經(jīng)驗(yàn)。 別把編碼當(dāng)成業(yè)余愛好 首先,也是最重要的一點(diǎn):如果你真的想把寫代碼當(dāng)成事業(yè),那這毫無疑問是正確的。我完全同意,人們不會(huì)把時(shí)間花在自己不喜歡的東西上。 但是,作為業(yè)余愛好來寫代碼——也就是說,只是寫代碼而沒有任何目標(biāo)或計(jì)劃——不太可能帶你走向你希望的職業(yè)編程道路。 此外,在遇到障礙和困難時(shí),你會(huì)有足夠的耐心來保持編碼的興趣嗎?還是說可能會(huì)放棄,或者在中途停下腳步? 因此,你必須要專注于自己的熱情。我很肯定所有開發(fā)者都會(huì)編碼和對(duì)技術(shù)有著極大的熱忱。 但是,沒有實(shí)際的執(zhí)行,熱情就毫無用處。制定具體的目標(biāo),再加上合適的計(jì)劃,才能給編程之路設(shè)置里程碑。在某個(gè)時(shí)間范圍內(nèi)設(shè)定一個(gè)宏偉的目標(biāo),設(shè)定每個(gè)階段要學(xué)習(xí)的技術(shù)和技能。這樣,學(xué)習(xí)編程才能成為你生活中的重要部分。 確定希望專注的技術(shù) 一旦開始認(rèn)真寫代碼,下一步就是要對(duì)自己誠實(shí)。你想成為哪種開發(fā)者? 首先從自己最感興趣的部分開始。你想要做用戶界面,控制產(chǎn)品與用戶交互的方式?那么你應(yīng)該著重于前端技術(shù)?;蛘吣闾焐贿m合做設(shè)計(jì),而更喜歡服務(wù)器上的工作?那么應(yīng)該專注于后臺(tái)技術(shù)。 要根據(jù)自己的興趣確定自己想學(xué)什么,這一點(diǎn)非常關(guān)鍵。如果不能確定,可以在Google上搜索,并簡(jiǎn)單嘗試一下。我們都有自己的偏好和技能,那些就是我們最擅長的東西。所以,這個(gè)問題其實(shí)沒你想象的那么難。 從最簡(jiǎn)單的東西開始 剛開始時(shí),你可能會(huì)對(duì)每個(gè)任務(wù)都感到困惑,無論任務(wù)有多難或多簡(jiǎn)單。即使是給項(xiàng)目選一個(gè)合適的文本編輯器,并設(shè)置好環(huán)境,都會(huì)給你帶來許多意料之外的問題。 因此,如果你完全是個(gè)新手,想嘗試第一種語言,我強(qiáng)烈推薦從最簡(jiǎn)單的開始??梢赃x擇那些提供交互式編程環(huán)境的平臺(tái)入手,如Codecademy。 我也是用這種方式開始的。這些平臺(tái)能幫你專注于熟悉編程語言本身,而不用考慮環(huán)境設(shè)置等。當(dāng)然稍后你會(huì)學(xué)習(xí)這些東西,但我一直認(rèn)為,開始寫代碼不僅能讓人興奮,還可以避免讓你過于疲勞。 有什么學(xué)習(xí)資源? 成為軟件開發(fā)者有多種途徑??梢韵刃抟粋€(gè)計(jì)算機(jī)科學(xué)的學(xué)位,參加編程訓(xùn)練營,甚至可以自學(xué)。不論哪種方式,你都需要不斷更新學(xué)習(xí)資料。由于我選擇了最后一種途徑,我可以分享些我找到的學(xué)習(xí)資源。 從交互式編程環(huán)境開始 作為第一步,可以從最容易理解、最容易學(xué)習(xí)的平臺(tái)入手,如Codecademy。這些平臺(tái)提供的環(huán)境可以讓你閱讀學(xué)習(xí)資料,然后利用網(wǎng)頁上自帶的編輯器直接練習(xí)所學(xué)的知識(shí)。結(jié)果也會(huì)在屏幕上立即顯示。只需要免費(fèi)注冊(cè),選擇你想要學(xué)習(xí)的技術(shù),輸入學(xué)習(xí)計(jì)劃,就可以開始學(xué)習(xí)了。 另一個(gè)對(duì)新手十分有用的資源就是freeCodeCamp。它不像Codecademy那樣必須為高級(jí)課程付費(fèi)(盡管這些付費(fèi)課程非常有用),freeCodeCamp提供完全免費(fèi)的課程和學(xué)習(xí)計(jì)劃。他們甚至?xí)谕瓿擅總€(gè)主要課程后給你發(fā)證書。 他們的教程也包括詳細(xì)的學(xué)習(xí)指南、內(nèi)置的文本編輯器和清晰的解釋。此外,還有些項(xiàng)目可以讓你使用學(xué)到的知識(shí)解決各種問題。 選擇正確的學(xué)習(xí)資源 這個(gè)過程其實(shí)很困難,并不是因?yàn)榭尚诺?、詳盡的資源太少。實(shí)際上,好的入門資源太多,很可能會(huì)讓你應(yīng)接不暇。選擇方向很困難,因?yàn)槟悴惶赡茉诿織l路上都花一段時(shí)間。因此,不好的教程不僅會(huì)讓你浪費(fèi)時(shí)間,而且會(huì)讓你喪失繼續(xù)前進(jìn)的熱情。 關(guān)于“我該學(xué)什么”這個(gè)問題,在詢問別人或者詢問Google之前,一定要先問自己!為什么?因?yàn)榫W(wǎng)上有各種各樣的教程——視頻、電子書、教科書,還有在線或面對(duì)面的訓(xùn)練營。只有你自己才能判斷出哪種資源能更有效地幫你學(xué)習(xí)。 就我個(gè)人而言,我喜歡看視頻教程,一邊看一邊跟著寫代碼。因此我選擇了視頻教程作為主要的學(xué)習(xí)方式。但也許你更喜歡閱讀,以便自己控制學(xué)習(xí)速度。那樣你最好選擇比較著名的書。 不幸的是,你也許需要結(jié)合不同的學(xué)習(xí)方法。但是,不論哪種方法你都會(huì)在Medium上花費(fèi)很多時(shí)間,在這里你會(huì)發(fā)現(xiàn)許多最適合你的資源。 這樣,就像你確定學(xué)習(xí)哪種技術(shù)一樣,后退一步,仔細(xì)考慮,選擇最適合自己的學(xué)習(xí)資源。一旦找到合適的資源,就可以開始學(xué)習(xí)了! 下面是我找到的一些學(xué)習(xí)資源: 視頻
MOOC(付費(fèi)在線課程)
書籍
進(jìn)入技術(shù)圈 如上所述,不論你選擇哪種資源,你很可能都要依賴medium上的博客。這就是成為開發(fā)者的最有趣的地方。進(jìn)入技術(shù)圈,就可以“在放松中學(xué)習(xí)”。 想象一下……
這個(gè)故事是否對(duì)你有一點(diǎn)打動(dòng)?如果是的話,那你還等什么?趕快跳進(jìn)技術(shù)圈,進(jìn)入這個(gè)所有人都在開發(fā)技術(shù)應(yīng)用,讓世界變得更美好吧。 練習(xí),練習(xí),再練習(xí) 好,現(xiàn)在你大概知道從哪里開始了,那么最好是現(xiàn)在就開始。但是,熟悉一項(xiàng)技術(shù)需要很多時(shí)間。想要精通,則需要大量的工作。不付出汗水和淚水,就不可能填補(bǔ)新手和有經(jīng)驗(yàn)的開發(fā)者之間的空白。 換句話說,要想熟練掌握一門編程語言,就要付出許多個(gè)小時(shí)甚至多年的練習(xí)。那么該怎樣做呢?
如果你感到累了,就休息下到處轉(zhuǎn)轉(zhuǎn),看看論壇和各個(gè)平臺(tái)上的技術(shù)領(lǐng)袖們和經(jīng)驗(yàn)豐富的開發(fā)者們分享的技術(shù)新聞?;旧弦屪约荷硖幖夹g(shù)圈中。 記住,這是朝著成功階梯邁出的重要的一步。你付出的努力越多,你的自信和熱情就會(huì)越高。只需要記住,這件事沒有結(jié)晶。沒有任何語言或庫能夠幫你一夜成功。不斷嘗試,從失敗中學(xué)習(xí),積極努力,遵循計(jì)劃,相信自己。 也許美夢(mèng)成真的時(shí)刻就在前面!
作者:Vinh Le,前端開發(fā) |
|