當前位置:編程學習大全網 - 編程語言 - 想當壹名程序員那在大學時候究竟應該學習什麽?

想當壹名程序員那在大學時候究竟應該學習什麽?

最終我決定把想到的東西寫下來,希望能對在校的人有點幫助。首先我們得知道這問題的答案是個變量,他依賴於妳的目標和天資能力,絕不唯壹。當然大學的課程設置往往是唯壹的,所以會有點矛盾。這裏最關鍵的東西是目標,大學學習只是達成最終目標高度的壹個環節,他應該為最終目標服務。當然大學生很難清楚的知道自己的目標究竟在那裏,但要總歸要大致知道自己的方向。這個之所以關鍵是因為,這直接決定妳應不應該學習某個東西。我是在做了很多年軟件後,才發現軟件和軟件的差別其實比馬和牛的差別還要大。用流行的分類方法比如:前端開發、後端開發、.net開發,Java開發等會讓人迷失焦點,所以我壹直覺得Barry W Boehm在《軟件成本估算:COCOMOII模型方法》裏的分類方法對學習更有幫助。在這個分類方法裏軟件被分了三層:最底層是基礎結構型(平臺)軟件的開發;中間層次是開發工具、系統集成、中間件;最上層是終端用戶編程,也可以理解為壹般應用的開發。同時作者還補充了份數據說:在2005年95%的美國程序員是在做終端用戶編程。這似乎把話題扯開了,但其實不是,關鍵要大致定位下自己的方向。因為對於目標是基礎結構的程序員和目標是壹般應用的程序員,他們要學習的東西差別很大。Donald Knuth的《計算機程序設計藝術》不是沒用,但如果妳花了2年把他啃了壹遍回頭專門做應用開發,那它真的用處不大。至少和壹個精通具體語言、框架、設計模式、面向對象、UML的人比只是鉆研了《計算機程序設計藝術》的人反倒是在劣勢,雖然可能後者更花時間。反過來講則是在算法密集型的工作裏,那優劣情形就會掉過來。無疑的什麽都精通最好,但人的時間是有限的,而軟件相關的知識是無限的,所以把學習聚焦在自己的目標上非常關鍵。而目標是什麽則要根據自己的實際情形來定。假設說妳真的感覺自己的能力挺好,就想做基礎結構型的東西,去做MapReduce,去做操作系統等等,那首先要認識到的是幹這個的人很少,競爭很激烈。如果說在2005年美國只有5%的程序員是幹這個的,那我估計今天在中國也頂多是這麽個比例。個人感覺,大學的計算機課程還真都是往這個方向培養人的,壹旦真的走這個方向,那麽大學的計算機課程還真用的上。需要好好學習,天天向上。當然只上課也不行,把課上學的東西實踐起來也很關鍵(比如開源項目)。這裏麻煩的事情是,幹這個的可能只有5%,很多人即使很努力也不壹定擠的上去。那麽假設說壹個人很現實,說:國內排名靠前的幾所學校湊湊也就5%了,競爭太激烈,我不選這個目標方向,我還是95%裏做做吧,那這個時候我應該學什麽?我個人認為主要要學好壹些比較硬的,需要大塊時間學習的東西,而不要在花裏胡哨的東西上多費時間。硬的東西是指:數據結構和基本算法。不管是不是做基礎結構性軟件,基本的數據結構和算法知識還是要有的。很可能不太會有自己從頭寫數據結構和算法的機會,但如果復雜度不知道怎麽算,鏈表、紅黑樹、哈希表的差別都不知道,那就怎麽都玄。精通壹門編程語言具體是那個可以根據實際情形來選。但這裏強調的是語言,不是IDE和框架。可以通俗理解為每個關鍵字背後的含義要整清楚。這裏的陷阱是學壹堆語言,但那個都不精。精讀壹個有點規模的開源項目(至少要超過2萬行)要找那種規模不太大,又比較有名的項目,壹定要精讀,爭取每行都懂。累積壹定的代碼量不算IDE幫助生成的,爭取也在2萬行之上。面向對象和設計模式這點最好配合著下壹點壹起做。從頭考察壹下某個框架考察某個框架的內存機制、線程機制等。整個學習過程中最常見的陷阱是學會操作壹堆IDE和框架的使用,但實際上這事兒價值不大,程序員的價值符合反木桶原理,啥都知道壹點的,大多時候不如某個上精通的。同時除非很特別的公司,大壹點的公司並不期望畢業生過來就能幹活。

  • 上一篇:怎麽安裝python環境?安裝python環境的方法
  • 下一篇:想入手壹臺蘭博基尼麽? 樂高來幫妳實現兒時夢想!
  • copyright 2024編程學習大全網