想自學編程怎樣下手?

相關問題:

自學編程需要注意什麼? - 程序員

如何系統、科學地自學編程知識? - 學習方法

如何高效自學編程? - 計算機

--

我是二本大三軟體工程專業 專業課啥的也不是完全沒學 但就是學到理論的東西 現在想系統的學習編程 看網上說 最好先深入學習一門語言,所以最近在看java 是看的網路教程 下圖它的一系列安排 我也不知道有沒有用 希望前輩們能指點一二

@馬國威@徐涵@沈碩@x灰烏鴉x@吳迪@賴君玉@Way One@曹斌@Java姐@java程序猿

第一次提問沒搞明白怎麼邀請人回答


謝題主邀請,據我印象,題主應該是看了這個回答之後,普通二本搞計算機應該準備實習然後工作還是考研? - marton zhang 的回答,邀請的我,對吧?

貌似過了兩天了,周末有空,才過來回答,見諒。

這次不留懸念了,直接來回答!

我沒太仔細看題主上面貼的技術路線之類的圖片,應該是某培訓機構的,沒參加過培訓,也不發表意見。下面著重來回答下怎樣自學編程:

1、首先,要搞清楚一點,計算機技術發展這麼多年,新技術層出不窮,但是基礎的東西是幾十年都不變的。

從長遠角度來講,不要把太大的精力放在層出不窮的新技術上,比如HTML5、Hadoop等,這些只需要跟得住就可以了(但是要跟得住,至少也要有七八年對基礎技術的研究),但實際上現在90%的程序猿基本都在追新技術,以至於android開發、ios開發這幾年火到豬都能飛起來,其實這也很明顯能折射出當前國內技術氛圍的浮躁。

新技術層出不窮,不斷更迭,但C/C++、Unix、數據結構、經典演算法、TCP/IP、路由協議、操作系統原理。。。這些成熟的技術,基本是幾十年不變的,Unix有40多年了吧,C++有30多年了吧,就連Java都有20多年了!

所以,第一點,要把基礎打牢固,盡自己最大的努力,能打多牢打多牢。比如操作系統原理、計算機網路、數據結構與演算法,這些也是互聯網企業筆試面試的時候喜歡考察的地方。

這一塊的學習,建議題主目前以看書、做題為主,當然如果你能自己寫個資料庫引擎、自己能搞個編譯器出來,那最好,只要你有這個能力。

2、然後,鑒於國內浮躁的大環境,對新技術還是要找個點去專攻下,畢竟以後畢業了,很可能要靠這個吃飯。

現在的技術方向有很多,比如J2EE方向、雲計算方向、Android開發方向、前端開發方向、機器學習方向(這個題主現在應該接觸不到)。。。就當前求職及工作情況來看的話,最好是有一個主攻方向,主攻方向的技術最好積累的深一些,然後其他方向盡量也拓展下。

所以,第二點,這些技術方向,最好做到一處精,兩處通,甚至處處通,當然如果你能做到處處精,那最好了,只要你有這個能力,這也是未來技術人員的趨勢。

這一塊的學習,建議是項目驅動學習,從零開始做項目,不斷增加功能,項目中需要用到什麼,就學什麼,直至最後把整個項目的功能點做的比較完善。

-----------------------------------------------------------分割線總結----------------------------------------------------------------

總結:主要就是這兩個大塊頭,一個是萬年不變的技術,打牢根基,一個是不斷更新的技術,順應市場。

----------------------------------------還是那句話,用心寫個回答不容易----------------------------------------------

還是那句話,用心寫個回答不容易,不要只是默默地看完,默默地收藏,希望多點贊!謝過!

我的答案到此結束,不過也不一定,或許點贊多了 ,我後面還會再補充些。


利益相關:7年老碼農,iOS工具類app 「深度識別」 作者;目前累計下載量已經超過20萬。

初學者學編程,有兩個標杆:1是你看過多少書,2是你寫過多少代碼

09年7月份我開始自學的時候,就是老老實實看譚浩強的《C語言程序設計》(這裡不討論這本書好壞,這不是重點),每一章看完後老老實實用TC 2.0在windows做題目。磨的很慢,但是感覺提升很大。很多東西看完一遍,感覺只是「知道」;做完題目,感覺才是真正的「會」了。書是老書,開發環境是老的開發環境,但是代碼量是扎紮實實打下了基礎。看到中間指針的時候,毫無壓力——因為之前的基礎已經打牢了。唯一有點難度的就是書後面一章實現鏈表那裡,理解和實現都花了蠻多天。事後統計,看譚C寫的代碼大概有8000行左右。一個學期我就磨這一本書,但是看完以後,就感覺是真正入門了。心血來潮,自己實現一些小程序(繪圖版雙人象棋,黑客帝國數字雨)已經遊刃有餘。考二級的時候也已經是庖丁解牛,毫不費力了。

後面一個的大半年,就是開始自學彙編語言,數據結構和演算法,unix api編程(直接裝ubuntu練習)了;還有一些邊緣性的知識,比如計算機網路等等。零零碎碎的小項目加起來一共是2萬行左右的代碼。基本都是C代碼。2010年10月份去的北京實習,第一份工作就是C/C++的開發崗位。而這離我以小白的身份開始自學,不過一年多一點的時間。

學編程,就一定要去動手寫代碼。在代碼的運行結果中得到巨大的成就感——也只有這種成就感,才能鼓勵自己堅持下去。如果只是看書,那結果多半是「看死書,死看書,看書死」。


親,有關技術類課程自學歡迎關注阿里雲大學專欄:阿里雲大學 - 知乎專欄

面對雲計算與大數據技術,不論是初學者還是資深架構師,始終會面臨同樣的一些問題:現階段我該學什麼?學完後我能做什麼?

阿里雲大學以「學以致用」為原則,分別從進階式學習、動手實操、能力測試等環節幫助用戶真正的掌握一項技能,真正使用這項技能,並對接到阿里雲人才庫,推薦到用人單位,形成真正的雲生態人才閉環!

同時,阿里雲最新認證體系也在阿里雲大學上線發布,包括面向雲工程師成長的阿里雲認證、面向大數據與安全兩大熱門領域的職業認證,以及側重輕量級、場景化技能的在線專項認證——Clouder,為用戶在雲端的專業能力,提供了多維度、多層次的權威證明!

(圖2:最新的阿里雲認證體系)

下面我們就來對全新的阿里雲大學有個全方位的了解:

1,體系化內容、進階式學習

想做一名合格的雲架構師或大數據專家,學習與成長的路線既複雜又漫長,這就需要養成有效梳理技能樹、不斷完善技術短板的習慣。阿里雲大學根據阿里雲、阿里巴巴集團,以及合作夥伴技術專家們多年對技術的探索、對用戶服務的沉澱,總結出面向不同職業方向的學習路線圖,幫助用戶循序漸進的掌握相關技能。

2,邊學邊用,實操體驗

在線實驗室,是阿里雲大學的一大特色。

當用戶在看完視頻與文檔教程後,即便是記憶深刻、理解充分,但對於實踐性很強的雲資源調配等問題,始終會有一層模糊地帶。為了讓用戶可以體驗真實的操作場景,阿里雲大學與資深合作夥伴上海駐雲攜手,推出了多個在線實驗,用戶可以通過已經配置好的雲資源,對照課程,邊學邊用,真正做到全面掌握!

(圖3:豐富的實驗課程)

3,專項認證,場景賦能

伴隨著阿里雲大學的上線發布,Clouder專項技能認證也出現在阿里雲認證體系中,什麼是Clouder認證?簡單來說,這是阿里雲大學推出的互聯網化、輕量級、場景化的在線認證,屬業界的首創。

「我想將我的網站部署到雲端」、「我想遷移本地資料庫到雲」,用戶帶著一個個場景化的需求準備上雲,可面對繁雜的產品,如何選擇最佳的解決方案?每一個Clouder認證,通過將視頻課程、在線實驗以及在線測試的組合,為用戶提供快速解決問題的方法,並獲得一個完整技能,取得認證。全部過程在線完成,省時省力,將極大滿足互聯網創業人員、個人開發者、學生、甚至企業工程師的技術空白點與碎片化時間學習需求。

當用戶取得了多項Clouder認證,足以證明他在某個領域達到一定的專業級別,將同取得阿里雲職業認證的其他用戶一起進入到阿里雲人才庫,在阿里雲大學人才市場中獲得職位的優先推薦,也將有機會承接阿里雲客戶與生態夥伴的上雲項目。

(圖4:Clouder在線認證的特色)

首批推出的兩個Clouder認證將面向初級用戶的上雲需求:

l Clouder雲伺服器管理運維:掌握如何快速地開通一台雲伺服器,並通過管理控制台方便地進行伺服器的管理、伺服器配置的變更和升級、數據的備份,並保證其可以正常運轉並按業務需求隨時進行配置的變更。

認證課程地址:阿里雲大學Clouder認證--雲伺服器管理運維

l Clouder網站建設:掌握如何將一個本地已經設計好的靜態網站發布到Internet公共互聯網,通過自己的域名讓全世界的網民訪問到,並且教會學員如何完成工信部的ICP備案,實現監管合規。

認證課程地址:阿里雲大學Clouder認證:網站建設

在向互聯網化賦能與認證探索的同時,阿里雲大學還會繼續秉承「匠心」精神,精細打磨職業認證,豐富種類,認證路徑也會更加清晰、更具有針對性,從而可以更好的幫助用戶定位職業發展方面的訴求,滿足人才市場的需要!

阿里雲職業認證將分為ACA(助理工程師)、ACP(認證工程師)、ACE(認證高級工程師)三個種類,將分別證明用戶具備不同等級的上雲能力。

ACA(助理工程師):取得該系列認證的用戶可以獲得對阿里雲基礎產品的管理能力,並具備一定的海量數據處理與分析能力。

ACP(認證工程師):取得該系列認證的用戶將可以基於阿里雲產品解決企業的基本業務問題,包括雲和大數據產品等。

ACE(認證高級工程師):取得該系列認證的用戶將可以基於阿里雲產品進行架構設計並解決業務發展中的主要問題,是阿里雲面向高級雲架構師、大數據分析師、大數據高級工程師的最高等級認證。

4,客戶培訓,量身定製

雲,正在向各行各業全面普及,能上雲,已逐漸成為每個行業專業人員的基本要求;了解雲,也將會是業務人員、決策者必須具備的知識。阿里雲行業培訓,將深入企事業單位內部,從雲的概念普及到具備熟練地運用阿里雲產品、技術、服務與解決方案,量身定製所需課程,提升行業用戶向雲端轉化的能力!

5,學生教育,高校普惠

阿里雲大學合作計劃旨在與高校聯合打造國際一流的DT時代人才培養專業,並提供了豐富教學資源庫、即插即用的實驗室、真實的工業實戰案例、海量雲生態企業崗位、師資訓練營以及阿里雲專業認證等諸多服務,從課堂到實驗室,從教學到就業,打造產、學、研、用、創的立體式人才價值鏈。

6,凝聚人才,壯大生態

隨著阿里雲在國內外市場的高歌猛進,阿里雲認證已成為當前最受關注、被業界高度認可的雲計算認證,僅在2016年,全國就有萬餘名用戶參加阿里雲認證培訓。全新的阿里雲大學也將逐步構建雲生態人才交流板塊,將凝聚阿里雲認證用戶,打造雲和大數據的精品人才庫,並聯合合作夥伴與行業用戶,將優質的崗位需求、項目需求與人才庫對接起來,將認證用戶真正流轉起來,讓整個雲生態下的人才培養體系更加立體、更加健壯!

阿里雲大學,一所云上的大學,一所云生態下的黃埔軍校!


謝邀

想一件自己想讓計算機做的事情,然後從頭到尾做一個項目吧,一旦開始做你就知道你該學什麼了。


題主想要系統的學習編程,並且選擇了Java作為深入的語言,正好最近也在學習Java,就來簡單的講一下。

系統的學習編程,基礎很重要,基礎很重要,基礎很重要!重要的話要說三遍。

不建議直接看網上的一些視頻,我也看過一些視頻,培訓班的氣息過於濃厚了,Java不是一門可以速成的語言,建議先熟悉一下語法,如果不熟悉面向對象的話把面向對象的東西好好看一下,可以參考《Java核心技術》第一卷,這本書唯一的不好就是沒有習題,不過書上有很多的例子,自己把例子看懂了獨立的敲一遍也是可行的,記住是看懂了之後獨立的敲一遍,不是邊看邊寫。前者是刻意練習,可以快速的提高水平。如果在編碼的過程中遇到什麼問題,那麼就是可以提高的地方,與書上的代碼對照,發現是哪方面自己不知道。

前期應該少看書,多寫代碼,只要把主要的語法熟悉了就行,每天保證500的代碼量。等到對Java的語法有了一定的了解之後,就可以開始看《Java編程思想》這本書了,當然有其他語言基礎的話這本書也是可以直接看的,這本書有練習題,採用的方法是先略讀某一章節,做習題,找到自己不會的地方,回過去細讀不會的部分。

還有API是不用背的,多查就行了。

這本書讀完了應該有一個不錯的Java語言基礎了,至少比那些只看視頻的人不知道高到哪裡去了。不熟悉的章節反覆閱讀,之後可以看看《Effective Java》。

題目描述中提到的一些看似高大上的項目其實不著急,很多Java學習者基礎還沒怎麼學好就去做這些項目,結果搞臭了Java的名聲。其實做那些東西也就是查查API,拼裝一下別人寫好的東西罷了,沒有多大的技術含量的。

什麼是基礎,Java只是語言基礎,演算法與數據結構,編譯原理,資料庫,網路,操作系統等等這些知乎都已經說爛了,就看答主會不會自己搜索了。

最近在研究刻意學習的相關東西,也可以運用在學習編程上,有時間再更新。


我是如何從一名文科生成為程序員的

準確來說,是從一名軌道交通運營管理專業的應屆生(其實還差2個月畢業),成為了一名前端工程師。

這篇文章我每天晚上都想寫,每晚做夢都想寫,為了讓自己不那麼浮躁,我一直告誡自己,努力學好技術,什麼都不要想,不要看錢,要看前。

本以為我會在今年年底實現我的大業,也想著在今年年底開始找工作,先在地鐵工作一年再說,可是沒想到,一切都是這麼突然,在2016年的五月初,我提前終止了。


一點點回憶
迷茫

還記得在15年中旬,那時候正是我一段迷茫的時期,對於銷售和技術,這兩個我都深愛的方向,一直都不知道該如何抉擇,折磨了我很久。想學技術覺的技術踏實,可是看著我大專幾年的工作經歷,明顯是一個銷售的模子,心裡也一直幻想著我西裝革履侃侃而談的樣子,可是現實很無奈,銷售對我來說是一個不可控因素太高的職業,我害怕自己很努力可是到頭來卻一無所獲;但是技術對我來說除了穩之外無一點優勢,因為我從沒接觸過。這期間蕾蕾給了我很大動力,也讓我毅然決然選擇了技術,並以計算機作為我的職業發展方向。

我認為,以技術為方向的職業方向是最容易獲得成就的,因為他需要的就是你在一個領域裡不停的鑽研。


小白

剛開始編程對於我來說就是零,我傻的跟一張白紙一樣。好在我記得有張圖書卡,打算著等雙休日去圖書館借本計算機的書來開始我的大業。

還記得我打算去圖書館的前幾個晚上,每晚都很興奮,激動的心情根本無法入睡,估計就是從那個時候開始,我的睡眠就開始不怎麼好了- - 反正每天晚上我都要思考好久人生才能睡著。

我讀的第一本關於計算機的書,具體名字忘記了,隱約記得是什麼計算機導論,反正是一門大學課程配套教材。看之前我還特意去網上攻略了一下,聽說入門書是挑薄的,越薄越好。拿回家後我真是愛不釋手,洗洗手,正襟危坐,打開書認真的看起來,並認真做起了筆記,忘記是從第幾天起,那本書就不知道跑哪去了,具體筆記本在哪,我也找不到了。


車禍——是福也是禍

很巧的是,在我終於找到那本書,把那本書還掉,從圖書館回家的路上,被車撞了。。。有點尷尬,是不是上帝在跟我說:「小夥子,你居然敢不看完就還書,看我打斷你的腿」。還好當時我電瓶車沒電我騎的很慢,索性沒什麼大礙,只是要拿繃帶綁著,我記得那時候正好是我暑假的開始,媽的,看來整個暑假要在家待著了。

這兩個月,我看了兩個月的java視頻,到現在還記得看的人是畢向東,真心推薦,畢老師的教課方式真的是簡單暴力,反正那段時間看的我整個人都變的搞笑了哈哈。

後來找到了網易雲課堂,上了翁凱老師的java課程,信誓旦旦的交了五十塊錢費用,(這五十塊錢就是如果你堅持通過了考試,就給你一個畢業證書,如果你沒有,五十就是懲罰)。一開始跟著做感覺沒什麼問題,到後來越來越難,這也體現出我暑假裡光看視頻學習的短板,理論還行,實踐是渣。不過我也是迎難而上,期間還得到了浙江大學給的一個獎品。其實這個獎品還是有水分的,當時是這樣評分的,做一個遊戲,大家把自己做的遊戲放到一個討論區里,參與該課程的學生可以給討論區里的遊戲點贊,誰的贊多誰就能得到一個獎品。看知乎讓我明白了一個道理,就是每個人都喜歡聽故事,我的作品如果只是冰冷的作品,那麼肯定比不過他們,於是我在提交作品的時候敘述了我的自學經歷,想引起更多的共鳴來讓大家點贊,當然,結果也如我所料嘿嘿。但是最後的java考試,因為跟我的電工證有衝突,所以就沒能參加,五十塊錢都打了水漂。


入坑

反正不知道學了多久,java這種長半衰周期的編程語言讓我再一次感到了迷茫,後來聽人說非科班出身可以做前端,前端更加容易,於是我就這樣入了前端的坑。

現在知道了,沒有容易的,都是坑。從一月份開始,從html到css一點一點,好在我後來找到了好的學習方法(關於學習方法可以看我的博客——【我說學習】板塊),參加了百度前端的課程,也鞏固了我的css,進入了下一個環節JavaScript。

好吧,學了JavaScript跟其他編程語言並無兩樣,也是一個完整的編程語言啊,不過它的弱類型什麼的一開始用起來還確實不習慣,但是它既可以函數時編程,又可以面向對象,看起來更具有靈活性一點。不過好在它寫的東西可以直觀的在網頁里看到,給了我更多的反饋,也給了我更多的動力。

這期間我停止了博客,轉向把我的總結寫在印象筆記里,因為寫給自己看,排版什麼的就很隨意,也節省了更多時間,至此我的印象筆記內容大約有一百五十多條吧。也把我的方向從單純的學編程,分散到學習如何學習(很重要),以及英語上來。對於一個人的不可替代性,外語能力絕對算一條,因為它不是你一朝一夕能夠學會的,不過目前對我來說夠用就好,現在已經可以看原版的編程書了哈哈。


我的時間安排

其實沒什麼,我的時間安排就是充分利用我的一切時間,反正從15年中旬到現在,我基本沒看過電視,空餘時間不是學習,就是看看ted之類關於心理學或者如何更好的學習之類內容,偶爾跟朋友出去玩玩。

這看起來挺簡單,一般人剛開始還真的挺難適應的。在一個沒有人督促,沒有人陪同,沒有人引導的前提下,我的學習就像是在漆黑的山洞裡探險,一開始我甚至連燈都沒有,想看看自己都看不見,因為我根本不知道自己學習的怎麼樣,對不對,哪裡需要改進,哪裡需要鞏固……

這對於自控力,自我管理,自學能力以及耐心都是一個考驗,好在這個考驗我暫時通過了。


第一份工作

就在16年的5.2號,也就是現在,我找到了一份前端工作。一切都起源於我在蘇州前端群裡面的一句發問:「請問xx你們招前端嗎?有什麼要求?」機緣巧合讓我遇到了高先生,他是我的貴人,通過短短的聊天我知道,他不是一個看中當下的人,他看中的是一個人的潛力以及後期爆發力。而我很有幸的,成功轉型,高先生以及貴公司給予我的信任,我一定不會辜負。以後當別人問我的職業的時候,我會自豪的告訴他

寫代碼的

但是我會緊接著告訴他第二句話

code change the world


先學java的語法


恰好瀏覽到這個問題,我也來給題主回答則個。

其他答主已經有具有價值的回答。我從另一個角度給題主一個思路。我的回答很宏觀,因為細節題主可以自己查,宏觀的大局感可能更有幫助。

自我介紹:我和答主一樣,也是大三的學生。我專業計算機科學。不過我學校的計算機系較之理論,更加重視工程。所以我也編過好些程。(C、C++、Java、Python、JavaScript、CommonLisp)。目前我集中學習 JavaScript 和 Python。

根據題主的需求,我覺得這裡有2個細分的問題:

1. 怎麼將理論應用到實踐?或者說,如何系統性地、高強度地鍛煉一下編程能力?

2. 畢竟題主也大三了,和我一樣,也面臨找工作的問題。從就業的角度來談談學習。

我從兩個角度來講吧。一個是我自己的學習經歷、方針、路線、和計劃。二個是分享一下一些我認為優質的學習資源。

我的個人經歷:

我大致學習了四個大方向:系統(System)、設計(Design)、理論(Theory)、通用的編程技能(Programming in General)

根據題主的需求,我給你的優先順序排序是

通用的編程技能(Programming in General)、設計(Design)、系統(System)、理論(Theory)

先說通用的編程技能

編程語言都有共性。比如變數、函數、值、引用、對象、繼承、泛型等等。不管題主學習的什麼語言,其中共通的東西要理解。雖然每種語言對每個概念的詮釋和標準不同,甚至同一個術語在不同語言下意義完全不同,但觸類旁通

C++的創始人說過:「任何只會一種語言的人都不是高手。」

精通一門語言的方針是對的,但是學習多門語言的路線也是正確的。所以你要有可行的計劃。兩頭都要抓。

那麼,建議選擇至少兩門語言

從語言運行環境來說,一門編譯型(compiled)語言,一門解釋型(interpreted)語言。當然現在的編程語言異常發達,這兩種只是粗糙的分類。

編譯型語言有C,C++,Java等等(我就說些常見的,就不說什麼D、Rust來裝逼)

解釋型語言又叫腳本語言。Python、JS、Lua、PHP、Ruby都是。

只裡面Java又是虛擬機語言。即被Java編譯器編譯成JVM位元組碼,再被JVM解釋。

(JVM:Java Virtual Machine)

JavaScript 又是使用了 JIT 技術的語言,即 Just In Time Compilation,在被解釋的瞬間被編譯成機器碼。所以,不要糾結這些細節。

我想強調的是,選擇一門更底層的語言,選擇一門更高層的語言。

從編程範式來說,選擇一門面向對象的語言吧(雖然現在大多數語言都有面向對象特性)。面向對象是很基礎的編程範式,沒有這個技能,之後的設計板塊無從談起。

Java就是非常經典的面向對象。語言非常嚴謹,語法和邏輯又簡單易學。是非常好的面向對象入門語言。實際上,很多高校都是以Java來作為面向對象和各種設計範式的教學語言的。

C++不說了,水太深,我自己都不懂。C++14之後幾乎支持所有編程範式,就是對新手非常不友好。慎入。

像Python、Ruby、PHP這些都有面向對象的功能,不過設計上不同。總之,如果你習慣了Java,這些語言的一些面向對象特性會讓你重新認識什麼是「面向對象」。

建議題主再挑一個有函數式編程特性的語言,不一定非要是嚴格函數式的CommonLisp家族的。像Python、JavaScript就有一些函數式的血統。總之,這裡強調的不是一種語法,而是一種編程範式。

那麼就我個人來說,我主要會的就是JavaScript、Python、Java、C

這裡是我給題主提供的一個選擇池(純個人看法):

面向對象:Java、C#、Python、Ruby、PHP

函數式:CommonLisp、Haskell、JS、Python

編譯型:C、C++、Java

解釋型(腳本):Python、Ruby、PHP、JS、Lua

就說到這裡吧

再談設計

這裡的設計不是指「平面設計」、「美術設計」之類的設計。題主可以把「設計」理解為「軟體工程」的代名詞。

我在這個方面學習了一些程序設計範式,比如人人都會說的 MVC。舉一些例子裝個逼:

和GUI相關的

Model View Controller

Model View View-Model

Model View Adapter

和GUI無關的

Singleton

Static

Factory

設計範式不是一個看看設計圖就可以習得的技能,而是要真正地寫出可用的軟體。這裡有一個我當時學習MVC用Java寫的紙牌遊戲,題主可以用Eclipse導入玩玩。

設計範式又和你使用的語言有關,不同設計範式適用於不同語言。比如Class、繼承、抽象類這些在Java中很好設計模式就不適合JavaScript。這兩個語言的相似度就和「卡」與「卡巴斯基」的相似度一樣 —— 不怎麼像。所以,設計範式的學習也和你學習的語言相輔相成。

API設計也是其中很重要的一環。作為一個開發者、你要麼使用別人的API,要麼寫API給別人使用。API是開發者對話的通道。

測試很重要,一定要學習怎麼寫測試。及時你很多時候不會真的去寫測試,但是會寫測試一定是加分的。

除了軟體工程裡面的各種設計模式,資料庫的使用也可以算作「設計」吧。其實就是SQL的基本操作。SQL 資料庫很多,語法各有不同,但是邏輯是相同的。我的資料庫能力很差,因為不是每個開發者每次項目都會接觸資料庫。NoSQL比較新潮,可以了解了解。

設計就談到這裡,多了就成了更細節問題的回答了。

三評系統

這裡主要指兩個系統,一個是操作系統,二是網路系統。個人覺得計算機操作系統是要先學習的。

那也就是Unix/Linux相關的一些東西。操作系統、包括一定計算機架構的學習,會讓你對編程有更全面的認識。

計算機網路的學習歸根結底是對於網路協議的學習,附帶一些對於系統網路介面的學習。

那麼,如果你時間不夠,就學一學IP、TCP、HTTP吧。這三個估計是業界最常用的。

有時間可以在Linux系統上用比較底層的語言封裝一下socket,實現一些簡單地功能。

對於系統的學習目的不在於把自己培養成厲害的系統工程師,旨在讓自己對開發有更深層次的認識。

最後道理論

演算法、演算法、演算法。一些基本的排序、搜索演算法了解一下。演算法和數據結構是好基友。

你如更有興趣,可以深入學習一下拓撲學、邏輯學和線性代數。計算機科學對數學要求不會很高(計算科學另當別論)。你有個基本的離散數學基礎就行了。

我覺得邏輯學對實踐大有幫助。

再給你推薦一些學習資源

題主的截圖所羅列的課程多少也全面。不過他們就是Java路線,完全不能說這是一個好的選擇。而且也難說他們Java教的好不好。

從就業上講,這一兩年經濟下行,低端程序員工作更加不好找了。加之微信公眾號開發讓企業成本下降,很少有一般公司還要做自己的APP了,所以低端移動開發人員也不好找工作了。也就是說,我們這些應屆生就不好找工作。提升自己的水平才是王道!

得看題主想成為用戶端應用的開發者還是別的什麼。從GUI用戶端來說,主要就是有 Web,移動,桌面這三大塊。

從實踐的角度我首推 Udacity (中文名叫什麼優達學城。。。)

這個網站上面好多課程都很有學習價值。我自己在Udacity學習了快兩年,上面除了實踐課,也有不少計算機科學課程,是喬治亞理工出的。我最近就在學習計算機視覺。

他們的課都附帶了很多實戰項目,完成了這些項目實力會有大大的提升。課程都是和矽谷的公司聯合製作的。比如谷歌、Facebook、Github等等。

U家還有就業渠道輸送,很符合我們應屆生的需求。

理論課可以上一上Coursera,有很多知名大學的公開課。不過題主英語得好,翻柵欄姿勢也得到位。聽說他們暫時不會大舉進入中國,所以中文字幕這個問題就尷尬了。

國內的MOOC內容提供商、我就只能說:唉。

其他網上資源:

網上的博客。大神都在網上,多看看幾個大神的博客也不錯,這裡就不一一列舉了,不然又是一篇答案的長度。就是別局限於中文大神博客,英文博客好東西更多,甚至現在國內開發者也會用英文寫東西(沒辦法,誰叫英文最流行)

Github一定要用。Github可以說是開發者的聚集地。

如果你對某一種技術感興趣,相關論壇也是好去處。

各種技術一般都有自己的年度研討會(Conference)。每次都會把內容上傳到油管。題主一定要會用標準姿勢翻柵欄看油管。油管上的教程和技術視頻太多了。

嗯,大概就是這樣。


Java教程 | 以實例驅動學習 這個網站可以幫助你!


這個問題,兩年前我也困惑,說說我的情況吧,兩年前,我剛大三,時間真的好快,我當時的專業是做硬體的,跟計算機八竿子打不著的,可是我對集成電路,單片機,通信什麼的,完全沒有興趣。

直到有一天我開了淘寶店,要裝修店鋪,不然沒人買你東西啊,感覺淘寶那套模板系統真的很牛逼,我就上知乎搜了下如何開發一個網站。雖然淘寶一件東西沒賣出去,還被騙了1000塊錢,但是淘寶打開了我編程的大門,在此感謝馬雲爸爸,就是記得防詐騙。

知乎上說PHP是最好的語言,我信了,畢竟是知乎說的,我就開始在網上搜集了PHP的資料。可是編程的道路是曲折的,沒人教沒人帶,入門都是個問題吶,什麼伺服器,瀏覽器,虛擬機,資料庫什麼都分不清。沒辦法下點視頻看看吧,只能先跟著別人做,別人咋寫我就咋寫!可是視頻下錯了,下成了HTML前端相關的,寫了大概一個多月,才發現的,我尼瑪,這居然不是PHP,不過跟著學也有好處,當時的水平能把圖片吶,視頻吶放到瀏覽器上去了,感覺好牛逼,瞬間感覺可以改變世界了有木有?

當時班上有個發散思維很強的小夥伴,我們都叫他小馬,當時找我要一起申請個國創,最後我們決定做個跟互聯網相關的項目,當時要做的東西很牛逼啊!微信公眾號的模板開發,當時是2015年,微信公眾號還在爆發的初期,現在想起來還是很佩服當時團隊對市場方向的判斷。

說實話,當時不知道這個項目有多大,有多困難,而且當時就我一個人搞技術,其他人負責一些思維分享之類的。哪怕就現在,這樣大的項目,我也不敢接吶。真是初生牛犢不怕虎,當時開題答辯有老師告訴我們,「你們做的東西很牛逼,但是憑你們,搞不定」,我現在還記得那老師。

正如那老師說的,我們搞不定,在接下來的半年多了,我很大一部分時間都在圖書館裡看網站建設的書,晚上回來就看視頻,當時看了兄弟連的細說PHP,邊看視頻邊跟著寫,遇到報錯就多回去看幾遍。

在那半年的時間裡我知道了怎麼搭伺服器,怎麼建資料庫,怎麼裝虛擬機。以及怎麼裝系統,電腦被我弄奔潰了好多次,就這樣折騰。但是國創的項目一點進展也沒有,大概是項目進度的原因,學校讓我們彙報進度,大家都沒什麼可寫的,大家都看不到希望,團隊就這樣解散了。

半年多的自學,我慢慢開始轉前端,因為有人告訴我前端簡單,我恨死那個師兄了,他就是沒吃過葡萄就說葡萄是甜的,前端哪裡簡單了,東西太雜,技術更新太快了!雖然最後我也愛上了前端並從事前端相關,但是當初要是繼續搞PHP,或許又是另一番境地。

時間過得很快,大三上學期很快就到了,我投了幾份實習崗,最後也拿到的offer是一家公司前端測試開發(金融平台部門),一家是前端開發(遊戲開發部門),兩家公司都是國內知名企業,因為對金融感興趣,而對遊戲開發不感冒,選擇了前者。

入職之後才發現,前端測試開發,基本都是在做測試,沒有開發,雖然不接觸技術,但是可以看代碼啊,我這樣告訴自己。但是時間久了,自己都害怕,不寫代碼,整天寫測試用例,我還是程序員嗎?實習了四個多月,我決定辭職,跟著自己的心走,趁年輕,想幹什麼就去干。這四個多月的時間了,因為加班比較多,技術上提升很小,但是作為QA的這段時間,我收穫很多,讓我對敏捷開發有了一些了解,對項目流程更加清晰。

畢業季,我進了一家不大的創業公司。在這裡,我能快樂的codeing,當然,我有更多的自由時間,比如,能把我經歷過的都寫下來!編程的道理還很長,要學習的東西還很多。另外,想對自學編程的朋友說,不要把自己局限於自己的某一門語言。我也在學習Python,學完還打算學習AI或者VR。

當然也不要把自己局限於某一個領域。就好比今天我用Excel解決了用編程解決複雜,而用Excel輕鬆解決的問題 Excel解決編程問題,除了編程,我還在學習攝影,金融,社會學等等,某一天,你會發現當你能把你所學的東西連起來的時候,你能看到你意想不到的結果。

最後,我還是想對編程自學者說幾個容易困惑的問題,因為我也困惑過?

  1. 零基礎學編程從哪開始?
  • 當然是從C語言開始,答主也不是零基礎入門的,答主也學過C語言,雖然考試差點掛了,還是老師放水過的!從這說明兩個問題,C語言的好壞決定不了你適不適合編程。但是C語言確實是基礎,然後你學不懂,不要死磕,或者放棄。你可以先跳過那部分,有空多回去看看,比如我當時對C語言指針就看不懂,遇到高人多請教請教,慢慢就懂了,做小白不丟人。

2. 學編程需要你得會很牛逼的演算法?

  • 這個看你做什麼編程了,做後台開發,機器學習,人工智慧的就需要,像前端,安卓,iOS之類的就少一些。

3. 學編程需要英語很牛逼?

  • 這個吶,真的不影響,答主大學四年四級考了六七次,至於有沒有過了,涉及個人隱私,我就不說了。所以不要用你的英語差給你自己找借口,說自己不適合編程。

4. 多做一些項目,給自己一些壓力!

  • 就像我做國創那半年,基本每天都在進度,因為團隊在等著你,老師在催著你。

5.

===========================================================================等哪天想到我再說吧!

英雄不問出處,來生再學PHP!

如何自學前端

===============================================================


如果真想學JAVA的話,推薦網上的良心視頻教程,孔浩視頻教學視頻,從淺入深,而且講的非常細緻,完全免費,公益的,個人覺得是網上講的最好最全面的java視頻教程,從最基礎的java開始講,講到非常深入的網路優化,微信開發,視頻看完,如果代碼敲完,理解的話,至少頂的上3年,(至少,我覺得5年也可以)工作經驗的人,孔浩老師的前端技術尤其牛逼,好好學吧,騷年,有些課程是相當重要的,如果老師不給力,自己在業餘之外一定要下苦工研究一番,趁大學裡還有時間足夠去學習,數據結構和編譯原理、操作系統、軟體工程,還有平時怎麼提高技術,簡單的一句話就是,讓需求去驅動你的技術,沒有需求自己想,最簡單的,當你需要知乎上所有的問答答案時,希望你第一時間想到的是爬蟲,抓取、多線程等技術,而不是一個個的打開頁面複製粘貼,更多的需求其實在平時生活中無處不在,計算機是個很有用的工具,好好利用,PS:孔浩老師的鏈接:孔浩個人學習空間。


你軟體專業的大三學生,你跟我說你要自學?

要麼你們老師該拖出去打,要麼你該拖出去打。


看了前面幾位大神的回答,剛想要洋洋洒洒幾千字的心情,頓時木有了。

其實我的學習經驗就是,你先找一個項目。比如,我覺得這個網站做的不錯,很贊,我能不能做出來一個呢?或者說這個APP很贊,我能不能模仿出一個呢?

then,show time。

你可以根據網站或者APP的特點,首先整理出自己的思路,我自己要做的東西應該怎麼做,做成什麼樣子的。然後,就開始找各種想關知識點來學習,這時,就開始去寫,按照自己的構想去寫不要想著能不能做出來,只要你想,就肯定是能做出來的。比如設計網站的時候,什麼是MVC啊,鏈接資料庫怎麼連啊,原理是什麼啊?最後你搞一個便宜的伺服器,扔上去,看在正式的環境中效果怎麼樣啊?然後開始考慮性能的問題~怎麼在有限的硬體條件基礎上把網站的性能做出最大的優化啊?我是選擇什麼中間件啊……等等等等……基礎固然重要,但是也要培養自己的邏輯思維,業務邏輯等思維。

個人見解,不喜輕噴。。。


先把基本的語法掌握,然後看看有沒有在小公司上班的同學,讓他帶你進去,開始不拿工資在裡面學習。我就是這樣過了兩個月了,現在有生活補貼了(一千多,但是包住)。因為自學基礎的語法沒問題,但是學開發用的框架那些知識點的時候會完全沒頭緒的。進個小公司的好處就是至少不懂得能問,天天還能耳染目濡。我是學會計的,自學了半個月的PS,半個月的C語言基礎,然後兩個月的java基礎。過完年跟基友來上海,反正就這麼雜七雜八的學過來了。現在知道了SSH框架,會資料庫的增刪改查什麼的,也僅僅是知道(知道沒用,做出來才算能力)。雖然也很迷茫,但都踏出半隻腳了,慢慢熬唄。我覺得最主要的是既然決定乾的事就別輕易放棄!


學習編程的話,首先需要堅持,然後是系統紮實的理論知識和架構體系,切忌猴子摘桃式的學習,三天打魚、兩天晒網。接著是大量的編程聯繫(多背一些經典)。最後就是一定要有目的,可以在網上找一些大型開源的項目代碼研究。

推薦學習網站:網易雲課堂的大學計算機專業課程和慕課網上的大牛的點評。老師的話,韓順平的講課視頻不錯,可以在百度上面搜索下載一下。


種一棵樹最好的時間是現在哈~~(廢話)

你說想學Java,那我給你推薦一個目前很火很有趣的Java熱門課程

入門級在這裡:Java入門第一季丨章節

你不知道怎麼學的話,可以按照這個計劃來:Java攻城獅養成計劃 慕課網-學習計劃

別問我怎麼知道,我也是迷茫中看到這個才順利堅持了下去!

學什麼都不容易,加油!


網易雲課堂~非廣告!

~~


1. 首先學好java的基礎知識

2. 不要光看視頻,要自己動手,選擇自己感興趣的事情,用程序去實現,比如自己實現一個個人blog,自己做個遊戲玩玩。

3. 看視頻的話,建議2倍速度看


我想澆一盆冷水。

軟體學院的在讀學生,要上知乎來詢問如何自學編程,我只能臆測題主不擅長尋找合理方案,而且學習編程的自我驅動力也不夠。如果不擅長自學,又對編程沒什麼興趣,建議不要入行,可以學著玩玩,但不要靠這個吃飯。

如果不能靠自己去精進技術,很大可能性就是淪為一個只能搬磚的碼農,用健康換取工資。


首先,告訴你自己,你真心愛編程,而不是為了錢,是為了興趣,

讓我們準備一下前提工作,閉嘴,聽我講,找一個JavaForAndroid的視頻,這麼直接就Android了?別管那麼多了,給老子閉嘴,Marschen的視頻就可以了,網易雲課堂有,不要先急著開始看視頻,你還要準備一個JavaforAndroid的視頻,網易雲課堂也有,是海同網校,別急,等下解釋,再去準備一本java的入門書,這本書就不用去找javaforAndroid的了,隨便買一本口碑好適合java初學者的而不是think in java 這種給有java基礎的人看的書,別花冤枉錢,這三樣東西沒有任何編程知識的你也能準備得到。

學編程?那接下來就開始看視頻,首先看Marschen那個,邊看邊寫,裡邊什麼都有教,這裡就不贅述一些編程前的準備了,重點來了,當你看到後面的時候,會發現看Marschen的視頻看兩遍都難以理解,這是正常的現象,這時候就去看書和海同網校的那個視頻去查找相應的知識點視頻來看,海同網校視頻和書交叉著看,絕對能弄懂並且深深的弄懂,懂了之後回去繼續Marschen的視頻,看到不懂的地方就繼續重複上述解惑的方法,完全不求人,看完Marschen的視頻再去快速的看一遍海同網校的視頻,然後就開始擼Marschen的另一個Android開發的視頻,書籍推薦《第一行代碼》。


推薦閱讀:

如何評價中科大軟院的孟寧老師?
女生適合學軟體工程嗎?
為什麼一些程序員連 Visual Studio 怎麼卸載都不會?
如何高效地增強編程(特別是debug)能力?
二本院校在上海找得到軟體開發實習嗎?

TAG:程序員 | 編程 | 大學生 | 軟體工程 | Java |