3.千萬不要成爲書籍收藏家。我有一個同窗,不客氣的說,真是廢物。他熱衷於從各類渠道詢問「學XXX看什麼書比較好」,最後買了一堆書放在書架上,一頁都不看,天天照樣看知乎自High。前端
買書不像娶老婆,娶了一本書就不能娶另外一本書;買書也不想買房子,買了北京的房子就沒有錢買上海的房子了。我不可能喜歡A的時候同時向B表白,可是我徹底能夠買了A書之後再看B書啊!同時買多本書是沒有排他性的。程序員
與其在知乎上尋找虛無縹緲的心靈雞湯,還不如手腳麻利的開始看書。我歷來知乎上問「選XX方向有沒有前途」或者「XXX書籍怎麼樣」,有這些時間我本身早就把目錄和簡介章節讀過一遍了。算法
四年來,我瀏覽過的方向涵蓋Java開發(語法、性能、設計模式、框架)、Python開發(爬蟲、網頁、數據分析)、數據庫管理(MySQL、Hive、MongoDB、Redis)、前端、產品、體系結構(CSAPP)、編譯與操做系統(龍書)、數據挖掘、機器學習,還有一些偏門到你想不到的方向,例如工業信號控制、銀行資格考試、註冊會計師、法理學、信息經濟學等等。數據庫
鄙人在本科期間的可查圖書總開銷爲:10793.36元(不含現金或者其餘平臺的交易)編程
2014年度:762.03(淘寶) + 無(京東)後端
2015年度:2140.97(淘寶)+ 100.7(京東)設計模式
2016年度:2356.35(淘寶)+ 76.3(京東)數組
2017年度:1094.58元(淘寶)+ 3500.4元(京東)緩存
2018年度:0(淘寶)+ 0(京東)—— 保研之後給報銷了服務器
我這些年讀這麼多書,不求掌握多少,只求作出人生決斷的時候一點都心慌。
誰的人生沒有迷茫過,我上大學以前想當一個註冊會計師,報考了會計專業,後來被調劑到管理科學與工程,大一的時候早早考了會計從業資格證,同時準備着證券資格考試和轉專業考試;接觸到C語言以後,我沒有表現出抗拒,我學完了C語言和計算機基礎;在大創項目的過程當中,我接觸了IT的世界,那時是移動互聯網的草莽年代,大一的夏天我在Android Studio中埋着頭讀過,理想也動搖了;大二的轉專業考試我根本沒有參加,我選擇了留在信息管理專業,準備作一個Java程序員(Android工程師或者後端均可以);作了一段時間之後,咱們摸清了這個方向的技能樹,可是我沒有一頭扎進去;大數據時代的風暴起於青萍之末,我接觸到了數據挖掘和管理,包括算法和大規模數據的存儲與管理,我自學了韓的《數據挖掘導論》,本身搭建Hadoop和Spark;從大三開始到如今,個人方向終於肯定在了Data Science上了,最後的保研方向也選擇了人工智能。
我敢說我不後悔,我沒有看見同窗選了某個路而眼紅,由於我本身在迷茫的歲月裏把所有的閒暇時光花在了探路上。你立刻要走的路,我已經好好的試過了,我不會問「當初選擇XXX會不會好一點」。
回答評論區的衆多疑問:
你說的編程語言是一門體系,那你可否告訴我該怎麼入手?我什麼基礎都沒有!
我建議:從最簡單的任務開始作起,逐步增長任務難度,經過同時減小程序運行時間和編程自己耗時來提升水平。
場景一:
對數組[5,36,76,4,23,1,4]完成排序
這時只須要隨隨便便一個排序算法就能夠完成任務(學習語言自己)
從txt文件中讀取[5,36,76,4,23,1,4]並完成排序
這時須要瞭解語言自帶的讀取模塊,瞭解文件讀寫過程(文件IO技能get!)
對10000元素數組[5,3.......23,1,4]完成排序
這時可能須要用快排、堆排等算法(數據結構與算法技能get!)
對10000000000個元素的數組排序
首先要解決這麼多元素應該用什麼方法存儲,而後切割文件,完成多重歸併排序。若是有興趣可能還要搞一個相似Hadoop/Spark的計算框架(大數據技能get!)
場景二:
寫一個Java後端框架,模擬一個電商平臺
用MySQL建幾個表,Java這邊用Tomcat服務器草草一搭建,語言用的是JSP(好歹數據庫技能Get!)
數據庫要多七八個,功能頁面接口要多十幾個
不能手寫數據庫模板代碼了,要換Hibernate或者MyBatis了;JSP扔掉改爲Spring MVC框架;而後全局換成Spring作管理(如今知道什麼是依賴注入了嗎?知道了什麼是生命週期管理了嗎?知道什麼是SSM了嗎?技能Get!)
數據庫的儲存量要加大,讀寫速度要快,特別是查詢
先搞個線程池短期應付一下啊。背後立刻在MySQL上面插上一層Redis作緩存,加快查詢。爲了排山倒海的數據理,又是分庫又是分表的,把MySQL改爲異地多機主從分離按期備份。(????啥都會吧)
再往下走我就不知道了,我如今搞的是機器學習,中間件估計都要被你整出來了……
場景三:
一我的寫十多行的課後做業
隨便寫
寫百餘行到上千行的課程設計大做業
可能要用Git來管理一下代碼版本,而後熟悉一下文本編輯器例如Vim或者Sublime
一堆人作一個項目
熟悉GitHub的基本操做,若是是涉密項目,還要本身搭建Git服務器(一通Linux操做猛如虎)。
幾百萬人作項目
分佈式的Git貌似沒法存儲如此大的代碼量,這時可能又要回到自制中心管理的路子上。
因此說從體系的角度來看,編程任務有三重難關:
1.對語言自己不熟悉;
2.對相關類庫和框架不熟悉;
3.語言自己不適合你的工做;
在評論區提問的初學者應該是第一階段的,但願大家多給本身加活。