計(jì)算機(jī)還能選嗎,YYDS?
高考結(jié)束了,再過一周就是,前兩年高考填志愿那一個(gè)月,知乎上問專業(yè)最多的就是計(jì)算機(jī)了,可見火爆程度,不過今年風(fēng)向似乎變了,最近就有高三的同學(xué)在知乎向我提問:
對(duì)于計(jì)算機(jī)、編程感興趣的同學(xué)我覺得還是可以選擇的,計(jì)算機(jī)不止是互聯(lián)網(wǎng),還有廣闊的應(yīng)用場(chǎng)景。
回想起我大學(xué)的時(shí)候,整個(gè)大一幾乎都是都是在懵懂的狀態(tài)下度過的,究其原因就是沒適應(yīng)大學(xué)的學(xué)習(xí)節(jié)奏,不知道怎么學(xué)CS,更不知道自己未來的出路有哪些選擇。
我本科就讀于國(guó)內(nèi)某985 軟件學(xué)院,是 35 所示范性軟院之一,學(xué)院每年都有一個(gè)傳統(tǒng)節(jié)目「軟件之英」,就是每年 6 月畢業(yè)季都會(huì)評(píng)選一些在讀研、工作、出國(guó)等幾個(gè)方向做得還不錯(cuò)的同學(xué),來給學(xué)弟學(xué)妹們分享他們的大學(xué)四年的一些經(jīng)驗(yàn)。
我從大一到大三每次都會(huì)去聽,每次都受益匪淺,所以在開學(xué)之際,想寫點(diǎn)東西給計(jì)算機(jī)、軟件學(xué)院的學(xué)弟學(xué)妹們,正好在網(wǎng)上看到一篇好文分享給大家:
我覺得本科就是要學(xué)習(xí)基礎(chǔ)知識(shí),學(xué)軟件首先需做到兩點(diǎn):
第一、熟練掌握(精通)一門編程語言;
第二、熟練掌握算法。
做到這兩點(diǎn),你本科畢業(yè)就能找到不錯(cuò)的工作了。對(duì)于找工作,j2ee跟.net都是錦上添花的東西,利用大三的選修課,或者大三的暑假學(xué)學(xué),大專生都只學(xué)三個(gè)月的技術(shù),難道要學(xué)四年嗎?切不可本末倒置,得了芝麻,丟了西瓜。
大學(xué)畢業(yè)的時(shí)候,有的拿著好幾個(gè)大公司 offer,而有的連個(gè)工作也找不到。
造成這些差距的原因是什么?
我覺得主要在課后。大家都一起上課,你能學(xué)到的別人也能學(xué)到,而且,紙上得來終覺淺,絕知此事要躬行。課后花的功夫就形成了的差距。大學(xué)里,老師只負(fù)責(zé)教好自己的課,你課后干什么沒人約束,所以,一定要安排好自己課后時(shí)間。
那么,這篇文章會(huì)告訴怎么安排課后的時(shí)間。
另外,編程高手都是喜歡看書的。一定要看經(jīng)典、有營(yíng)養(yǎng)的書,別看垃圾書。選擇書籍的時(shí)候,你可去豆瓣網(wǎng)看看書評(píng),買好書才能節(jié)約你的時(shí)間,看了垃圾書浪費(fèi)時(shí)間,如果不知道如何去看那些大黑書,可以看下這篇文章看書的小建議
建議多看國(guó)外計(jì)算機(jī)名校的課程和教材,國(guó)內(nèi)的好書不多;編程高手一定是喜歡動(dòng)手的,課后多參加編程活動(dòng)。李開復(fù)曾建議計(jì)算機(jī)學(xué)生大學(xué)本科四年,應(yīng)該寫 10w+ 行代碼。
不少學(xué)校的計(jì)算機(jī)&軟件學(xué)院教學(xué)大綱的陳舊,喜歡教一些大而空的東西。軟件學(xué)院教一些諸如軟件工程的東西,對(duì)編程沒有太多實(shí)際的幫助(至少以本科生的水平來看,吸收不了那么多)。計(jì)算機(jī)領(lǐng)域的有點(diǎn)難度、有技術(shù)含量的東西可能并不會(huì)教給你。
第二、喜歡重點(diǎn)教一些工具的使用。比如 asp .net。這些都是招式,不是內(nèi)功。我覺得,本科階段學(xué)習(xí)一定是以計(jì)算機(jī)基礎(chǔ)為核心的。
第三、對(duì)學(xué)生的定位,學(xué)院把教學(xué)重點(diǎn)放在 web 編程上,培養(yǎng)了大量的web程序員。這些不是不能教,我的意思是,不能當(dāng)做重點(diǎn)來教,我曾經(jīng)也是學(xué)過j2ee的。
如果你想從事更的軟件編程工作,對(duì)自己的要求就不能太低哦。所以,我寫這篇文章主要目的是勸你往高層次看齊,做高端的軟件工程師,比如:算法設(shè)計(jì),數(shù)據(jù)挖掘,圖像處理,網(wǎng)絡(luò)應(yīng)用,游戲編程,計(jì)算機(jī)安全,分布式系統(tǒng)設(shè)計(jì),嵌入式系統(tǒng)之類的,這些要求對(duì)計(jì)算機(jī)的理解更深。
好吧,開始我的建議吧。
你大一、大二很閑嗎?
是的話就太危險(xiǎn)了。我覺得這是你能不能成為編程高手的關(guān)鍵時(shí)期哦。如果你用兩年的時(shí)間都沒喜歡上編程,以后也很難喜歡上。
這是你訓(xùn)練編程能力的最佳時(shí)期,大三再來練習(xí),時(shí)間就有點(diǎn)短。如果你有大把的時(shí)間,并且迫切希望知道怎么做的話,下面的內(nèi)容就是回答你的問題的。
精通一門編程語言
大一是肯定學(xué)編程語言的,不管學(xué)的是哪門語言,都要做到精通(這里指非常熟練,而不是語言律師級(jí)的精通)。精通一門就好了,開始的時(shí)候別想學(xué)太多,這樣對(duì)你掌握語言反而不好。我建議你學(xué)C++,因?yàn)槲覍W(xué)這個(gè),嘿嘿。學(xué)習(xí)C++,主要是學(xué)習(xí)面向?qū)ο蟮乃枷耄€有要清楚C++是如何分配內(nèi)存的,以及派生,多態(tài),重載,虛函數(shù),構(gòu)造析構(gòu),STL等,特別關(guān)注內(nèi)存泄露。如果是入門學(xué)習(xí)的話,建議你看看書籍《Essential C++》,《C++ Primer》,然后再去讀讀《C++編程思想》,《Effective C++》,《深入理解C++對(duì)象模型》,《設(shè)計(jì)模式》這幾本書,編程環(huán)境建議使用Linux上的GCC。
如果你是想做java程序員的話,java就簡(jiǎn)單許多了,經(jīng)典的書籍也很多,比如《Java編程思想》,自己網(wǎng)上搜一搜吧。
當(dāng)然,大一你可能還會(huì)學(xué)其它東西,但是精通一門編程語言是你最重要的任務(wù)。
算法是軟實(shí)力的體現(xiàn)
大二的時(shí)候,該學(xué)數(shù)據(jù)解構(gòu)和算法了吧。軟件學(xué)院的學(xué)生,常號(hào)稱自己動(dòng)手能力強(qiáng),真的強(qiáng)嗎?你聽說過ACM競(jìng)賽嗎?如果想證明自己動(dòng)手能力強(qiáng),就該去參加這個(gè)程序競(jìng)賽。搞.net,只會(huì)拖控件這也叫動(dòng)手能力強(qiáng)?想想自己本科那會(huì)真是天真啊。
程序=數(shù)據(jù)解構(gòu)+算法,這個(gè)著名的公式在很多計(jì)算機(jī)編程書籍里都出現(xiàn)了。可能你很多師兄還告訴你,算法不實(shí)用,畢業(yè)之后用不著,對(duì)于一般的編碼人員的確是很少用到。但是,你想做到高級(jí)軟件工程師,這些都是你默認(rèn)要擅長(zhǎng)的哦。還有,越好的公司,對(duì)這個(gè)要求就越高。本科、研究生畢業(yè)能直接進(jìn)微軟,百度的,都是算法的高手。
如果你用大二一年的時(shí)間去參加ACM競(jìng)賽,這絕對(duì)對(duì)你的職業(yè)生涯產(chǎn)生不可估量的影響。如果你基礎(chǔ)好,應(yīng)該從大一的下學(xué)期就參加。最好經(jīng)常去北大,浙大的ACM網(wǎng)站做題。買幾本算法書,如果是入門級(jí)別,給你推薦的書籍有:《數(shù)據(jù)解構(gòu)與算法C++描述》,《算法競(jìng)賽入門經(jīng)典》(劉汝佳),《編程珠璣》,提高的書籍有:《算法藝術(shù)與信息學(xué)競(jìng)賽》(劉汝佳、黃亮),《實(shí)用算法的分析與程序設(shè)計(jì)》(吳文虎、王建德)。這些書在書店或者當(dāng)當(dāng)網(wǎng)上都可以買到。如果你周圍的同學(xué)有對(duì)編程感興趣的,可以一起報(bào)名參賽ACM,這個(gè)比賽是三個(gè)人一組的。如果你大一大二不是很忙,又沒有參加這個(gè)比賽來鍛煉自己,確實(shí)有些可惜。
觀察清華,上交,浙大,北大這些計(jì)算機(jī)名校,每年都有本科生在國(guó)際的ACM比賽中拿獎(jiǎng)。在北大軟件學(xué)院讀研究生,我了解到北大計(jì)算機(jī)的本科生有很多都參加這個(gè)比賽,基本上每個(gè)學(xué)期都舉行全校級(jí)別的比賽。北大計(jì)算機(jī)也開了ACM的相關(guān)培訓(xùn)課程,所以北大計(jì)算機(jī)本科生的算法實(shí)力都非同一般啊。清華計(jì)算機(jī)的吳文虎老師是國(guó)家ACM競(jìng)賽的教練,上海交大計(jì)算機(jī)也有專門的ACM培訓(xùn)班,今年浙大是ACM競(jìng)賽世界冠軍。這說明,這些計(jì)算機(jī)名校都很看重算法吧。雖說算法不是計(jì)算機(jī)的一切,但是反應(yīng)了這些院系學(xué)生的“軟實(shí)力”,這跟各個(gè)學(xué)校的軟件學(xué)院一比,軟件學(xué)院的學(xué)生便顯得“軟實(shí)力”不夠了。
在大一大二,計(jì)算機(jī)的基礎(chǔ)課要好好學(xué)的,比如數(shù)據(jù)庫,離散數(shù)學(xué)(學(xué)學(xué)組合數(shù)學(xué)),編譯原理,操作系統(tǒng)原理(建議學(xué)學(xué)Linux),計(jì)算機(jī)圖形學(xué)等,都是不錯(cuò)的課程。我本科那會(huì),學(xué)院不很重視計(jì)算機(jī)硬件的教學(xué),這不利于編程能力的提高。如果你的本科學(xué)院也不夠重視,建議你大二的時(shí)候自己去鉆研,推薦你看《深入理解計(jì)算機(jī)系統(tǒng)》這本書,里面介紹了很多淺顯的硬件知識(shí),世界上很多計(jì)算機(jī)名校都教這本書。
大二可能會(huì)學(xué)很多專業(yè)基礎(chǔ)課,但是算法是重中之重。
為找工作積累技術(shù)
大三是專業(yè)課集中的一年吧。《軟件工程》的本本是要讀一下的,不過別報(bào)太高期望,以本科生的見識(shí)和功底很難吸收其精華,但是里面的方法論可以拿來讀讀,以后慢慢體會(huì)吧。可以讀一讀《人月神話》,《代碼大全》,這都是軟件工程領(lǐng)域巔峰之作。
如果你打算畢業(yè)之后做一個(gè)java程序員,你可以學(xué)學(xué)j2ee(主要是MVC架構(gòu)),現(xiàn)在的參考書真多,我也就不推薦了。當(dāng)然,你還得學(xué)學(xué)各個(gè)開源的框架,比較流行的有Hibernate,Spring,Struts,最好研究一下這些框架的源碼(選一個(gè)來研究)。我本科那會(huì)流行這些,我好幾年不搞這個(gè)了。
如果是想做.net程序員,那就簡(jiǎn)單多了,熟悉各個(gè)控件的使用。
你可能還得補(bǔ)充一些其他知識(shí):比如html,javascript,ajax(jquery),css之類的;Linux服務(wù)器的搭建,Shell、Python腳本編程,mysql數(shù)據(jù)庫安裝備份,apache服務(wù)器、網(wǎng)絡(luò)管理等。比較高級(jí)的一些還包括:分布式圖片服務(wù)器設(shè)計(jì),數(shù)據(jù)挖掘等。還是要看很多書,寫很多程序,別限制自己的眼界,這里面有很多值得研究的課題,比如如何架構(gòu)一個(gè)圖片分享的網(wǎng)站等。
如果你還是堅(jiān)持做一個(gè)C++程序員的話,太好了,跟我是一個(gè)陣營(yíng)的。你可以學(xué)學(xué)MFC程序設(shè)計(jì),這方面的書籍有《windows核心程序設(shè)計(jì)》《深入淺出MFC》。你可以考慮加上OpenCV,使用VC++搞游戲編程。如果你將來讀研,會(huì)使用C++,對(duì)做科研是很有幫助的,比如做圖像處理,網(wǎng)絡(luò)編程,嵌入式等。
切不可東學(xué)一下,西學(xué)一下,不管你走哪條技術(shù)路線,要精通。
實(shí)習(xí)和就業(yè)
大四的實(shí)習(xí)和找工作。軟院的學(xué)生在大四都要出去實(shí)習(xí)至少6個(gè)月吧。如果大學(xué)四年都在認(rèn)真編程,畢業(yè)之后找份工作是很容易的,但是找什么樣的工作才是我們關(guān)心的。我建議大家在實(shí)習(xí)的時(shí)候一定要找準(zhǔn)。盡量去一些好點(diǎn)的公司實(shí)習(xí),然后留下來,這樣你就不需要再投簡(jiǎn)歷筆試面試地找工作了。本人認(rèn)為好點(diǎn)的軟件公司有:騰訊,阿里巴巴,淘寶,百度,華為,人人網(wǎng),盛大,網(wǎng)易,新浪,深信服,華為3COM,金山,金蝶,用友,toplink。深圳也有一些小的IT公司待遇也不錯(cuò),這個(gè)可以自己去網(wǎng)上搜啦。
微軟,google,intel,ibm,甲骨文,這些外企基本上都只招碩士,如果你能進(jìn)入這些公司實(shí)習(xí),得打聽一下能不能留下來。
如果實(shí)習(xí)不打算留下來,就得準(zhǔn)備參加筆試了,算法是肯定會(huì)考察的,還有就是計(jì)算機(jī)的基礎(chǔ)知識(shí)了。總之,找工作是容易的,找個(gè)好工作才是你的目標(biāo)哦。
另外,也有些同學(xué)想創(chuàng)業(yè),本人沒這方面的經(jīng)驗(yàn),不敢亂說,但是如果你想好了就去做吧。
大家還有什么好的建議?可以在留言區(qū)分享下喲~
