想了解新手學(xué)習(xí)it嗎?想了解寫(xiě)給IT自學(xué)者的入門指南?? 嗎?......本文帶你一探究竟。
1.寫(xiě)給IT自學(xué)者的入門指南
在IT工程師和培訓(xùn)機(jī)構(gòu)多如牛毛的時(shí)代,拜師學(xué)藝并不難。但自學(xué)編程對(duì)于毫無(wú)基礎(chǔ)的同學(xué)來(lái)說(shuō)卻可能是個(gè)問(wèn)題,相信有過(guò)類似經(jīng)歷的朋友都有一把辛酸淚和一肚不吐不快的體會(huì)。讓我們從一個(gè)故事說(shuō)起... 故事 某君在一個(gè)普通*讀著自己不喜歡的專業(yè),以打游戲、刷段子和睡覺(jué)度日,突然有一天想學(xué)點(diǎn)什么。學(xué)編程好像挺酷,而且聽(tīng)說(shuō)IT行業(yè)充滿了機(jī)會(huì),沒(méi)準(zhǔn)一不小心就和大佬一起“改變世界”了。 那么*個(gè)問(wèn)題來(lái)了,他該選擇什么語(yǔ)言? 是世界上*的語(yǔ)言PHP?還是語(yǔ)言之母的C?幸好還知道個(gè)編程語(yǔ)言排行榜,找到一看、幾十種不帶重樣,這要逼死天秤座的小朋友。選PHP吧?上非誠(chéng)勿擾都要被滅燈,而且就只能做個(gè)網(wǎng)頁(yè)。萬(wàn)般糾結(jié)之后我們選C吧,聽(tīng)起來(lái)既高級(jí)又底層,說(shuō)不準(zhǔn)還能考個(gè)計(jì)算機(jī)二級(jí)。 接下來(lái)得干正事兒了。在這個(gè)便捷的網(wǎng)絡(luò)時(shí)代,自學(xué)可選擇的方式非常豐富。除了在網(wǎng)絡(luò)上收集資料、閱讀干貨外,某君還向一些前輩咨詢了自學(xué)的方法。 網(wǎng)絡(luò)上流傳的編程學(xué)習(xí)方式有: 看書(shū)(這是最容易想到的方法)觀看視頻教程閱讀官網(wǎng)文檔讀源碼到*蹭課或者報(bào)名培訓(xùn)(不知道還算不算自學(xué),沒(méi)交學(xué)費(fèi)都算吧?) 某君又得糾結(jié)一番了,*蹭課和培訓(xùn)并不一定有合適條件,且不符合自學(xué)的氣質(zhì);觀看視頻教程,前輩們覺(jué)得比較low;閱讀官網(wǎng)文檔和源碼,這不適合初學(xué)者??偟脕?lái)說(shuō)看書(shū)算是比較中肯的方法,至于看什么書(shū)呢,前輩推薦了《C Primer Plus》,據(jù)說(shuō)是學(xué)習(xí)C語(yǔ)言的經(jīng)典之作。 好吧,不再糾結(jié),直接啃這本大部頭,雖然有人說(shuō)看原版好一些,但是實(shí)在能力有限、還是看中文版吧。一口氣花了一周時(shí)間讀完這本書(shū),果然是經(jīng)典,變量、語(yǔ)句、條件判斷甚至指針都知道怎么回事了。 某君決定按照書(shū)中的說(shuō)法實(shí)踐一下了,于是打開(kāi)了記事本,折騰很久裝了GCC,把書(shū)上的*個(gè)例子抄了下來(lái),在控制臺(tái)的小黑窗輸出了“Hello World”,成就感滿滿。決定上手寫(xiě)點(diǎn)高級(jí)的的東西一試身手,合上書(shū)。咦,為什么會(huì)報(bào)錯(cuò)?哦,原來(lái)少個(gè)分號(hào)。不禁陷入思考:為什么學(xué)了兩個(gè)月還是只能在這個(gè)黑窗口算算秋水仙數(shù)?網(wǎng)友還說(shuō)要看官網(wǎng)文檔、要讀源碼、要看英文原版,我一樣都不能做到,我一定是能力不夠,編程果然是天才做的事情…… 正經(jīng)話 上面的故事是我編的,但其中的糾結(jié)卻是自學(xué)者或多或少都經(jīng)歷過(guò)的。實(shí)際上,IT從業(yè)者并不像傳說(shuō)中那樣需要天才般的智商,要點(diǎn)在于能否找到合適的入門途徑,再加上一點(diǎn)點(diǎn)堅(jiān)持和思考。比較可惜的情況是一些人沒(méi)能找到適合自己的學(xué)習(xí)方法,并在糾結(jié)和碰壁后失去信心,然后沮喪的認(rèn)定自己并不適合干這行。學(xué)編程很多時(shí)候就是一個(gè)趟坑的過(guò)程,但不是每一個(gè)坑都有必要趟,寫(xiě)這篇文章的目的是希望能夠幫助初學(xué)者盡量少趟一些坑。 IT世界的地圖 初學(xué)者遇到的一個(gè)典型問(wèn)題是對(duì)IT世界沒(méi)有一個(gè)大的圖景。比如大多數(shù)的Java書(shū)籍,教完你基礎(chǔ)語(yǔ)法知識(shí)和秋水仙數(shù)的求法后就結(jié)束了,并沒(méi)告訴你接下來(lái)能干什么。我曾經(jīng)為此感到非常困惑,學(xué)完Java SE后做了一個(gè)非常簡(jiǎn)陋的GUI demo,就失去了后續(xù)的Java學(xué)習(xí)方向,帶著對(duì)Java的偏見(jiàn),這成為了我一段令人沮喪的學(xué)習(xí)經(jīng)歷。關(guān)于這個(gè)話題一本書(shū)可能都不夠,簡(jiǎn)單來(lái)說(shuō),我嘗試從計(jì)算機(jī)科學(xué)知識(shí)和技術(shù)實(shí)踐兩方面來(lái)聊聊成為一名IT工程師需要具備哪些東西。 計(jì)算機(jī)科學(xué)基礎(chǔ) 首先初學(xué)者要具備一些非常基礎(chǔ)的知識(shí),這些知識(shí)在你踏上工作崗位后能被實(shí)際的用到,比如計(jì)算機(jī)運(yùn)行原理、網(wǎng)絡(luò)的傳輸、常用數(shù)據(jù)結(jié)構(gòu)和算法等。這部分屬于計(jì)算機(jī)科學(xué),也是應(yīng)該被計(jì)算機(jī)專業(yè)本科課程涵蓋的,不要傷心錯(cuò)過(guò)了*本科的相關(guān)課程,我會(huì)分享一些有用的資源。 這里我羅列了一些計(jì)算機(jī)專業(yè)的學(xué)生一般需要學(xué)習(xí)的課程,當(dāng)然每個(gè)學(xué)校專業(yè)設(shè)計(jì)都不一樣,甚至采用的教材名字也不一樣,僅供參考。*計(jì)算機(jī)科學(xué)課程往往包括:《高等數(shù)學(xué)》、《離線數(shù)學(xué)》、《電子電路》、《數(shù)據(jù)結(jié)構(gòu)》、《程序設(shè)計(jì)》、《計(jì)算機(jī)組成原理》、《編譯原理》、《計(jì)算機(jī)網(wǎng)絡(luò)》、《軟件工程》、《數(shù)據(jù)庫(kù)原理》等。有些學(xué)校會(huì)有一些額外的課程,例如《通信原理》、《匯編語(yǔ)言》、《線性代數(shù)》、《C語(yǔ)言》、《Java 語(yǔ)言》等。 圖片來(lái)源于:網(wǎng)易計(jì)算機(jī)專業(yè)的課程體系 盡管IT行業(yè)知識(shí)更迭非常快,但是基礎(chǔ)知識(shí)并不容易過(guò)時(shí),因此有大量的資料可以選擇??梢赃x擇從計(jì)算機(jī)經(jīng)典叢書(shū)系列開(kāi)始,比如佛羅贊和莫沙拉夫的《計(jì)算機(jī)科學(xué)導(dǎo)論》,甚至可以閱讀一些計(jì)算機(jī)科普類讀物例如《穿越計(jì)算機(jī)的迷霧》。另一種直觀的方式是觀看*精品課和去跟慕課課程,比較推薦的有幾個(gè): **精品開(kāi)放課程,高等教育出版社的精品課程項(xiàng)目,有*大量的名校授課視頻和課件**MOOC ,這個(gè)是**MOOC和網(wǎng)易合作的,提供了上文附圖中計(jì)算機(jī)課程體系中所有課程果殼網(wǎng)的MOOC,主打翻譯全球名校的優(yōu)秀課程,比如斯坦福的《編譯原理》和MIT的《Python》 從知識(shí)到實(shí)踐 除此之外,還需要了解實(shí)際應(yīng)用于設(shè)計(jì)軟件或者開(kāi)發(fā)網(wǎng)站中的實(shí)踐類知識(shí),包括某個(gè)特定語(yǔ)言以及周邊的庫(kù)、框架和工具等。 我們可以把特定需求中用到的語(yǔ)言、庫(kù)和框架以及其他的工具稱為技術(shù)棧,在技術(shù)選型上通常也是被這樣考慮的,HR常常會(huì)根據(jù)技術(shù)棧來(lái)尋找需要的工程師。比如需要學(xué)習(xí)SSH 三大框架和Java的Java技術(shù)棧;為服務(wù)器web開(kāi)發(fā)而生的PHP技術(shù)棧;在移動(dòng)開(kāi)發(fā)領(lǐng)域流行的IOS、安卓技術(shù)棧等。當(dāng)然這里面有一些重合和共用的技術(shù)也需要學(xué)習(xí),比如版本管理器Git、SVN就是每個(gè)合格的工程師需要去學(xué)習(xí)的。 換句話說(shuō),*課程主要定位在上面說(shuō)到的計(jì)算機(jī)科學(xué)基礎(chǔ)知識(shí),而市面上的培訓(xùn)機(jī)構(gòu)主要是告訴你在怎么在實(shí)際工作中運(yùn)用,所以*和培訓(xùn)機(jī)構(gòu)都有他們的價(jià)值。 想要更加詳細(xì)的了解這部分內(nèi)容,這里有一些開(kāi)源的技能圖譜可以參考: 圖片來(lái)自: STUQ如何挑選你的兵器? 在介紹完計(jì)算機(jī)領(lǐng)域的大致圖景后,就需要選擇一門合適的編程語(yǔ)言,一個(gè)較為形象的例子是把編程語(yǔ)言比喻成兵器,因?yàn)槲覀兩钪幊陶Z(yǔ)言對(duì)于工程師而言是實(shí)實(shí)在在的工具,我們不是為了學(xué)它而學(xué),學(xué)編程不僅僅是學(xué)語(yǔ)言特性,一般來(lái)說(shuō)我們也不用知道賦值語(yǔ)句像“茴香豆蔻”的“茴”字有四種寫(xiě)法。 當(dāng)然語(yǔ)言之爭(zhēng)從來(lái)沒(méi)有停止過(guò),如果把編程語(yǔ)言比喻江湖武器的話十分有趣。 C語(yǔ)言是M1式加蘭德步槍,很老但可靠。 C++是雙截棍,揮舞起來(lái)很強(qiáng)悍,很吸引人,但需要多年的磨練來(lái)掌握,很多人希望改用別的武器。 Perl語(yǔ)言是燃燒彈,曾經(jīng)在戰(zhàn)場(chǎng)上很有用,但現(xiàn)在很少人使用它。 Java是M240通用彈夾式自動(dòng)機(jī)槍,有時(shí)它的彈夾是圓的,但有時(shí)候不是,如果不是,當(dāng)你開(kāi)火時(shí),會(huì)遇到問(wèn)題,槍會(huì)爆炸,你就會(huì)被炸死。 _是一把寶劍,但沒(méi)有劍柄。 _ -- 來(lái)自網(wǎng)絡(luò) 老實(shí)來(lái)講IT行業(yè)的最終目的是交付可用的軟件,編程語(yǔ)言也是適應(yīng)市場(chǎng)的。這對(duì)于初學(xué)者或許有些殘酷,在工作中我們發(fā)現(xiàn)*的語(yǔ)言是用來(lái)處理工作任務(wù)或者構(gòu)建合適的應(yīng)用,并不是出于愛(ài)好或者某種Geek精神。 對(duì)于初學(xué)者而言,在選擇合適的入門語(yǔ)言時(shí)至少需要考慮兩點(diǎn): 是否能適用于構(gòu)建你想要的應(yīng)用。如果你的目標(biāo)是創(chuàng)建一個(gè)運(yùn)行在IPhone上的APP,那么*選擇 Object C 或者 Swift,學(xué)習(xí)web開(kāi)發(fā)可以選擇PHP 或者JAVA。實(shí)際上我們?nèi)匀豢梢杂脜R編做出網(wǎng)頁(yè),但是這樣做成本高昂。是否容易學(xué)習(xí),在滿足*點(diǎn)的條件下請(qǐng)盡量選擇容易學(xué)習(xí)的語(yǔ)言。容易不僅僅指語(yǔ)法簡(jiǎn)單,包括環(huán)境搭建、部署等都需要考慮在內(nèi),以及能不能容易找到好的學(xué)習(xí)資料,因此盡可能的選擇主流語(yǔ)言。 別忘了非常重要的一點(diǎn),學(xué)習(xí)編程語(yǔ)言還包括平臺(tái)提供的API,比如Win 32 之于C++/C#/VB,以及周邊的庫(kù)和框架(這些庫(kù)、框架和工具能在上面說(shuō)的技術(shù)圖譜中找到)。IT歷史上甚至出現(xiàn)框架和庫(kù)引領(lǐng)編程語(yǔ)言走向的情況:JQuery 和Angular 改變了前端開(kāi)發(fā)的思想; Rails 搶走了Ruby的名氣;而SSH三大框架一度代表了Java世界。 *我為初學(xué)者整理了一個(gè)流行編程語(yǔ)言和用途的表: 另外還需要注意的是開(kāi)發(fā)工具,可以選用IDE和有代碼提示的編輯器,但盡量不要在這上喋喋不休,這就像用來(lái)盛放你鋒利兵器的架子,用著順手就行,也不推薦使用純文本編輯器,這看起來(lái)像赤手空拳。 推薦一些編輯器和IDE 挑選合適的資料和有效的閱讀 對(duì)初學(xué)者而言,我仍然推薦好的視頻教程,雖然我已經(jīng)聽(tīng)到不下5個(gè)人聲稱是靠閱讀官方文檔或者看源碼學(xué)會(huì)編程的,而且認(rèn)為觀看視頻教程見(jiàn)效太慢。但這個(gè)思想對(duì)初學(xué)者很危險(xiǎn),不得不承認(rèn)閱讀文檔和源碼能更準(zhǔn)確找到自己想要的信息,這對(duì)深入技術(shù)原理非常有用,但視頻能比文字傳達(dá)出更豐富的內(nèi)容,有更直觀的演示和細(xì)致的講解,我想沒(méi)有比這個(gè)更適合初學(xué)者了。 現(xiàn)在很多地方都可以看到視頻教程 如果選擇了閱讀技術(shù)類書(shū)籍,我們來(lái)聊聊怎么有效的閱讀一本技術(shù)書(shū)籍。 讀IT類書(shū)籍和讀考試類書(shū)籍的方式不同,初學(xué)者需要選擇更接地氣、并且能告訴你最終能做出什么案例的書(shū)籍。你不需要通讀整本書(shū),而是需要搭建好和書(shū)中版本一致的環(huán)境,然后把書(shū)中的每行代碼敲入電腦,觀察這些代碼怎樣被運(yùn)行,在遇到問(wèn)題時(shí)去請(qǐng)教朋友或者到搜索引擎中尋找解決辦法,直到示例程序能被正確運(yùn)行。 可能一個(gè)月才能讀完一本書(shū),但慢點(diǎn)并沒(méi)什么壞處,敲過(guò)一遍的代碼才能算是你的,否則永遠(yuǎn)存在于紙上的代碼清單中。對(duì)于關(guān)鍵的概念和知識(shí)點(diǎn),可以在閱讀的同時(shí)做一些筆記,去嘗試使用思維導(dǎo)圖來(lái)做你的筆記吧,這讓你的筆記跟上你的思考,并形成一個(gè)知識(shí)網(wǎng)絡(luò)。 自我激勵(lì) 自學(xué)無(wú)疑是寂寞的。編程學(xué)習(xí)耗時(shí)較長(zhǎng),如何保證在這個(gè)階段能堅(jiān)持下去? 我們知道很多人都能對(duì)游戲產(chǎn)生強(qiáng)烈的興趣、愿意為之投入時(shí)間,這其中的秘密就是游戲的獎(jiǎng)勵(lì)規(guī)則。殺死一個(gè)怪物就能得到一些金幣,通過(guò)完成任務(wù)獲得滿足感,通過(guò)關(guān)卡的設(shè)計(jì)產(chǎn)生持續(xù)吸引力,進(jìn)而形成正向的反饋。 其實(shí)學(xué)習(xí)編程也一樣,實(shí)現(xiàn)一小段程序并運(yùn)行,足以讓人感到成就感和滿足,借鑒這個(gè)簡(jiǎn)單的心理學(xué)技巧,定期給自己設(shè)定一些有實(shí)際意義但是不太難的目標(biāo)和任務(wù)。太難會(huì)讓人失去耐心,太簡(jiǎn)單又很無(wú)聊,*設(shè)定一個(gè)跳起來(lái)剛好摸得著的任務(wù)。每完成一個(gè)目標(biāo)就給予自己獎(jiǎng)勵(lì),可以是完成任務(wù)的成就感,也可以是其他的物質(zhì)獎(jiǎng)勵(lì)。 這個(gè)時(shí)候一個(gè)代辦記事的清單就可以幫上忙了,可以是一個(gè)to do list的軟件,或者自己手寫(xiě)一張卡片貼到墻上,關(guān)鍵在于不要忘了在任務(wù)達(dá)成后給予自己適當(dāng)?shù)莫?jiǎng)勵(lì)。 那如果真的遇到一些麻煩的任務(wù)呢,如何順利解決而不至于喪失信心?笛卡爾在《方法論》一書(shū)中告訴了我們研究復(fù)雜問(wèn)題的方法和步驟: 盡量將其分解為多個(gè)比較簡(jiǎn)單的小問(wèn)題,一個(gè)一個(gè)地分開(kāi)解決將小問(wèn)題從簡(jiǎn)單到復(fù)雜排列,先從容易解決的問(wèn)題著手子問(wèn)題被解決后,進(jìn)行聯(lián)調(diào)測(cè)試,看是否能協(xié)同運(yùn)行 在敏捷開(kāi)發(fā)這種工程思想中我們正是這樣做的,我們需要把業(yè)務(wù)需求進(jìn)行拆分然后評(píng)估工作量,不僅可以直觀的看到任務(wù)進(jìn)展,手上的工作也不會(huì)看起來(lái)龐大得難以完成。 *多說(shuō)幾句 非科班出身的工程師入門是有一定痛苦的,不像武俠世界里面的名門正派弟子,也沒(méi)有機(jī)緣遇到骨骼精奇的世外高人,如何選擇合適自己的學(xué)習(xí)方式并自我管理是很重要的一方面。沒(méi)有任何Low的學(xué)習(xí)方式,只要直接而又高效,而且要能達(dá)到我們的目的就好。以我為例,從大專學(xué)校畢業(yè)并沒(méi)有機(jī)會(huì)參加本科課程,曾經(jīng)也在網(wǎng)上攫取各種視頻教程,去別的學(xué)校蹭課,甚至帶上禮物去一個(gè)老師那里登門拜訪補(bǔ)課。 另一方面是如何上桌,吃上編程這碗飯。學(xué)習(xí)的成果如果無(wú)處施展便成為屠龍之技,參加一些開(kāi)源項(xiàng)目和一些公益活動(dòng),誰(shuí)不喜歡一個(gè)熱心的人呢。也可以嘗試去實(shí)現(xiàn)自己的一些idea,當(dāng)做一個(gè)小項(xiàng)目來(lái)開(kāi)發(fā),有了一些項(xiàng)目實(shí)踐后去找一個(gè)公司實(shí)習(xí)會(huì)容易的多。 我不知道算是有幸還是不幸經(jīng)歷了這一個(gè)過(guò)程,矯情一點(diǎn)來(lái)說(shuō)是有一些曲折,但是我知道“聰明”從來(lái)不是這個(gè)行業(yè)的門檻。引用流行于知乎的一句老話“以大多人的努力程度,還輪不到拼天賦的程度”,在有大量?jī)?yōu)秀的工程師,從他們身上我能看到聰明不是學(xué)習(xí)編程成功的關(guān)鍵,堅(jiān)持和勤于思考才是。所以小編給大家準(zhǔn)備了豐富的福利包 看抬頭圖片
上述文章了解到關(guān)于寫(xiě)給IT自學(xué)者的入門指南?? ,讓我們對(duì)新手學(xué)習(xí)it 有一個(gè)直觀的認(rèn)知。我們發(fā)現(xiàn),作為一個(gè)優(yōu)秀的Java程序員是多么的自豪。