西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁業(yè)內(nèi)動態(tài) IT人生 → 想當(dāng)一名程序員那在大學(xué)時(shí)候究竟應(yīng)該學(xué)習(xí)什么?

想當(dāng)一名程序員那在大學(xué)時(shí)候究竟應(yīng)該學(xué)習(xí)什么?

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時(shí)間:2012/12/24 8:38:03字體大小:A-A+

作者:西西點(diǎn)擊:0次評論:0次標(biāo)簽: 程序員

如果讓我大學(xué)再來一遍,我也還是想做軟件,那我應(yīng)該在大學(xué)里學(xué)點(diǎn)什么?

最終我決定把想到的東西寫下來,希望能對在校的人有點(diǎn)幫助。

首先我們得知道這問題的答案是個(gè)變量,他依賴于你的目標(biāo)和天資能力,絕不唯一。當(dāng)然大學(xué)的課程設(shè)置往往是唯一的,所以會有點(diǎn)矛盾。

這里最關(guān)鍵的東西是目標(biāo),大學(xué)學(xué)習(xí)只是達(dá)成最終目標(biāo)高度的一個(gè)環(huán)節(jié),他應(yīng)該為最終目標(biāo)服務(wù)。

當(dāng)然大學(xué)生很難清楚的知道自己的目標(biāo)究竟在那里,但要總歸要大致知道自己的方向。

這個(gè)之所以關(guān)鍵是因?yàn),這直接決定你應(yīng)不應(yīng)該學(xué)習(xí)某個(gè)東西。我是在做了很多年軟件后,才發(fā)現(xiàn)軟件和軟件的差別其實(shí)比馬和牛的差別還要大。

用流行的分類方法比如:前端開發(fā)、后端開發(fā)、.net開發(fā),Java開發(fā)等會讓人迷失焦點(diǎn),

所以我一直覺得Barry W Boehm在《軟件成本估算:COCOMOII模型方法》里的分類方法對學(xué)習(xí)更有幫助。

在這個(gè)分類方法里軟件被分了三層:最底層是基礎(chǔ)結(jié)構(gòu)型(平臺)軟件的開發(fā);中間層次是開發(fā)工具、系統(tǒng)集成、中間件;最上層是終端用戶編程,也可以理解為一般應(yīng)用的開發(fā)。

同時(shí)作者還補(bǔ)充了份數(shù)據(jù)說:在2005年95%的美國程序員是在做終端用戶編程。

這似乎把話題扯開了,但其實(shí)不是,關(guān)鍵要大致定位下自己的方向。因?yàn)閷τ谀繕?biāo)是基礎(chǔ)結(jié)構(gòu)的程序員和目標(biāo)是一般應(yīng)用的程序員,他們要學(xué)習(xí)的東西差別很大。

Donald Knuth的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》不是沒用,但如果你花了2年把他啃了一遍回頭專門做應(yīng)用開發(fā),那它真的用處不大。

至少和一個(gè)精通具體語言、框架、設(shè)計(jì)模式、面向?qū)ο、UML的人比只是鉆研了《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》的人反倒是在劣勢,雖然可能后者更花時(shí)間。

反過來講則是在算法密集型的工作里,那優(yōu)劣情形就會掉過來。

無疑的什么都精通最好,但人的時(shí)間是有限的,而軟件相關(guān)的知識是無限的,所以把學(xué)習(xí)聚焦在自己的目標(biāo)上非常關(guān)鍵。

而目標(biāo)是什么則要根據(jù)自己的實(shí)際情形來定。

假設(shè)說你真的感覺自己的能力挺好,就想做基礎(chǔ)結(jié)構(gòu)型的東西,去做MapReduce,去做操作系統(tǒng)等等,那首先要認(rèn)識到的是干這個(gè)的人很少,競爭很激烈。

如果說在2005年美國只有5%的程序員是干這個(gè)的,那我估計(jì)今天在中國也頂多是這么個(gè)比例。

個(gè)人感覺,大學(xué)的計(jì)算機(jī)課程還真都是往這個(gè)方向培養(yǎng)人的,一旦真的走這個(gè)方向,那么大學(xué)的計(jì)算機(jī)課程還真用的上。需要好好學(xué)習(xí),天天向上。

當(dāng)然只上課也不行,把課上學(xué)的東西實(shí)踐起來也很關(guān)鍵(比如開源項(xiàng)目)。

這里麻煩的事情是,干這個(gè)的可能只有5%,很多人即使很努力也不一定擠的上去。

那么假設(shè)說一個(gè)人很現(xiàn)實(shí),說:國內(nèi)排名靠前的幾所學(xué)校湊湊也就5%了,競爭太激烈,我不選這個(gè)目標(biāo)方向,我還是95%里做做吧,那這個(gè)時(shí)候我應(yīng)該學(xué)什么?

我個(gè)人認(rèn)為主要要學(xué)好一些比較硬的,需要大塊時(shí)間學(xué)習(xí)的東西,而不要在花里胡哨的東西上多費(fèi)時(shí)間。

硬的東西是指:

數(shù)據(jù)結(jié)構(gòu)和基本算法。

不管是不是做基礎(chǔ)結(jié)構(gòu)性軟件,基本的數(shù)據(jù)結(jié)構(gòu)和算法知識還是要有的。

很可能不太會有自己從頭寫數(shù)據(jù)結(jié)構(gòu)和算法的機(jī)會,但如果復(fù)雜度不知道怎么算,鏈表、紅黑樹、哈希表的差別都不知道,那就怎么都玄。

精通一門編程語言

具體是那個(gè)可以根據(jù)實(shí)際情形來選。但這里強(qiáng)調(diào)的是語言,不是IDE和框架?梢酝ㄋ桌斫鉃槊總(gè)關(guān)鍵字背后的含義要整清楚。

這里的陷阱是學(xué)一堆語言,但那個(gè)都不精。

精讀一個(gè)有點(diǎn)規(guī)模的開源項(xiàng)目(至少要超過2萬行)

要找那種規(guī)模不太大,又比較有名的項(xiàng)目,一定要精讀,爭取每行都懂。

累積一定的代碼量

不算IDE幫助生成的,爭取也在2萬行之上。

面向?qū)ο蠛驮O(shè)計(jì)模式

這點(diǎn)最好配合著下一點(diǎn)一起做。

從頭考察一下某個(gè)框架

考察某個(gè)框架的內(nèi)存機(jī)制、線程機(jī)制等。

整個(gè)學(xué)習(xí)過程中最常見的陷阱是學(xué)會操作一堆IDE和框架的使用,但實(shí)際上這事兒價(jià)值不大,程序員的價(jià)值符合反木桶原理,啥都知道一點(diǎn)的,大多時(shí)候不如某個(gè)上精通的。

同時(shí)除非很特別的公司,大一點(diǎn)的公司并不期望畢業(yè)生過來就能干活。

有上面的基礎(chǔ)后,再突擊下,應(yīng)該可以面對大部分公司的筆試和面試。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    相關(guān)下載

    名稱大小下載