1,描述你需要完成的需求以及目的(目的就是為什么要做這個(gè)需求)
我想找份有關(guān)編程的工作,但是瞎子摸象,什么都不懂,想找這份工作的目的是為了賺錢(qián),有錢(qián)了之后才能實(shí)現(xiàn)自己的想法
2,描述你的想法或思路
我的想法是通過(guò)編程,多吃幾年苦,而且覺(jué)得編程應(yīng)該是個(gè)比較有趣的職業(yè),通過(guò)不斷學(xué)習(xí)提高自己,就像打怪升級(jí)一樣
3,描述具體的實(shí)現(xiàn)過(guò)程
想先找到有關(guān)編程的工作,然后再一步步往上爬
4,描述遇到的問(wèn)題,包括正確信息,報(bào)錯(cuò)信息或得到的不正確的信息
遇到的問(wèn)題就是我現(xiàn)在無(wú)業(yè)游民,該怎么踏出自己的第一步,找份工作去學(xué)習(xí),然后跟著蕭大神的節(jié)奏一步步往上爬
5,有條件則貼出具體實(shí)現(xiàn)代碼
沒(méi)能力不是沒(méi)條件@蕭井陌
我整理了一下你的問(wèn)題。
1,描述你需要完成的需求以及目的(目的就是為什么要做這個(gè)需求)
我想找份有關(guān)編程的工作,但是瞎子摸象,什么都不懂,想找這份工作的目的是為了賺錢(qián),有錢(qián)了之后才能實(shí)現(xiàn)自己的想法
2,描述你的想法或思路
我的想法是通過(guò)編程,多吃幾年苦,而且覺(jué)得編程應(yīng)該是個(gè)比較有趣的職業(yè),通過(guò)不斷學(xué)習(xí)提高自己,就像打怪升級(jí)一樣
3,描述具體的實(shí)現(xiàn)過(guò)程
想先找到有關(guān)編程的工作,然后再一步步往上爬
4,描述遇到的問(wèn)題,包括正確信息,報(bào)錯(cuò)信息或得到的不正確的信息
遇到的問(wèn)題就是我現(xiàn)在無(wú)業(yè)游民,該怎么踏出自己的第一步,找份工作去學(xué)習(xí),然后跟著蕭大神的節(jié)奏一步步往上爬
5,有條件則貼出具體實(shí)現(xiàn)代碼
沒(méi)能力不是沒(méi)條件
通過(guò)描述來(lái)看,第一步并不是找份工作去學(xué)習(xí),而是在知乎搜索如何學(xué)編程找工作。
剛剛找到一個(gè)很有意思的問(wèn)題,剛好解答題主的答案:
26歲開(kāi)始學(xué)編程晚了嗎?-謝科的回答
本答案持續(xù)輸出,感激大家的贊~\(≧▽≦)/~,知乎小透明都要開(kāi)心炸了
作者:陳皓,2011年7月18日,發(fā)表于
程序員技術(shù)練級(jí)攻略
這篇文章對(duì)我?guī)椭罅耍≈辽僦该髁宋椅磥?lái)五年努力的方向[hopefully]:
原文精華:
月光博客6月12日發(fā)表了《寫(xiě)給新手程序員的一封信》,翻譯自《Anopenlettertothosewhowanttostartprogramming》,我的朋友(他在本站的id是Mailper)告訴我,他希望在酷殼上看到一篇更具操作性的文章。因?yàn)樗彩窍矚g編程和技術(shù)的家伙,于是,我讓他把他的一些學(xué)習(xí)Python和Web編程的一些點(diǎn)滴總結(jié)一下。于是他給我發(fā)來(lái)了一些他的心得和經(jīng)歷,我在把他的心得做了不多的增改,并根據(jù)我的經(jīng)歷增加了“進(jìn)階”一節(jié)。這是一篇由新手和我這個(gè)老家伙根據(jù)我們的經(jīng)歷完成的文章。
我的這個(gè)朋友把這篇文章取名叫BuildYourProgrammingTechnicalSkills,我實(shí)在不知道用中文怎么翻譯,但我在寫(xiě)的過(guò)程中,我覺(jué)得這很像一個(gè)打網(wǎng)游做任務(wù)升級(jí)的一個(gè)過(guò)程,所以取名叫“技術(shù)練級(jí)攻略”,題目有點(diǎn)大,呵呵,這個(gè)標(biāo)題純粹是為了好玩。這里僅僅是在分享Mailper和我個(gè)人的學(xué)習(xí)經(jīng)歷。(注:省去了我作為一個(gè)初學(xué)者曾經(jīng)學(xué)習(xí)過(guò)的一些技術(shù)(今天明顯過(guò)時(shí)了),如:Delphi/Powerbuilder,也省去了我學(xué)過(guò)的一些我覺(jué)得沒(méi)意思的技術(shù)LotusNotes/ActiveX/COM/ADO/ATL/.NET……)
前言
你是否覺(jué)得自己從學(xué)校畢業(yè)的時(shí)候只做過(guò)小玩具一樣的程序?走入職場(chǎng)后哪怕沒(méi)有什么經(jīng)驗(yàn)也可以把以下這些課外練習(xí)走一遍
建議:
不要亂買(mǎi)書(shū),不要亂追新技術(shù)新名詞,基礎(chǔ)的東西經(jīng)過(guò)很長(zhǎng)時(shí)間積累而且還會(huì)在未來(lái)至少10年通用。回顧一下歷史,看看歷史上時(shí)間線上技術(shù)的發(fā)展,你才能明白明天會(huì)是什么樣。一定要?jiǎng)邮?,例子不管多么?jiǎn)單,建議至少自己手敲一遍看看是否理解了里頭的細(xì)枝末節(jié)。一定要學(xué)會(huì)思考,思考為什么要這樣,而不是那樣。還要舉一反三地思考。
注:你也許會(huì)很奇怪為什么下面的東西很偏Unix/Linux,這是因?yàn)槲矣X(jué)得Windows下的編程可能會(huì)在未來(lái)很沒(méi)有前途,原因如下:
現(xiàn)在的用戶界面幾乎被兩個(gè)東西主宰了,1)Web,2)移動(dòng)設(shè)備iOS或Android。Windows的圖形界面不吃香了。越來(lái)越多的企業(yè)在用成本低性能高的Linux和各種開(kāi)源技術(shù)來(lái)構(gòu)架其系統(tǒng),Windows的成本太高了。微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見(jiàn)《Windows編程革命史》
所以,我個(gè)人認(rèn)為以后的趨勢(shì)是前端是Web+移動(dòng),后端是Linux+開(kāi)源。開(kāi)發(fā)這邊基本上沒(méi)Windows什么事。
啟蒙入門(mén)
1、學(xué)習(xí)一門(mén)腳本語(yǔ)言,例如Python/Ruby
可以讓你擺脫對(duì)底層語(yǔ)言的恐懼感,腳本語(yǔ)言可以讓你很快開(kāi)發(fā)出能用得上的小程序。實(shí)踐項(xiàng)目:
處理文本文件,或者csv(關(guān)鍵詞pythoncsv,pythonopen,pythonsys)讀一個(gè)本地文件,逐行處理(例如wordcount,或者處理log)遍歷本地文件系統(tǒng)(sys,os,path),例如寫(xiě)一個(gè)程序統(tǒng)計(jì)一個(gè)目錄下所有文件大小并按各種條件排序并保存結(jié)果跟數(shù)據(jù)庫(kù)打交道(pythonsqlite),寫(xiě)一個(gè)小腳本統(tǒng)計(jì)數(shù)據(jù)庫(kù)里條目數(shù)量學(xué)會(huì)用各種print之類簡(jiǎn)單粗暴的方式進(jìn)行調(diào)試學(xué)會(huì)用Google(phrase,domain,usereadertofollowtechblogs)
為什么要學(xué)腳本語(yǔ)言,因?yàn)樗麄儗?shí)在是太方便了,很多時(shí)候我們需要寫(xiě)點(diǎn)小工具或是腳本來(lái)幫我們解決問(wèn)題,你就會(huì)發(fā)現(xiàn)正規(guī)的編程語(yǔ)言太難用了。
2、用熟一種程序員的編輯器(不是左邊ID右邊E)和一些基本工具
Vim/Emacs/Notepad++,學(xué)會(huì)如何配置代碼補(bǔ)全,外觀,外部命令等。SourceInsight(或ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日志會(huì)更快更有效率。
3、熟悉Unix/LinuxShell和常見(jiàn)的命令行
如果你用windows,至少學(xué)會(huì)用虛擬機(jī)里的linux,vmwareplayer是免費(fèi)的,裝個(gè)Ubuntu吧一定要少用少用圖形界面。學(xué)會(huì)使用man來(lái)查看幫助文件系統(tǒng)結(jié)構(gòu)和基本操作ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip…學(xué)會(huì)使用一些文本操作命令sed/awk/grep/tail/less/more…學(xué)會(huì)使用一些管理命令ps/top/lsof/netstat/kill/tcpdump/iptables/dd…了解/etc目錄下的各種配置文章,學(xué)會(huì)查看/var/log下的系統(tǒng)日志,以及/proc下的系統(tǒng)運(yùn)行信息了解正則表達(dá)式,使用正則表達(dá)式來(lái)查找文件。
對(duì)于程序員來(lái)說(shuō)Unix/Linux比Windows簡(jiǎn)單多了。(參看我四年前CSDN的博文《其實(shí)Unix很簡(jiǎn)單》)學(xué)會(huì)使用Unix/Linux你會(huì)發(fā)現(xiàn)圖形界面在某些時(shí)候?qū)嵲谑翘y用了,相當(dāng)?shù)叵喈?dāng)?shù)亟档凸ぷ餍省?/p>
4、學(xué)習(xí)Web基礎(chǔ)(HTML/CSS/JS)+服務(wù)器端技術(shù)(LAMP)
未來(lái)必然是Web的世界,學(xué)習(xí)WEB基礎(chǔ)的最佳網(wǎng)站是W3School。
學(xué)習(xí)HTML基本語(yǔ)法學(xué)習(xí)CSS如何選中HTML元素并應(yīng)用一些基本樣式(關(guān)鍵詞:boxmodel)學(xué)會(huì)用Firefox+Firebug或chrome查看你覺(jué)得很炫的網(wǎng)頁(yè)結(jié)構(gòu),并動(dòng)態(tài)修改。學(xué)習(xí)使用Javascript操縱HTML元件。理解DOM和動(dòng)態(tài)網(wǎng)頁(yè)(DynamicHTML:TheDefinitiveReference,3rdEdition-O'ReillyMedia)網(wǎng)上有免費(fèi)的章節(jié),足夠用了?;騾⒖碊OM。學(xué)會(huì)用Firefox+Firebug或chrome調(diào)試Javascript代碼(設(shè)置斷點(diǎn),查看變量,性能,控制臺(tái)等)在一臺(tái)機(jī)器上配置Apache或Nginx學(xué)習(xí)PHP,讓后臺(tái)PHP和前臺(tái)HTML進(jìn)行數(shù)據(jù)交互,對(duì)服務(wù)器相應(yīng)瀏覽器請(qǐng)求形成初步認(rèn)識(shí)。實(shí)現(xiàn)一個(gè)表單提交和反顯的功能。把PHP連接本地或者遠(yuǎn)程數(shù)據(jù)庫(kù)MySQL(MySQL和SQL現(xiàn)學(xué)現(xiàn)用夠了)跟完一個(gè)名校的網(wǎng)絡(luò)編程課程(例如:)不要覺(jué)得需要多于一學(xué)期時(shí)間,大學(xué)生是全職一學(xué)期選3-5門(mén)課,你業(yè)余時(shí)間一定可以跟上學(xué)習(xí)一個(gè)javascript庫(kù)(例如jQuery或ExtJS)+Ajax(異步讀入一個(gè)服務(wù)器端圖片或者數(shù)據(jù)庫(kù)內(nèi)容)+JSON數(shù)據(jù)格式。HTTP:TheDefinitiveGuide讀完前4章你就明白你每天上網(wǎng)用瀏覽器的時(shí)候發(fā)生的事情了(proxy,gateway,browsers)做個(gè)小網(wǎng)站(例如:一個(gè)小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁(yè)顯示)買(mǎi)個(gè)域名,租個(gè)空間,做個(gè)自己的網(wǎng)站。進(jìn)階加深
1、C語(yǔ)言和操作系統(tǒng)調(diào)用
重新學(xué)C語(yǔ)言,理解指針和內(nèi)存模型,用C語(yǔ)言實(shí)現(xiàn)一下各種經(jīng)典的算法和數(shù)據(jù)結(jié)構(gòu)。推薦《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》、《算法導(dǎo)論》和《編程珠璣》。學(xué)習(xí)(麻省理工免費(fèi)課程)計(jì)算機(jī)科學(xué)和編程導(dǎo)論學(xué)習(xí)(麻省理工免費(fèi)課程)C語(yǔ)言內(nèi)存管理學(xué)習(xí)Unix/Linux系統(tǒng)調(diào)用(Unix高級(jí)環(huán)境編程),,了解系統(tǒng)層面的東西。用這些系統(tǒng)知識(shí)操作一下文件系統(tǒng),用戶(實(shí)現(xiàn)一個(gè)可以拷貝目錄樹(shù)的小程序)用fork/wait/waitpid寫(xiě)一個(gè)多進(jìn)程的程序,用pthread寫(xiě)一個(gè)多線程帶同步或互斥的程序。多進(jìn)程多進(jìn)程購(gòu)票的程序。用signal/kill/raise/alarm/pause/sigprocmask實(shí)現(xiàn)一個(gè)多進(jìn)程間的信號(hào)量通信的程序。學(xué)會(huì)使用gcc和gdb來(lái)編程和調(diào)試程序(參看我的《用gdb調(diào)試程序》)學(xué)會(huì)使用makefile來(lái)編譯程序。(參看我的《跟我一起寫(xiě)makefile》)IPC和Socket的東西可以放到高級(jí)中來(lái)實(shí)踐。學(xué)習(xí)WindowsSDK編程(Windows程序設(shè)計(jì),MFC程序設(shè)計(jì))寫(xiě)一個(gè)窗口,了解WinMain/WinProcedure,以及Windows的消息機(jī)制。寫(xiě)一些程序來(lái)操作WindowsSDK中的資源文件或是各種圖形控件,以及作圖的編程。學(xué)習(xí)如何使用MSDN查看相關(guān)的SDK函數(shù),各種WM_消息以及一些例程。這本書(shū)中有很多例程,在實(shí)踐中請(qǐng)不要照抄,試著自己寫(xiě)一個(gè)自己的例程。不用太多于精通這些東西,因?yàn)镚UI正在被Web取代,主要是了解一下Windows圖形界面的編程。@virushuo說(shuō):“我覺(jué)得GUI確實(shí)不那么熱門(mén)了,但充分理解GUI工作原理是很重要的。包括移動(dòng)設(shè)備開(kāi)發(fā),如果沒(méi)有基礎(chǔ)知識(shí)仍然很吃力。或者說(shuō)移動(dòng)設(shè)備開(kāi)發(fā)必須理解GUI工作,或者在win那邊學(xué),或者在mac/iOS上學(xué)”。
2、學(xué)習(xí)Java
Java的學(xué)習(xí)主要是看經(jīng)典的CoreJava《Java核心技術(shù)編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因?yàn)镴ava的圖形界面了解就可以了)學(xué)習(xí)JDK,學(xué)會(huì)查閱JavaAP左邊ID右邊ocJavaPlatformSE6了解一下Java這種虛擬機(jī)語(yǔ)言和C和Python語(yǔ)言在編譯和執(zhí)行上的差別。從C、Java、Python思考一下“跨平臺(tái)”這種技術(shù)。學(xué)會(huì)使用左邊ID右邊EEclipse,使用Eclipse編譯,調(diào)試和開(kāi)發(fā)Java程序。建一個(gè)Tomcat的網(wǎng)站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開(kāi)發(fā)。把前面所說(shuō)的那個(gè)PHP的小項(xiàng)目試著用JSP和Servlet實(shí)現(xiàn)一下。3、Web的安全與架構(gòu)
學(xué)習(xí)HTML5,網(wǎng)上有很多很多教程,以前酷殼也介紹過(guò)很多,我在這里就不羅列了。學(xué)習(xí)Web開(kāi)發(fā)的安全問(wèn)題(參考新浪微博被攻擊的這個(gè)事,以及Ruby的這篇文章)學(xué)習(xí)HTTPServer的rewrite機(jī)制,Nginx的反向代理機(jī)制,fast-cgi(如:PHP-FPM)學(xué)習(xí)Web的靜態(tài)頁(yè)面緩存技術(shù)。學(xué)習(xí)Web的異步工作流處理,數(shù)據(jù)Cache,數(shù)據(jù)分區(qū),負(fù)載均衡,水平擴(kuò)展的構(gòu)架。實(shí)踐任務(wù):使用HTML5的canvas制作一些Web動(dòng)畫(huà)。嘗試在前面開(kāi)發(fā)過(guò)的那個(gè)Web應(yīng)用中進(jìn)行SQL注入,JS注入,以及XSS攻擊。把前面開(kāi)發(fā)過(guò)的那個(gè)Web應(yīng)用改成構(gòu)造在Nginx+PHP-FPM+靜態(tài)頁(yè)面緩存的網(wǎng)站
4、學(xué)習(xí)關(guān)系型數(shù)據(jù)庫(kù)
你可以安裝MSSQLServer或MySQL來(lái)學(xué)習(xí)數(shù)據(jù)庫(kù)。學(xué)習(xí)教科書(shū)里數(shù)據(jù)庫(kù)設(shè)計(jì)的那幾個(gè)范式,1NF,2NF,3NF,……學(xué)習(xí)數(shù)據(jù)庫(kù)的存過(guò),觸發(fā)器,視圖,建索引,游標(biāo)等。學(xué)習(xí)SQL語(yǔ)句,明白表連接的各種概念(參看《SQLJoin的圖示》)學(xué)習(xí)如何優(yōu)化數(shù)據(jù)庫(kù)查詢(參看《MySQL的優(yōu)化》)實(shí)踐任務(wù):設(shè)計(jì)一個(gè)論壇的數(shù)據(jù)庫(kù),至少滿足3NF,使用SQL語(yǔ)句查詢本周,本月的最新文章,評(píng)論最多的文章,最活躍用戶。
5、一些開(kāi)發(fā)工具
學(xué)會(huì)使用SVN或Git來(lái)管理程序版本。學(xué)會(huì)使用JUnit來(lái)對(duì)Java進(jìn)行單元測(cè)試。學(xué)習(xí)C語(yǔ)言和Java語(yǔ)言的codingstandard或codingguideline。(我N年前寫(xiě)過(guò)一篇關(guān)C語(yǔ)言非常簡(jiǎn)單的文章——《編程修養(yǎng)》,這樣的東西你可以上網(wǎng)查一下,一大堆)。推薦閱讀《代碼大全》《重構(gòu)》《代碼整潔之道》高級(jí)深入
1、C++/Java和面向?qū)ο?/strong>
我個(gè)人以為學(xué)好C++,Java也就是舉手之勞。但是C++的學(xué)習(xí)曲線相當(dāng)?shù)亩?。不過(guò),我覺(jué)得C++是最需要學(xué)好的語(yǔ)言了。參看兩篇趣文“C++學(xué)習(xí)信心圖”和“21天學(xué)好C++”
學(xué)習(xí)(麻省理工免費(fèi)課程)C++面向?qū)ο缶幊套x我的“如何學(xué)好C++”中所推薦的那些書(shū)至少兩遍以上(如果你對(duì)C++的理解能夠深入到像我所寫(xiě)的《C++虛函數(shù)表解析》或是《C++對(duì)象內(nèi)存存局》,或是《C/C++返回內(nèi)部靜態(tài)成員的陷阱》那就非常不錯(cuò)了)然后反思為什么C++要干成這樣,Java則不是?你一定要學(xué)會(huì)對(duì)比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,異常,虛函數(shù),等等。實(shí)踐任務(wù):用C++實(shí)現(xiàn)一個(gè)BigInt,支持128位的整形的加減乘除的操作。用C++封裝一個(gè)數(shù)據(jù)結(jié)構(gòu)的容量,比如hashtable。用C++封裝并實(shí)現(xiàn)一個(gè)智能指針(一定要使用模板)?!对O(shè)計(jì)模式》必需一讀,兩遍以上,思考一下,這23個(gè)模式的應(yīng)用場(chǎng)景。主要是兩點(diǎn):1)鐘愛(ài)組合而不是繼承,2)鐘愛(ài)接口而不是實(shí)現(xiàn)。(也推薦《深入淺出設(shè)計(jì)模式》)實(shí)踐任務(wù):使用工廠模式實(shí)現(xiàn)一個(gè)內(nèi)存池。使用策略模式制做一個(gè)類其可以把文本文件進(jìn)行左對(duì)齊,右對(duì)齊和中對(duì)齊。使用命令模式實(shí)現(xiàn)一個(gè)命令行計(jì)算器,并支持undo和redo。使用修飾模式實(shí)現(xiàn)一個(gè)酒店的房間價(jià)格訂價(jià)策略——旺季,服務(wù),VIP、旅行團(tuán)、等影響價(jià)格的因素。學(xué)習(xí)STL的用法和其設(shè)計(jì)概念–容器,算法,迭代器,函數(shù)子。如果可能,請(qǐng)讀一下其源碼。實(shí)踐任務(wù):嘗試使用面向?qū)ο?、STL,設(shè)計(jì)模式、和WindowsSDK圖形編程的各種技能做一個(gè)貪吃蛇或是俄羅斯方塊的游戲。支持不同的級(jí)別和難度。做一個(gè)文件瀏覽器,可以瀏覽目錄下的文件,并可以對(duì)不同的文件有不同的操作,文本文件可以打開(kāi)編輯,執(zhí)行文件則執(zhí)行之,mp3或avi文件可以播放,圖片文件可以展示圖片。學(xué)習(xí)C++的一些類庫(kù)的設(shè)計(jì),如:MFC(看看候捷老師的《深入淺出MFC》),Boost,ACE,CPPUnit,STL(STL可能會(huì)太難了,但是如果你能了解其中的設(shè)計(jì)模式和設(shè)計(jì)那就太好了,如果你能深入到我寫(xiě)的《STLstring類的寫(xiě)時(shí)拷貝技術(shù)》那就非常不錯(cuò)了,ACE需要很強(qiáng)在的系統(tǒng)知識(shí),參見(jiàn)后面的“加強(qiáng)對(duì)系統(tǒng)的了解”)Java是真正的面向?qū)ο蟮恼Z(yǔ)言,Java的設(shè)計(jì)模式多得不能再多,也是用來(lái)學(xué)習(xí)面向?qū)ο蟮脑O(shè)計(jì)模式的最佳語(yǔ)言了(參看Java中的設(shè)計(jì)模式)。推薦閱讀《EffectiveJava》and《Java解惑》學(xué)習(xí)Java的框架,Java的框架也是多,如Spring,Hibernate,Struts等等,主要是學(xué)習(xí)Java的設(shè)計(jì),如IoC等。Java的技術(shù)也是爛多,重點(diǎn)學(xué)習(xí)J2EE架構(gòu)以及JMS,RMI,等消息傳遞和遠(yuǎn)程調(diào)用的技術(shù)。學(xué)習(xí)使用Java做WebService(官方教程在這里)實(shí)踐任務(wù):嘗試在Spring或Hibernate框架下構(gòu)建一個(gè)有網(wǎng)絡(luò)的WebService的遠(yuǎn)程調(diào)用程序,并可以在兩個(gè)Service中通過(guò)JMS傳遞消息。
C++和Java都不是能在短時(shí)間內(nèi)能學(xué)好的,C++玩是的深,Java玩的是廣,我建議兩者選一個(gè)。我個(gè)人的學(xué)習(xí)經(jīng)歷是:
深究C++(我深究C/C++了十來(lái)年了)學(xué)習(xí)Java的各種設(shè)計(jì)模式。
2、加強(qiáng)系統(tǒng)了解
重要閱讀下面的幾本書(shū):
《Unix編程藝術(shù)》了解Unix系統(tǒng)領(lǐng)域中的設(shè)計(jì)和開(kāi)發(fā)哲學(xué)、思想文化體系、原則與經(jīng)驗(yàn)。你一定會(huì)有一種醍醐灌頂?shù)母杏X(jué)。《Unix網(wǎng)絡(luò)編程卷1,套接字》這是一本看完你就明白網(wǎng)絡(luò)編程的書(shū)。重要注意TCP、UDP,以及多路復(fù)用的系統(tǒng)調(diào)用select/poll/epoll的差別。《TCP/IP詳解卷1:協(xié)議》-這是一本看完后你就可以當(dāng)網(wǎng)絡(luò)黑客的書(shū)。了解以太網(wǎng)的的運(yùn)作原理,了解TCP/IP的協(xié)議,運(yùn)作原理以及如何TCP的調(diào)優(yōu)。實(shí)踐任務(wù):理解什么是阻塞(同步IO),非阻塞(異步IO),多路復(fù)用(select,poll,epoll)的IO技術(shù)。寫(xiě)一個(gè)網(wǎng)絡(luò)聊天程序,有聊天服務(wù)器和多個(gè)聊天客戶端(服務(wù)端用UDP對(duì)部分或所有的的聊天客戶端進(jìn)Multicast或Broadcast)。寫(xiě)一個(gè)簡(jiǎn)易的HTTP服務(wù)器?!禪nix網(wǎng)絡(luò)編程卷2,進(jìn)程間通信》信號(hào)量,管道,共享內(nèi)存,消息等各種IPC……這些技術(shù)好像有點(diǎn)老掉牙了,不過(guò)還是值得了解。實(shí)踐任務(wù):主要實(shí)踐各種IPC進(jìn)程序通信的方法。嘗試寫(xiě)一個(gè)管道程序,父子進(jìn)程通過(guò)管道交換數(shù)據(jù)。嘗試寫(xiě)一個(gè)共享內(nèi)存的程序,兩個(gè)進(jìn)程通過(guò)共享內(nèi)存交換一個(gè)C的結(jié)構(gòu)體數(shù)組。學(xué)習(xí)《Windows核心編程》一書(shū)。把CreateProcess,Windows線程、線程調(diào)度、線程同步(Event,信號(hào)量,互斥量)、異步I/O,內(nèi)存管理,DLL,這幾大塊搞精通。實(shí)踐任務(wù):使用CreateProcess啟動(dòng)一個(gè)記事本或IE,并監(jiān)控該程序的運(yùn)行。把前面寫(xiě)過(guò)的那個(gè)簡(jiǎn)易的HTTP服務(wù)用線程池實(shí)現(xiàn)一下。寫(xiě)一個(gè)DLL的鉤子程序監(jiān)控指定窗口的關(guān)閉事件,或是記錄某個(gè)窗口的按鍵。有了多線程、多進(jìn)程通信,TCP/IP,套接字,C++和設(shè)計(jì)模式的基本,你可以研究一下ACE了。使用ACE重寫(xiě)上述的聊天程序和HTTP服務(wù)器(帶線程池)實(shí)踐任務(wù):通過(guò)以上的所有知識(shí),嘗試寫(xiě)一個(gè)服務(wù)端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁盤(pán)I/O和網(wǎng)絡(luò)I/O可能會(huì)很有問(wèn)題,想一想怎么解決,另外,請(qǐng)注意網(wǎng)絡(luò)傳輸最大單元MTU)了解BT下載的工作原理,用多進(jìn)程的方式模擬BT下載的原理。
3、系統(tǒng)架構(gòu)
負(fù)載均衡。HASH式的,純動(dòng)態(tài)式的。(可以到Google學(xué)術(shù)里搜一些關(guān)于負(fù)載均衡的文章讀讀)多層分布式系統(tǒng)–客戶端服務(wù)結(jié)點(diǎn)層、計(jì)算結(jié)點(diǎn)層、數(shù)據(jù)cache層,數(shù)據(jù)層。J2EE是經(jīng)典的多層結(jié)構(gòu)。CDN系統(tǒng)–就近訪問(wèn),內(nèi)容邊緣化。P2P式系統(tǒng),研究一下BT和電驢的算法。比如:DHT算法。服務(wù)器備份,雙機(jī)備份系統(tǒng)(Live-Standby和Live-Live系統(tǒng)),兩臺(tái)機(jī)器如何通過(guò)心跳監(jiān)測(cè)對(duì)方?集群主結(jié)點(diǎn)備份。虛擬化技術(shù),使用這個(gè)技術(shù),可以把操作系統(tǒng)當(dāng)應(yīng)用程序一下切換或重新配置和部署。學(xué)習(xí)Thrift,二進(jìn)制的高性能的通訊中間件,支持?jǐn)?shù)據(jù)(對(duì)象)序列化和多種類型的RPC服務(wù)。學(xué)習(xí)Hadoop。Hadoop框架中最核心的設(shè)計(jì)就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡(jiǎn)單的一句話解釋MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。HDFS是Hadoop分布式文件系統(tǒng)(HadoopDistributedFileSystem)的縮寫(xiě),為分布式計(jì)算存儲(chǔ)提供了底層支持。了解NoSQL數(shù)據(jù)庫(kù)(有人說(shuō)可能是一個(gè)過(guò)渡炒作的技術(shù)),不過(guò)因?yàn)槌笠?guī)模以及高并發(fā)的純動(dòng)態(tài)型網(wǎng)站日漸成為主流,而SNS類網(wǎng)站在數(shù)據(jù)存取過(guò)程中有著實(shí)時(shí)性等剛性需求,這使得目前NoSQL數(shù)據(jù)庫(kù)慢慢成了人們所關(guān)注的焦點(diǎn),并大有成為取代關(guān)系型數(shù)據(jù)庫(kù)而成為未來(lái)主流數(shù)據(jù)存儲(chǔ)模式的趨勢(shì)。當(dāng)前NoSQL數(shù)據(jù)庫(kù)很多,大部分都是開(kāi)源的,其中比較知名的有:MemcacheDB、Redis、TokyoCabinet(升級(jí)版為KyotoCabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
寫(xiě)了那么多,回顧一下,覺(jué)得自己相當(dāng)?shù)挠谐删透?。希望大家不要嚇著,我自己這十來(lái)年也在不斷地學(xué)習(xí),今天我也在學(xué)習(xí)中,人生本來(lái)就是一個(gè)不斷學(xué)習(xí)和練級(jí)的過(guò)程。不過(guò),一定有漏的,也有不對(duì)的,還希望大家補(bǔ)充和更正。(我會(huì)根據(jù)大家的反饋隨時(shí)更新此文)歡迎大家通過(guò)我的微博(@左耳朵耗子)和twitter(@haoel)和我交流。
—–更新2011/07/19—–
1)有朋友奇怪為什么我在這篇文章開(kāi)頭說(shuō)了web+移動(dòng),卻沒(méi)有在后面提到iOS/Android的前端開(kāi)發(fā)。因?yàn)槲倚睦镉幸环N感覺(jué),移動(dòng)設(shè)備上的UI最終也會(huì)被Javascript取代。大家可以用iPhone或Android看看google+,你就會(huì)明白了。
2)有朋友說(shuō)我這里的東西太多了,不能為了學(xué)習(xí)而學(xué)習(xí),我非常同意。我在文章的前面也說(shuō)了要思考。另外,千萬(wàn)不要以為我說(shuō)的這些東西是一些新的技術(shù),這份攻略里95%以上的全是基礎(chǔ)。而且都是久經(jīng)考驗(yàn)的基礎(chǔ)技術(shù)。即是可以讓你一通百通的技術(shù),也是可以讓你找到一份不錯(cuò)工作的技術(shù)。
3)有朋友說(shuō)學(xué)這些東西學(xué)完都40了,還不如想想怎么去掙錢(qián)。我想告訴大家,一是我今年還沒(méi)有40歲,二是學(xué)無(wú)止境啊,三是我不覺(jué)得掙錢(qián)有多難,難的是怎么讓你值那么多錢(qián)?無(wú)論是打工還是創(chuàng)業(yè),是什么東西讓你自己的價(jià)值,讓你公司的價(jià)值更值錢(qián)?別的地方我不敢說(shuō),對(duì)于互聯(lián)網(wǎng)或IT公司來(lái)說(shuō),技術(shù)實(shí)力絕對(duì)是其中之一。
4)有朋友說(shuō)技術(shù)都是工具,不應(yīng)該如此癡迷這句話沒(méi)有錯(cuò),有時(shí)候我們需要更多的是抬起頭來(lái)看看技術(shù)以外的事情,或者是說(shuō)我們?cè)谧骷夹g(shù)的時(shí)候不去思考為什么會(huì)有這個(gè)技術(shù),為什么不是別的,問(wèn)題不在于技術(shù),問(wèn)題在于我們死讀書(shū),讀死書(shū),成了技術(shù)的書(shū)呆子。
5)對(duì)于NoSQL,最近比較火,但我對(duì)其有點(diǎn)保守,所以,我只是說(shuō)了解就可以。對(duì)于Hadoop,我覺(jué)得其在分布式系統(tǒng)上有巨大的潛力,所以需要學(xué)習(xí)。對(duì)于關(guān)系型數(shù)據(jù)庫(kù),的確是很重要的東西,這點(diǎn)是我的疏忽,在原文里補(bǔ)充。
更新于5月20號(hào):感謝
黎九
的批評(píng),最近要考試沒(méi)空寫(xiě),有問(wèn)題到評(píng)論區(qū)問(wèn)我,更新幾個(gè)在知乎看的好答案
鏈接:
知乎上的程序員大V是怎么度過(guò)大學(xué)生活的?-藍(lán)色的回答
我的大學(xué),其實(shí)接觸到的東西有很多,但是我自己踏踏實(shí)實(shí)掌握好的,就那么幾門(mén)基礎(chǔ)課,語(yǔ)言就C,C++和Java。但是很遺憾的是,似乎現(xiàn)在已經(jīng)很少用Java了,主要都是在用C++了,偶爾會(huì)用Python爬爬蟲(chóng)分析一些有趣的數(shù)據(jù),同時(shí)幫助我做一些有趣的,重復(fù)的事情。等我最近忙完了,我想把一些有用的東西分享出來(lái),但是我也不知道大家是不是也需要我這些東西,但是我覺(jué)得也算一種交流吧,而且或許有人需要呢?
在大學(xué)中,我覺(jué)得我掌握的比較好的是操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu)與算法課程,計(jì)算機(jī)網(wǎng)絡(luò)和計(jì)算機(jī)體系結(jié)構(gòu)都算熟悉吧,數(shù)據(jù)庫(kù)我覺(jué)得我只是皮毛水平,真是很慚愧,而編譯課程我是屬于研究生再認(rèn)真踏實(shí)學(xué)了一下,然后在實(shí)際工作中再慢慢加強(qiáng)。但是,我覺(jué)得這幾門(mén)課程都是應(yīng)該好好掌握的,這些課程在后面其實(shí)都是很有用的。
操作系統(tǒng)我當(dāng)時(shí)讀了兩本書(shū),一本是教材《OperatingSystemConcepts》(7thEdition)和ModernOperatingSystem,我覺(jué)得ModernOperatingSystem這本書(shū)會(huì)更加有趣,從文字也感覺(jué)作者也更加的自信,似乎在說(shuō)在OS領(lǐng)域,我什么沒(méi)有見(jiàn)過(guò),我就是最牛的大師,聽(tīng)我的沒(méi)錯(cuò)。而OperatingSystemConcepts這本書(shū)是比較傳統(tǒng)的國(guó)外教材味道,不能說(shuō)不好,但是我個(gè)人會(huì)更欣賞ModernOperatingSystem,我喜歡Tanenbaum這種自信。然后,在大學(xué)的時(shí)候,我做過(guò)一個(gè)小的操作系統(tǒng)內(nèi)核幫助我學(xué)習(xí)操作系統(tǒng),而我當(dāng)時(shí)也調(diào)研過(guò)很多國(guó)內(nèi)外高校的操作系統(tǒng)實(shí)驗(yàn),我非常推薦MIT的xv6,xv6也被國(guó)內(nèi)外很多高校采用。xv6的特點(diǎn)在于其遵循了UNIXVersion6,使用了很短的代碼完成了設(shè)計(jì),并且可以跑在Bochs和QEMU,然后看到效果。這是xv6的網(wǎng)站:
6.828/Fall2014
我強(qiáng)烈建議學(xué)操作系統(tǒng)的同學(xué),認(rèn)認(rèn)真真的做這些實(shí)驗(yàn),一定可以收獲非常多的東西。
數(shù)據(jù)結(jié)構(gòu)我學(xué)的很雜,其中一本是教材《
DataStructuresandProgramDesigninC++(豆瓣)
》,這本書(shū)我覺(jué)得習(xí)題很有價(jià)值,若能認(rèn)認(rèn)真真理解并且完成,我覺(jué)得基本上就夠了,但是我自己當(dāng)時(shí)也做的不夠好,這是我很遺憾的事情,現(xiàn)在也發(fā)現(xiàn)還是大學(xué)有更多的時(shí)間靜下心來(lái)讀書(shū)與研究,工作以后無(wú)論怎么擠時(shí)間都不如大學(xué)那么多了。而我也還讀了很多雜七雜八的數(shù)據(jù)結(jié)構(gòu)與算法書(shū)籍,但是如果要我回過(guò)頭來(lái)看,我覺(jué)得除了這本教材,再加上算法導(dǎo)論彌補(bǔ)教材缺失的算法部分,我覺(jué)得就完全夠了。
編譯原理這一塊,我當(dāng)時(shí)用的是虎書(shū)學(xué)習(xí)的,但是現(xiàn)在我覺(jué)得《EngineeringaCompiler》(2ndEdition)更合適,若不是專門(mén)去開(kāi)發(fā)編譯器,我覺(jué)得這本書(shū)就夠了。而如果是專門(mén)開(kāi)發(fā)編譯器,或許還有很多需要學(xué)習(xí),這里就不列舉了,因?yàn)槲矣X(jué)得我也還有很多不足,需要學(xué)習(xí)的地方。
C++這一塊,我覺(jué)得算我比較強(qiáng)的一塊,也是我最感興趣的一塊,這種興趣是比編譯器更強(qiáng)烈的。我2008年9月11日,大一第一天拿到的第一本書(shū)就是C++語(yǔ)言的教科書(shū),所以這似乎猶如一種情結(jié)一樣。當(dāng)時(shí)的教材名叫《
C++ProgramDesign
》,雖然以我現(xiàn)在的觀點(diǎn)來(lái)看,這本書(shū)我不再推薦了,因?yàn)榇_實(shí)太老了,而且的確也有很多不足的地方,但是在我心目中的確有特殊的地位。而若現(xiàn)在是新學(xué)C++的同學(xué),我覺(jué)得AcceleratedC++,Programming:PrinciplesandPracticeUsingC++,C++Primer等都算比較好的書(shū)籍,而有關(guān)學(xué)習(xí)C++的書(shū)籍的回答也太多了,我就不再贅述了,而唯一要強(qiáng)調(diào)的是《TheDesignandEvolutionofC++》這本書(shū)一定要讀!
而大學(xué)中,我也的確接觸到了很多應(yīng)用層的東西,JavaEE,Android等,我也去實(shí)際開(kāi)發(fā)過(guò)項(xiàng)目接觸,但是從我的體會(huì)來(lái)看,我還是覺(jué)得最重要的是那些基礎(chǔ)課程,若可以給我再回一次大學(xué)的機(jī)會(huì),我依然會(huì)去好好學(xué)習(xí)這些基礎(chǔ)課程,并且學(xué)的更好,然后研究我喜歡的C++。這就是我的一些經(jīng)驗(yàn)和感想吧,僅供參考了。
(而在大學(xué)中,或許也不止學(xué)習(xí),若能遇到合適的人,談一場(chǎng)戀愛(ài)也是極好的。學(xué)習(xí)書(shū)本長(zhǎng)的是技能,而TA給你長(zhǎng)的是人生)
你的程序員學(xué)習(xí)之路是怎樣的?你現(xiàn)在對(duì)于編程有哪些感想?-藍(lán)色的回答
大一上默默的坐在周?chē)母呤挚此麄兙幋a,然后有空就背書(shū)上的代碼,周六周日就去實(shí)驗(yàn)室敲,并且認(rèn)真做書(shū)上的習(xí)題;
大一下可以根據(jù)一些想法編碼了,然后開(kāi)始看更多的一些書(shū),享受到了程序帶來(lái)的一些小快樂(lè);
大二上開(kāi)始接觸更多計(jì)算機(jī)的相關(guān)課程,開(kāi)始覺(jué)得自己弱爆了,然后也感嘆計(jì)算機(jī)好神奇,然后開(kāi)始更加認(rèn)真的看書(shū),去理解計(jì)算機(jī);
大二下開(kāi)始接觸到數(shù)據(jù)結(jié)構(gòu)與算法,計(jì)算機(jī)組織結(jié)構(gòu)等東西,然后更加覺(jué)得計(jì)算機(jī)與程序的世界神奇無(wú)比,也開(kāi)始更加認(rèn)真的學(xué)習(xí),思考,編程;
大二暑假的時(shí)候,總結(jié)了兩年的所學(xué)所想,然后覺(jué)得自己“開(kāi)竅”了,編碼的能力與思維感覺(jué)與之前不同了;
大三上的時(shí)候,開(kāi)始接觸操作系統(tǒng)等課程,然后開(kāi)始嘗試把操作系統(tǒng)與之前所學(xué)的知識(shí),如程序語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)與算法等也結(jié)合起來(lái),開(kāi)始更加深層次的理解程序;
大三下的時(shí)候,把所有學(xué)習(xí)的東西融會(huì)貫通,開(kāi)始覺(jué)得可以以更高層次的角度看到計(jì)算機(jī)與程序了,編碼也更加自信了;而在大三下項(xiàng)目實(shí)訓(xùn)的時(shí)候,也做出了一個(gè)MMORPG的類似游戲,震驚了同學(xué)與老師,并給研究生開(kāi)了一次講座,講解了我在這個(gè)游戲中所應(yīng)用到的技術(shù);因?yàn)閷I(yè)方向沒(méi)有開(kāi)設(shè)編譯原理課程,就去旁聽(tīng)了編譯原理課程,覺(jué)得編譯原理給了自己對(duì)程序語(yǔ)言洗心革面的認(rèn)識(shí);
大三暑假的時(shí)候,申請(qǐng)了浙大CAD&CG國(guó)家重點(diǎn)實(shí)驗(yàn)室,申請(qǐng)導(dǎo)師是鮑虎軍,要求兩周內(nèi)實(shí)現(xiàn)泊松融合,然后我一周內(nèi)實(shí)現(xiàn)后,得到了實(shí)驗(yàn)室的左邊offer右邊,不過(guò)最后陰差陽(yáng)錯(cuò)錯(cuò)過(guò)了,但還是保送到浙大去了;
大四上的時(shí)候,當(dāng)了學(xué)院的C++助教,希望可以幫助學(xué)弟學(xué)妹少走彎路,可以以最淺顯易懂的方式教他們C++程序,這段經(jīng)歷我很快樂(lè);在大四上這段空閑時(shí)間,看了很多的計(jì)算機(jī)書(shū)籍,更加愛(ài)上了看書(shū)的快樂(lè);而也確定了畢業(yè)設(shè)計(jì)做一個(gè)小型的操作系統(tǒng)內(nèi)核,可以更加理解操作系統(tǒng);
大四寒假到大四下,全心做了畢業(yè)設(shè)計(jì),答辯老師似乎沒(méi)有聽(tīng)懂,不過(guò)給了優(yōu)秀;
研一上的時(shí)候,開(kāi)始想自己最擅長(zhǎng)與最喜歡的是什么,本科除了學(xué)習(xí),也做了很多雜七雜八的東西,包括AndroidAPP,操作系統(tǒng)等,最后覺(jué)得自己在編譯和語(yǔ)言方面可能更感興趣,于是開(kāi)始重新看編譯原理,思考編譯;
研一下的時(shí)候,IBM來(lái)學(xué)院進(jìn)行實(shí)習(xí)招聘,筆試與面試拿了第一名,編譯團(tuán)隊(duì)的經(jīng)理說(shuō)有可能能見(jiàn)到Bjarne這樣的大牛人物(我天真的相信了),放棄了思科美國(guó)的國(guó)際實(shí)習(xí)生,來(lái)了IBM編譯團(tuán)隊(duì)實(shí)習(xí);
13年5月開(kāi)始實(shí)習(xí)與后面工作時(shí),看了很多的編譯資料,自己如海綿一樣的每天吸收很多知識(shí),搞清楚了很多以前不懂的地方,對(duì)編譯器和C++有了更深的認(rèn)識(shí),并且組內(nèi)C++標(biāo)準(zhǔn)委員會(huì)成員祖籍是華人的原因,對(duì)我們中國(guó)區(qū)格外關(guān)照,于是也參與到了最新C++標(biāo)準(zhǔn)提案的討論,從慢慢的旁聽(tīng)到后面可以提意見(jiàn)以及分享,收獲頗豐,而也因?yàn)檫@段經(jīng)歷,確定了研究生畢業(yè)題目與編譯器相關(guān);
在14年6月份研究生畢業(yè)答辯時(shí),評(píng)審老師被我震驚了,覺(jué)得很不可思議,其實(shí)當(dāng)時(shí)自己也挺激動(dòng)的,說(shuō)因?yàn)橛泻芏啻笈瓦^(guò)我,他們比我更厲害,自己也更加意識(shí)到了有大牛才能帶來(lái)的飛翔感覺(jué)。而在14年底,也到某公司進(jìn)行了C++11的技術(shù)演講,開(kāi)始分享自己的所學(xué)所得,反饋很好,自己也很開(kāi)心自己的東西可以讓他人也受益,在今年也參與到了書(shū)籍深入理解C++11新版本的編寫(xiě),負(fù)責(zé)C++標(biāo)準(zhǔn)庫(kù)章節(jié)的編寫(xiě)與整體的編輯潤(rùn)色,我想可以與更多的人分享所學(xué)所得。
編程感想:努力就會(huì)有收獲,但是一路走下來(lái),覺(jué)得自己也很幸運(yùn),得到了很多大牛的幫助,而看得越多,見(jiàn)得越多,越覺(jué)得自己不會(huì)的很多,還有很長(zhǎng)的路要走。所以現(xiàn)在每天都會(huì)學(xué)習(xí)到很晚;而建議就是初期可以學(xué)習(xí)書(shū),自學(xué)為主(有大牛帶是最好的),后期需要結(jié)識(shí)各種大牛,帶自己各種裝逼各種飛,眼界可以有非常大的提升,可以抵自己N年的自學(xué)彎路,而也不能忘記書(shū)籍,因?yàn)楹芏鄷?shū)籍的作者是神牛。
結(jié)尾小干貨:用淘寶買(mǎi)書(shū),美國(guó)幾百塊的書(shū)這里統(tǒng)統(tǒng)幾十塊
關(guān)注一下42碼農(nóng)學(xué)院
【未完】
其實(shí)年齡不是問(wèn)題。這個(gè)就不多說(shuō)了,其他答案說(shuō)得很對(duì)。我覺(jué)得你有這幾個(gè)問(wèn)題要仔細(xì)思考一下:
1、你自己想不想做IT?喜不喜歡IT行業(yè)的工作?這個(gè)你要先想清楚。
2、單純從“行業(yè)收入”來(lái)選行業(yè),風(fēng)險(xiǎn)是非常大的。當(dāng)然,現(xiàn)在IT行業(yè)的工資非??捎^,但十年之后呢?當(dāng)你可以自豪的在簡(jiǎn)歷上寫(xiě)著“十年IT開(kāi)發(fā)工作經(jīng)驗(yàn)”的時(shí)候,說(shuō)不定IT行業(yè)的泡泡已經(jīng)破了——你看就今年年底,互聯(lián)網(wǎng)就涼了一波。因?yàn)橐粋€(gè)行業(yè)的收入高,就必然吸引很多其他行業(yè)的人涌入,從而拉低行業(yè)工資水平。你看,現(xiàn)在“三百六十行,行行轉(zhuǎn)IT”,是不是就是這樣?
3、我一直給“野生程序猿”吶喊加油,只是因?yàn)檫@條路很難!大家千萬(wàn)不要搞錯(cuò)了,以為我是在鼓勵(lì)大家都去轉(zhuǎn)行做程序員。這條路真的很難,如果不是因?yàn)槟闾貏e喜歡編程,或者特別憎恨現(xiàn)在的工作/專業(yè),我很懷疑你能走得下去,或者走得更好。
我突然就想起來(lái),我剛?cè)胄械哪菚?huì)兒,經(jīng)常在CSDN里面逛,經(jīng)常聽(tīng)到有人吼著“要轉(zhuǎn)行”——注意,是轉(zhuǎn)行不干程序員,而不是知乎的轉(zhuǎn)行干程序員。當(dāng)年帶我的teamleader說(shuō)我:“所以你傻??!好好的律師不干,來(lái)和我們搶飯碗……”他如果能考過(guò)司法資格考試,一定會(huì)做律師,不做程序員的。
本來(lái)想給你說(shuō)說(shuō)做程序員怎么難的。但“鞋子合適不合適,只有腳知道”,這個(gè)得你自己體會(huì),同一件事,不同的人體會(huì)都不一樣。最終還是得你自己試一下才行。當(dāng)然這樣就會(huì)有試錯(cuò)成本,我知道,但這就是人生,很無(wú)奈。
Followyourheart,真的非常重要。
活在當(dāng)下,才是最重要的!我們很多人,都會(huì)幻想一個(gè)美好的明天。我要是有了錢(qián)就怎么怎么好了,然后為了這個(gè)目標(biāo)犧牲很多東西,健康、家人,以及每一天快樂(lè)的心情,但是,就算你真的到了那一天——當(dāng)然,很多人根本到不了這一天,更慘,略過(guò)吧,人艱不拆——你老了、病了、累了……所有你獲得的,原來(lái)完全沒(méi)有意義。
我是這樣勸別人的:做你喜歡做的事情,而不是看起來(lái)有更大幾率成功的事情。那么,假如你成功了,OK,完美;假設(shè)你沒(méi)有成功(這其實(shí)是大概率事件),沒(méi)關(guān)系,你每一天都很開(kāi)心,你開(kāi)開(kāi)心心地過(guò)完了一輩子,也夠啦,是不是?
更何況,只有一種成功:按自己喜歡的方式,過(guò)完一生。
+++++++++++++
最后很煞風(fēng)景的加個(gè)推廣,兩個(gè)QQ群:
飛哥辦了一個(gè)IT培訓(xùn)班,全棧開(kāi)發(fā),線上全程直播,可以免費(fèi)收看;線下拎包入住,按周收費(fèi)。如果你有興趣了解一下,可以加QQ群:(一起幫·源棧·有意向)另外一個(gè)QQ群:(一起幫·老碼農(nóng)-4),也不說(shuō)啥交流啦,就吹牛灌水,老碼農(nóng)小菜鳥(niǎo)打發(fā)時(shí)間聊聊天,O(∩_∩)O~
前段時(shí)間蛋哥在逛知乎時(shí)(刷知乎一時(shí)爽,一直刷一直爽),發(fā)現(xiàn)了這樣一個(gè)相似的問(wèn)題:26歲開(kāi)始學(xué)編程晚了嗎?
emmm,恭喜你比他還年輕一歲。
在這個(gè)問(wèn)題下面,很多答主都從技術(shù)和自身學(xué)習(xí)經(jīng)驗(yàn)的角度給出了非常優(yōu)質(zhì)的回答。但其中一條,雖只有寥寥幾字,卻直擊我的內(nèi)心。
看到這個(gè)回答的第一眼,我是嗤之以鼻的,多雞湯啊,說(shuō)起容易做起難??苫仡^想想,他的觀點(diǎn)和其他那些對(duì)此問(wèn)題進(jìn)行長(zhǎng)篇論述的答主的觀點(diǎn)是一樣的,無(wú)非都是:想到就去做,馬上開(kāi)始,這個(gè)才最重要。
一味的問(wèn)晚不晚,顯然毫無(wú)意義。
很多想轉(zhuǎn)行IT的人,內(nèi)心都會(huì)思考這樣的問(wèn)題:“現(xiàn)在才學(xué)編程,晚么?”
而我要告訴大家的是:學(xué)習(xí)編程,任何時(shí)間都不晚。
圖片來(lái)自網(wǎng)絡(luò),侵刪!
01.工資。
我一直認(rèn)為,不看工資的崗位純屬耍流氓。如果你關(guān)注每年的薪資排行榜,或者去一些招聘網(wǎng)站做一下調(diào)研,你就會(huì)發(fā)現(xiàn)金融和IT行業(yè)的薪資基本穩(wěn)居前二。
比較有意思的是,哪怕薪資排行第一的金融行業(yè),也離不開(kāi)互聯(lián)網(wǎng)。而IT是互聯(lián)網(wǎng)中最不可或缺的主要部分,編程又是IT領(lǐng)域最核心的崗位。所以,編程的平均薪資是秒殺其他行業(yè)的。
02.前景。
大家一定感受到了互聯(lián)網(wǎng)給我們生活帶來(lái)的巨大變化。尤其是近一兩年,移動(dòng)支付、共享單車(chē)、外賣(mài)訂餐等等,完全改變了我們的生活方式和消費(fèi)習(xí)慣。
我們也逐漸發(fā)現(xiàn),任何行業(yè)都離不開(kāi)互聯(lián)網(wǎng),大到國(guó)家政務(wù),小到街邊一個(gè)燒烤攤,互聯(lián)網(wǎng)儼然已經(jīng)成了這個(gè)時(shí)代的一種基礎(chǔ)設(shè)施。
雖然互聯(lián)網(wǎng)經(jīng)歷過(guò)PC和移動(dòng)時(shí)代,但是從大的周期來(lái)看,互聯(lián)網(wǎng)這才剛剛開(kāi)始。
現(xiàn)在互聯(lián)網(wǎng)大多是在一些一線和準(zhǔn)一線城市快速發(fā)展。在我們那些四五線城市根本很難找到互聯(lián)網(wǎng)相關(guān)的崗位,十七八線城市更不用提了。
但是未來(lái),互聯(lián)網(wǎng)會(huì)滲透每個(gè)行業(yè),進(jìn)入到縣城、鄉(xiāng)鎮(zhèn)、乃至農(nóng)村。
未來(lái)人工智能、物聯(lián)網(wǎng)、智能家居、無(wú)人駕駛等等,都將是改變?nèi)祟惖拇髸r(shí)代,互聯(lián)網(wǎng)也必將繼續(xù)影響著我們的衣食住行。
03.選擇。
雖說(shuō)互聯(lián)網(wǎng)前景無(wú)限,但是編程也分方向,所以很多轉(zhuǎn)行者都會(huì)擔(dān)心自己學(xué)的方向是否會(huì)被淘汰。
說(shuō)句極限的,哪怕你現(xiàn)在學(xué)習(xí)一個(gè)最冷門(mén)的編程語(yǔ)言,從事一個(gè)最低端的編程工作,也比其他傳統(tǒng)行業(yè)起點(diǎn)高,我們知道編程行業(yè)起薪1W(北上廣深等一線城市的標(biāo)準(zhǔn))都不好意思說(shuō)出口,但在很多行業(yè),想月薪達(dá)到1W,都得熬上好幾年。
技術(shù)更新?lián)Q代很快,編程語(yǔ)言也有火熱與低潮的時(shí)候,但技術(shù)是通的,當(dāng)你掌握了一門(mén)語(yǔ)言,你再學(xué)習(xí)一門(mén)新的語(yǔ)言時(shí)要容易的多。
比如:
享受到移動(dòng)互聯(lián)網(wǎng)時(shí)代第一批紅利的,往往是最早的PC時(shí)代開(kāi)發(fā)者,他們深處這個(gè)行業(yè),對(duì)一些方向會(huì)更敏感,學(xué)習(xí)新東西也比外人更容易,在新趨勢(shì)到來(lái)之前,他們會(huì)更快的感知。
所以,當(dāng)你想學(xué)編程,不用糾結(jié)太多,不管是Java、Python還是Android、iOS,只要開(kāi)始行動(dòng),遠(yuǎn)比你在外面觀望、糾結(jié)有用的多。
04.未來(lái)。
浙江、北京、山東等地已將編程納入高考范圍。在這個(gè)技術(shù)驅(qū)動(dòng)的互聯(lián)網(wǎng)時(shí)代,學(xué)習(xí)編程也不完全是為了做程序員。
編程慢慢的將不在是某項(xiàng)職業(yè)技能,而會(huì)成為人人必備的通用技能,就像30年前學(xué)開(kāi)車(chē)不是為了成為專職司機(jī),20年前學(xué)英語(yǔ)不是為了成為翻譯一樣。
另外,當(dāng)你學(xué)了編程之后,你的思維會(huì)受到很大影響。
編程是一門(mén)講究邏輯、講究工程化的工作,做事不會(huì)浮夸,更不會(huì)有一些不切實(shí)際的想法,做事會(huì)更貼近實(shí)際,思維會(huì)更縝密。
最重要的是,編程是一門(mén)不講究背景關(guān)系,靠實(shí)力說(shuō)話的職業(yè),而且是跟機(jī)器打交道,對(duì)于一些討厭跟復(fù)雜的人心打交道的人來(lái)說(shuō),無(wú)疑是一個(gè)最佳選擇。
當(dāng)然,寫(xiě)這篇文章,不是想奉勸大家都去學(xué)編程,畢竟任何行業(yè)干的好都有不錯(cuò)的發(fā)展前途。我只是想告訴那些對(duì)編程感興趣,打算學(xué)編程,或者有轉(zhuǎn)行開(kāi)發(fā)念頭的人們,不用擔(dān)心編程的的前景以及學(xué)習(xí)時(shí)機(jī)。
學(xué)習(xí)編程,任何時(shí)候都不晚。
但你本身是否對(duì)編程感興趣,是否具備編程的基本素養(yǎng),是否有持續(xù)學(xué)習(xí)的決心,決定著你能在編程這個(gè)道路上走多遠(yuǎn),達(dá)到怎么的一種成就!
大專畢業(yè)25歲想轉(zhuǎn)行學(xué)編程有什么來(lái)不及的,只要自己有興趣,完全是可以的,而且以題主為了賺錢(qián)的目的來(lái)看,這個(gè)年紀(jì)和學(xué)歷都是夠的,沒(méi)什么問(wèn)題。只是想要找份工作的話,要注意下自己對(duì)技術(shù)的掌握和運(yùn)用情況,自己的能力不錯(cuò),才有就業(yè)的機(jī)會(huì)。
這幾年也不是沒(méi)有人轉(zhuǎn)行學(xué)編程,像Java和前端都是比較熱門(mén)的,但能力不好的,也是沒(méi)有立足之地的,但能力好,經(jīng)驗(yàn)豐富的人,不僅能順利轉(zhuǎn)行,薪資也不低,像我朋友當(dāng)時(shí)學(xué)完Java之后,薪資過(guò)萬(wàn),情況很不錯(cuò)的。
題主要是想學(xué)好編程,也可以考慮下報(bào)班學(xué)習(xí),機(jī)構(gòu)挺多的,自己可以多家對(duì)比,找家?guī)熧Y好,教學(xué)質(zhì)量高的機(jī)構(gòu)幫助自己掌握技術(shù)會(huì)比較不錯(cuò)。只是有些線下機(jī)構(gòu)會(huì)夸大宣傳,自己要多注意下實(shí)際情況,可以了解下試聽(tīng)課的情況。
還有一些選機(jī)構(gòu)需要注意的點(diǎn),也可以根據(jù)這篇指南去了解看看,都是有一定幫助的
小白必讀,入行IT選擇機(jī)構(gòu)避坑指南