編程本來并不難,但是你沒有基礎(chǔ),缺乏計(jì)算機(jī)基礎(chǔ)知識(shí),那就非常困難,難于上青天。作為自學(xué)黨,不知道一開始要學(xué)些什么,學(xué)到什么程序,學(xué)到后能找到工作嗎,工作后用到的跟學(xué)的一樣嗎?而其中只要有一個(gè)問題困擾了你,那你就很容易半途而廢。
1.自學(xué)編程選擇語言
編程行業(yè)是有分工的:有做前端網(wǎng)頁的,有做移動(dòng)端ios的、安卓的,有做后臺(tái)的。做網(wǎng)頁的,有用jq+原生js的,有用vue.js,有用react的;做安卓的,又可以分做底層嵌入式驅(qū)動(dòng)的,做系統(tǒng)框架的,做應(yīng)用的。做后臺(tái)的,又分為很多框架,技術(shù)棧和語言不同,java ,.net,python等等各領(lǐng)風(fēng)騷。選擇一個(gè)好的方向,難!因?yàn)槊總€(gè)分工沒有優(yōu)劣之分。也許你只是想混口飯吃,不在乎做哪方面。我的想法是,興趣是比較好的老師,用它來告訴你。
2.打好基礎(chǔ)難
在學(xué)習(xí)上面知識(shí)之前,你還得先打下基礎(chǔ),畢竟沒有不會(huì)走路的嬰兒能夠跑步的。要學(xué)的基礎(chǔ)很多,包含計(jì)算機(jī)的組成,網(wǎng)絡(luò)通信協(xié)議,數(shù)據(jù)結(jié)構(gòu)等等?;A(chǔ)就像地基,不穩(wěn)固的話,你的代碼就會(huì)搖擺不穩(wěn),隨時(shí)有崩塌的危險(xiǎn)?;A(chǔ)的學(xué)習(xí),涉及到的概念會(huì)比較多。就如一開始的二進(jìn)制知識(shí)源碼,補(bǔ)碼,反碼,就常常令人發(fā)瘋?;A(chǔ)的學(xué)習(xí),可能就得花去你兩三個(gè)月的時(shí)間,還是在你有毅力堅(jiān)持的情況下。
3.難找到編程實(shí)戰(zhàn)項(xiàng)目
你按照教程的步驟一步步操作,發(fā)現(xiàn)怎么一開始搭個(gè)環(huán)境都不行,這個(gè)版本怎么跟我的不一樣這么舊。好不容易環(huán)境沒問題了,怎么我的代碼就是運(yùn)行不起來,明明看起來跟書本是一樣的。錯(cuò)誤千萬條,條條通向bug。自學(xué)的人往往身邊沒人合適的可以請(qǐng)教的人,教程一般來說都會(huì)相應(yīng)落后,實(shí)踐的例子大多是demo樣例級(jí)別,跟工作中用的東西差別很大。這三個(gè)搞在一起,想死的心都有了。你會(huì)發(fā)現(xiàn)學(xué)習(xí)了大半年,項(xiàng)目經(jīng)驗(yàn)卻基本為零。
自學(xué)編程,遇到的問題基本上都是自己摸索解決的,有些東西可能也暫時(shí)無法解決。由于沒有實(shí)際的工作經(jīng)驗(yàn),沒有處理和積累過工作中會(huì)遇到的各種突發(fā)問題,沒有參與大型的高復(fù)雜度的軟件設(shè)計(jì),缺乏跟同事們的技術(shù)交流,技術(shù)會(huì)達(dá)到瓶頸,也很難養(yǎng)成良好的編程規(guī)范。