「MoreThanJava」當大學選擇了電腦之後應該知道的

  • 「MoreThanJava」 宣揚的是 「學習,不止 CODE」,本系列 Java 基礎教程是自己在結合各方面的知識之後,對 Java 基礎的一個總回顧,旨在 「幫助新朋友快速高品質的學習」
  • 當然 不論新老朋友 我相信您都可以 從中獲益。如果覺得 「不錯」 的朋友,歡迎 「關注 + 留言 + 分享」,文末有完整的獲取鏈接,您的支援是我前進的最大的動力!

一、電腦 = 互聯網 = 高薪 = 996?

你真的了解電腦專業嗎?

不論你是自己選擇的電腦專業還是家人幫你報的名,首先恭喜你!因為電腦是少數的幾個 「不用拼爹」,完完全全可以憑藉自己的努力就能夠獲得回報的專業,而且從近 20 年來看,回報還相當不錯!

電腦專業 是做什麼的呢?

簡單來說,電腦專業是以 電腦等技術 為主要研究工具,以擴展人類的資訊功能 為主要目標的一門學科。

電腦是個大門類

翻開本科專業目錄,會發現電腦是個大類,包括電腦科學與技術、軟體工程、網路工程、資訊安全、物聯網工程等等等好多專業。其中,最核心、最基礎的專業就是 電腦科學與技術 (Computer Science and Technology – CS) 了,這也是各院校電腦系招生的主要專業。

百度百科 給出的電腦專業概念的論述是:電腦專業是指電腦硬體與軟體相結合、面向系統、更偏嚮應用的寬口徑專業

總之電腦是個很大的門類,不光編寫應用軟體的 軟體工程師

還有製作硬體的 硬體工程師,例如我們日常使用大到手機,小刀計算器,一切物理設備的底層邏輯都是由它們負責編寫的:

還有 網路工程師,但也有黑帽子、白帽子、運維等等很多的分別:(這圖感覺明顯比較黑和帥呢..)

and more…

另外想說一點是,隨著技術的進步和世界的複雜程度的加深,社會分工越來越細之後,大學專業也隨之變得越來越細化,這些都不要緊,無論在哪一個方向 深耕 都能帶來不菲的收穫。(即行行出狀元)

電腦專業都學哪些課程

了解一門專業最快的方式就是了解它的課程。我們來看一下 網易雲課堂頂尖中文大學電腦專業課程體系 給出的標準的 CS 體系的課程表:(鏈接可戳,下圖課程全部免費)

網易雲課堂給出的電腦專業課程體系圖

可以看到電腦專業的課程大致分為基礎課程和專業課程兩類:

  • 主要基礎課程:高等數學、大學英語、線性代數、大學物理、概率論、離散數學等;
  • 主要專業課程:數據結構、C 語言程式設計、資料庫原理、作業系統、電腦網路、演算法分析與設計、編譯原理、軟體工程等;

"電腦熱" 還能持續多久?

電腦有多熱門呢?看一下現在 漫天飛 的程式設計師培訓廣告就知道了,在前幾年,這些地方還被英語培訓佔據著。(關於電腦培訓逐步替代英語培訓這事兒,有興趣了解更多可以 戳這裡)

於是總有人擔心,報選電腦的 人太多競爭太激烈了,或者是傳言說電腦行業已經 快飽和了互聯網泡沫正在醞釀 等,但實際情況是怎麼樣的呢?

我們先來看一段採訪:

全球最大豪華車製造商戴姆勒Benz(Daimler Benz) 的總經理在最近的一次採訪中表示:

"我們的競爭對手哪裡是其他汽車公司,我們的競爭對手已經變成了特斯拉,Google,蘋果,亞馬遜等科技公司……

科技公司的發展讓我們不安,我們面臨著巨大的轉變。"

不難發現,全社會正在 資訊化中加速前進,電腦和互聯網已經 滲透到生活的方方面面,促使許多傳統行業發生變革:

  • 招聘:LinkedIn 的出現,正在蠶食美國4000億美元的利潤豐厚的招聘行業。

  • 零售:Amazon 的出現,讓美國零售業人人自危,尤其是知名百貨 Macy』s,因業績不振已經連續關店及裁員。

  • 交通:Uber 一輛「計程車」都沒有,卻是全球最大的打車公司,改變交通行業的遊戲規則。

  • 住宿:Airbnb 從不蓋樓造賓館,但是把目前世界最大的連鎖酒店集團 Marriott 逼的不得不重新進行戰略布局。

  • 醫療:人工智慧醫療機器人、智慧診斷、可穿戴醫療設備…新的技術給醫療行業多個領域帶來發展機會。

  • 金融:金融領域也因為互聯網和數據的發展,發生著劇變……一夜之間鋪遍所有商家的 「掃碼支付」 就是最好的例子。

  • 就連 國防領域,也越來越以軟體為基礎,對科技人才的需求日趨迫切:

    • 軟體驅動的無人機發動空襲,不再讓人類飛行員面臨風險;

    • 情報機構利用軟體進行大規模數據挖掘,以發現和追蹤潛在的恐怖主義活動;

從某種程度上來說,電腦行業不但不會飽和,並在大口 「侵食」 其它行業!幾乎所有的公司和領域,都需要電腦相關的人才!

有人說,未來世界將只剩下三種職業:

  1. 娛樂人士;
  2. Pizza 快遞員;
  3. 程式設計師;

不過,基於現在的發展來看,娛樂可以被 VR/AR 滲透,Pizza 快遞會由送餐機器人完成,而世界最終需要的,就是程式設計師。

對程式設計師的認識

高薪是真的,996 也是真的

工作 996,生病 ICU(重症監護病房)。

誠然,程式設計師的薪資水平普遍都要率高於其他一些傳統行業:

但高薪的同時,也意味著高投入

中國的資訊技術產業,特別是過去十多年崛起的一些大型互聯網公司,他們的重點主要還是在對技術應用的開發上。過去十多年來,中國互聯網產業的發展所提供的機會,使得業界認識到:投入到應用中的收益,顯然比基礎研究的收益更大。

隨著這些基礎的開源技術開發工具的進步,中國的程式設計師的入行門檻也越來越低,這和市場對程式設計師的需求數量越來越多這一趨勢又是匹配的。隨著資本參與互聯網的大戰,「快」 成為互聯網行業的共識。其實由於開源生態的存在,技術開發如今本身已經快得不能再快了,但市場競爭是殘酷的,沒有最快只有更快。

這就產生了一個矛盾:產業迅速膨脹,從業人員的水分也越來越高,但市場對公司的效率要求也越來越高。在這種態勢下,技術應用方面的研發,很容易落入勞動密集型的實質當中

難怪如今程式設計師往往自嘲為 「碼農」,意思是 「寫程式碼的農民工」。程式設計師褪去了 「智力勞動者」 的光環,似乎成為了和車間工人沒太大區別的工種:無論是從工作的複雜程度來看,還是工作時長對工作的產出來看,都越來越接近了。

當然,把程式設計師和傳統的產業工人做類比其實並不完全正確,這主要是因為:腦力勞動,或者說智力和知識,在資訊技術開發的工作中起的作用太大了。

程式設計師的「行業偏見」

在極光大數據的 2018 年中國程式設計師研究報告里,對於 「外行對你的職業最大的誤解是什麼」 的這個問題,有 46.1% 的程式設計師選擇了 「很會修電腦」42.7% 的人選擇了 「可以輕易開發出任何軟體」

每個行業都存在各自的行業偏見,例如遇到健身教練就想讓人幫你 3 天瘦 10 斤,還得不打針、不吃藥、不節食、不運動。這些偏見都無可厚非,重要的是你怎麼看待這事兒,是選擇被貼標籤就靠近標籤,還是選擇做自己。

什麼樣的人適合學習電腦?

4 點吧:興趣邏輯就業靜下來學習

興趣

電腦行業的 知識迭代 相比其他行業來說速度要 上不少,加之市場對程式設計師的 要求 也越來越 ,這就要求了程式設計師需要更多的時間來學習。而說到底,電腦是一個偏實踐性的理論知識學科,你不僅需要 花費大量的時間學習 枯燥的基礎的理論知識,還需要再畫 大量時間去動手實踐 最終將這些知識 融會貫通 起來,這個過程可能略顯枯燥和冗長,而 興趣會幫助你跨過不少的無趣

《黑客與漫畫》 一書中有這樣一段描述:

在達·芬奇的年代,繪畫並不是一件很酷的事情,達·芬奇用自己的工作推動繪畫成為一種偉大的表達方式。同樣,編程到底能夠有多酷,取決於我們能夠用這種新媒介做出怎樣的工作。

「興趣是最好的老師」 這句話再怎麼吹也不為過,你對一件事情的興趣和熱愛,在很大程度上決定了你做一件事情所取得的成績。

看到有網友調侃:"給我媽買的智慧洗衣機教了 n 遍都不會用,後來給她買了台麻將機,不僅會用還會修呢。"

還看到有網友吐槽說:「也可以先結婚後戀愛的..」,這… 你們自己品吧…

邏輯

現代的電腦還沒有足夠的「聰明」,當你實現一些東西和想法的時候,需要考慮 「足夠多」 的細節,這就涉及到 「邏輯思考,講求因果」 的能力了。

這事兒我在 「知乎討論 – 編程到底難在哪裡?」 看到了許多有趣生動的例子,這裡我們截取一個關於 「樹上有十隻鳥,開槍打死一隻,還剩幾隻?」 問題的討論來論述:(例子略長.. 不感興趣的讀者可以跳過..)

某日,老師在課堂上想考考學生們的智商,就問一個男孩: 「樹上有十隻鳥,開槍打死一隻,還剩幾隻?」  

  • ?‍♂️:「是無聲手槍,還是其他沒有聲音的槍么?」  
  • 「不是.」  
  • ?‍♂️:「槍聲有多大?」  
  • 「80~100 分貝.」 
  • ?‍♂️:「那就是說會震的耳朵疼?」  
  • 「是.」  
  • ?‍♂️:「在這個城市裡打鳥犯不犯法?」  
  • 「不犯.」  
  • ?‍♂️:「您確定那隻鳥真的被打死啦?」  
  • 「確定.」 (老師已經不耐煩了),」拜託,你告訴我還剩幾隻就行了,OK?」  
  • ?‍♂️:「OK.鳥里有沒有聾子?」  
  • 「沒有.」  
  • ?‍♂️:「有沒有鳥智力有問題,呆傻到聽到槍響不知道飛的?」  
  • 「沒有,智商都在 200 以上!」  
  • ?‍♂️:「有沒有關在籠子里的?」  
  • 「沒有.」  
  • ?‍♂️:「邊上還有沒有其他的樹,樹上還有沒有其他鳥?」  
  • 「沒有.」
  • ?‍♂️:「方圓十里呢?」
  • 「就這麼一棵樹!」  
  • ?‍♂️:「有沒有殘疾或餓的飛不動的鳥?」  
  • 「沒有,都身體倍棒.」  
  • ?‍♂️:「算不算懷孕肚子里的小鳥?」  
  • 「都是公的.」  
  • ?‍♂️:「都不可能懷孕?」  
  • 「………,決不可能.」  
  • ?‍♂️:「打鳥的人眼裡有沒有花?保證是十隻?」  
  • 「沒有花,就十隻.」 老師腦門上的汗已經流下來了,  
  • ?‍♂️:「有沒有傻的不怕死的?」  
  • 「都怕死.」  
  • ?‍♂️:「有沒有因為情侶被打中,自己留下來的?」  
  • 「笨蛋,之前不是說都是公的嘛!」  
  • ?‍♂️:「同性戀可不可以啊?」  
  • 「………….,性取向都很正常!」  
  • ?‍♂️:「會不會一槍打死兩隻?」  
  • 「不會.」  
  • ?‍♂️:「一槍打死三隻呢?」  
  • 「不會.」  
  • ?‍♂️:「四隻呢?」  
  • 「更不會!」  
  • ?‍♂️:「五隻呢?」  
  • 「絕對不會!!!」  
  • ?‍♂️:「那六隻總有可能吧?」  
  • 「除非你他媽的是豬生的才有可能!一槍只能打死一隻!」  
  • ?‍♂️:「…好吧,那麼所有的鳥都可以自由活動么?」  
  • 「完全可以.」  
  • ?‍♂️:「它們受到驚嚇起飛時會不會驚慌失措而互相撞上?」
  • 「不會,每隻鳥都裝有衛星導航系統,而且可以自動飛行.」
  • ?‍♂️:「恩,如果您的回答沒有騙人,」 學生滿懷信心的回答,「打死的鳥要是掛在樹上沒掉下來,那麼就剩一隻,如果掉下來,就一隻不剩.」
  • 老師推推眼鏡,強忍著要昏倒的感覺,顫抖地說道:「你可以去當程式設計師了……」

靜下來學習

《黑客與漫畫》 一書中有描述說:

程式設計師因為常常埋頭於編程,而沒有更多的時間精力去與學習如何與別人相處。這常常導致他們看起來有點「呆」——就像書獃子經常只和書打交道一樣,程式設計師大部分時間只對著電腦螢幕。

這也從側面反映出了編程這件事的特點。我們需要 「靜下來沉澱學習」 的能力,如果你渴望幾個月速成,或者不想學習新技術,指望二十來歲拿一個學位證,可以吃到退休,那麼你就不太適合電腦行業。

二、對「大學」了解多一些

為什麼你可以不讀大學?

可不要被這個標題嚇到,讀書,念大學仍然是當今社會下的主流選擇,這裡只是借 阮一峰 大大的文章來提供一種 全新的視角,我相信讀者會跟我一樣,看完會帶來一定思考的。

以下內容均引用自:為什麼你可以不讀大學 | 阮一峰

什麼知識才是有用的知識?

農業社會,上一代人的知識可以一成不變地用在下一代。而在資訊社會,前幾年的知識,再過幾年就不能用了。

舉例來說,眼下就業前景最好的行業,我覺得有兩個:區塊鏈和 VR。它們在五年前都是不存在的,那時就業最好的是蘋果 iOS 系統的應用開發,可是再往前推五年,它也是不存在的。伴隨著它們的是,很多舊工作崗位的消失,比如塞班、黑莓、Windows Phone 的開發。

這種情況下,大學應該教什麼,我們根本不知道。學生畢業後的行業,現在根本還沒有出現。因此,大學只能重點教 基礎類課程,而且各個方向都必須教到,因為不知道學生將來會用到哪個方向的東西。這樣就會耗費大量的時間,學習專業的各種基礎知識,其中許多對人生來說是沒用的。學生常常感嘆:「考試一結束,有些課程這輩子再沒有用到的機會了」

更糟糕的是,學生的培養計劃,都是一些二三十年前畢業、然後一直待在大學裡、與社會生產實踐脫節的人制定的。他們的知識和思維早已過時了。這樣的人指定你應該學習的知識,很可能在你學的時候就已經過時了。

大學的四年時間

退一步說,就算你在大學裡能學到了真正的知識,那也不應該在那裡待四年。如果只學最需要學習的東西,一年就夠了。

四年時間足以讓一個人在任何領域成為資深業者,甚至專家。可是我們的大學生呢,經過本科四年,不要說領域專家,甚至能力強的學生都寥寥無幾。我們的大學制度用了四年時間,培養出了大量一無所長的、迷茫困惑的、市場滯銷的年輕人。

18 歲是人生最有熱情和精力投入一項事業的時候,但是,大學將你一連四年關在教室和圖書館裡,把考試和績點偽裝成你奮鬥的目標,人為將你與真實世界隔離,引導你去關注那些對未來人生毫不重要的事情。經過這樣四年的歧途,等你真正走上社會、要跟全世界競爭的時候,你的競爭力不是變強了,而是變弱了。換句話說,四年制大學很可能是削弱你,而不是讓你變得更強。

2014 年諾貝爾物理學獎得主中村修二,就曾經寫過一篇長文,名字就叫 《東亞教育浪費了太多的生命》

我們時代的很多成功者—-喬布斯、比爾蓋茨、扎克伯格等等—-都是退學生,這絕不是偶然的。不是他們在大學待不下去,而是他們發現,沒必要在那個地方待四年。如果他們咬著牙忍受下去,熬到拿到文憑的那一天,蘋果公司和微軟公司可能都不會有了。

不是說知識無用

注意,我不是說知識無用,而是說知識(尤其是非學術的知識)不一定要通過大學獲得,通過互聯網一樣可以接受高等教育,而且更高效和便宜。

技術已經成為人類社會發展的主導性力量,學習和教育變得比以往更重要、更關鍵。但是很不幸,我們的學習和教育制度已經完全過時,傳授的知識有用的少,沒用的多;傳授方法仍然依靠灌輸和記憶,而不是啟發和理解,極其低效,浪費學生的時間,打擊學習熱情,磨滅對知識的興趣;對年輕人的成長,正面影響少,負面影響大,而且看不到改變的希望。

以前,人生的選擇很少,你不得不去讀大學,因為沒有其他地方可以接受高等教育。社會還把很多機會與文憑掛鉤,先有文憑,然後才能有就業、職稱、住房等等。

但是,時代已經變了,文憑正變得越來越不重要。那些與文憑掛鉤的東西,正在一項項脫鉤。

互聯網將教育的自主權,交到了每個人自己手裡。上什麼課程、什麼時間上,都完全由你決定。你可以一邊工作,一邊利用夜晚和周末,學習網路課程。這樣的話,不僅早早就會有收入,而且只學那些對自己最有用、最感興趣的內容,學習的效率很高。如果發現對學術有興趣,將來再回大學,攻讀更高的學位,也是完全可以的。

大學課程是為了那些不知道學什麼的人設計的,千萬不要因為自己找不到方向,而被這些課程」畫地為牢「限制住。你要主動去接觸和學習,那些自己感興趣的東西。引用一個網友的話,「你要做的就是自主、跨界、終身學習「。

中國大學的教育理念

在吳軍老師 《大學之路》 中介紹了大學的基本教育理念有兩種:

  1. 紐曼的教育理念:倡導通才教育,本科階段講求知識面的廣闊,要求更多的課外活動,而不要求專業的深度,專業的深造放到大四或者研究生階段。具體像是哈佛大學,耶魯大學,本科生在入學時有足夠多的課程可以選擇,但不需要確定專業,本科學習的後期才要求確定專業,保證本科生能夠在嘗試中找到自己心儀的專業,以確定未來自己的發展方向。
  2. 德國洪堡教育體制:強調專才教育,要求學生入學時就選定發展方向,講求專業的深度。中國目前的高等教育模式就來自洪堡教育體制

在紐曼的教育理念之下,學生一畢業並不能馬上達到專業工作的要求,但事業和未來發展會有後勁。洪堡教育體制則更適合需要迅速發展生產的時代,比如工業革命後需要大量科學家的美國。洪堡教育體制下畢業的學生能夠迅速為國家所用,實現自身脫貧,有助於社會的迅速工業化。

紐曼的教育理念和洪堡教育體制很難簡單地說誰更好一點,而是要看 社會發展所處的階段

改革開放初期需要儘快發展經濟,類似於工業革命背景之下的美國,顯然洪堡教育體制下的大學教育見效更快。社會發展趨於穩定之後,紐曼的教育理念能夠幫助學生找到發展的後勁。這也是為什麼現在高考開始出現 "3 + 3"、某些地方大學計劃可以自選專業課的原因。

高考 3+3 改革

雖然專才教育能夠培養出很好的執行層面的人(無論是科學家、工程師,還是律師和醫生),但是卻很難培養出擁有廣闊事業的領袖以及實業家。當一個國家已經處於穩步發現階段,當一個學生來自中上產之家,正朝著精英目標努力,這個時候,倘若缺少博雅的素質教育,路就跟難走得遠。今天,中國的高中生一進高中就開始專攻那些高考必考的課程,而一進入大學,他們就被限制在不允許修改的專業中,這不僅失去了得到通才教育的機會,甚至被剝奪了培養自己學習興趣的可能,我自己在讀高中時受到了很多的通才教育,以至於到今天我所具備的人文和社會科學方面的素養,足以讓我成為一個受人尊敬的人。可以說,沒有好的通才教育,一個人的事業發展就不會有後勁。——吳軍《大學之路》

三、我該如何學習?

先做好終身學習的心裡準備

美國有一個諺語 「手裡拿著鎚子,看什麼都是釘子」。指的是人們被自己的所擁有的知識能力所局限,導致自己做什麼事情都想用手頭已有的鎚子來解決問題。

要克服這種鐵鎚人綜合症的方法就是:在精通某一領域的同時接受各個領域的知識,並且將他們用來解決現實世界中的問題

如此,再遇見釘子我們就有了一個工具箱。既有鎚子,也有螺絲刀,還有鉗子…

但是,要在短短的四年時間裡做到這一點是有一定困難的:

  • 首先,學校要有能力開出足夠可供學生選擇的課程。這一點,即使是如上交這樣 (有大量政府投入的) 的學校都很難做到。每年到了選課的季節,都是對學校教務系統伺服器的一次大考。學生們需要像搶春運火車票一樣來搶僅有的上百門選修課。
  • 其次,即使強行開出這些課程,但是課程的品質往往無法得到保障。在我的學校,許多選修課完全算不上吸引人,也很少教課教的好的老師 (我大學有一門課,老師上課不講課就放影片,學生安靜地待到下課就可以走了…),於是這些選修課成了同學趕作業,玩手機的時間。

唯一的解決辦法就是延長教育時間。 在美國許多名校,例如哈弗,普林斯頓採用本科給學生以通識教育,學生可以自由選課 (哈弗為了 6000 名本科開出了 2000 多門課)。之後再通過 1-2 年的研究生教育讓學生實現專業教育。這個與中國研究生的輕教育重科研有所不同。

但是對於我們普通人來說,我們很難有機會進入這些頂級大學,接觸到這樣的資源,那我們應該怎麼辦呢?

這個就要拋出所秉持的觀念:堅持終身教育。這裡引用吳軍在《大學之路》裡面的一段話:

可能許多人認識不到教育是一輩子的事情,我們不必擔心輸在起跑線上,因為世界上大部分人跑到一半就不會再跑了,這就給了長跑者機會

並且,一個善於學習的人,隨著年齡的增長,他會找到自己的興趣點,如果他還能夠學習,就有了目的性和針對性。

在大學裡我們需要養成一種自學的習慣。不僅僅是自學學校所訂製的專業課,並且要有能根據自己的興趣,要解決的問題而高效自學的能力。

並且養成習慣:

遇見問題 -> 分析問題 -> 搜集相關資料 -> 學習相關資料 -> 解決問題。

通過這樣的方式,我們才能夠跳出環境給我們帶來的局限性,擁有更豐富的的人生。

方向不對,努力白費

有一個清晰的目標很重要

就說說我的兩個同學吧。

同學 A | 大佬程式設計師:

一個是在大一剛進來,正當同學們還處於剛進入大學的那種朦朦朧朧、放放鬆松時,就已經決定好了要走技術這條路線的 同學 A

在大一剛開學時就開始早早準備自學 C/ C++,等到我們開始上學校為我們開設的課程時,他已經利用一個暑假的時間,自己基於 Unix 改寫自己的 作業系統。在我們上機的課堂上還聽他吐槽自己實現的垃圾桶刪不了文件,有 BUG。

後來等到我們開始學習電腦網路時,他又自己仿寫了一個類 Nginx 伺服器

再等我們大四準備實習時,他儼然已經成為了 Offer 收割機,想去哪兒就去哪兒 (儘管我們學校僅僅是一個二本院校)。當時看著他簡歷上的兩個項目:自己實現的作業系統和伺服器,心裡就是一句:「卧槽!牛逼!」。

同學 B | 大佬銷售員:

大一就開始賣我們電腦.. 後來大二開學開始代理學校的電信、移動等移動業務,再後來還開展了駕校的業務,大四的時候吧,我們都還在找實習呢,他已經在學校周邊開辦起了自己的公司..成為了自己的 CEO..

為之努力,並且永遠不要怕晚

後來想起這兩位同學,常常會以 「他們目標好清晰」 這樣的句式來 掩蓋他們為之付出的努力,方向固然重要,但為之努力也同樣。如果不是 同學 A 犧牲其他同學玩耍的時間自學學習編程,他不會成為後來人人眼紅的 Offer 收割機,如果不是 同學 B 勤勤懇懇不怕辛苦經營、探索各種業務,那也不會後來早早成為自己的 CEO

為之努力,並且永遠不要覺得晚。說來慚愧,我的大學幾乎可以說是從大三開始的,當我突然開始意識到我即將進入社會卻身無長物時,我突然覺得需要一些些的改變和努力。於是我當天就開始制定計劃,從那天到學期結束還有 七個星期零 2 天,於是有了下面這個計劃:

七個星期零2天的計劃 & 總結

從最基礎的 Servlet/ JSP 到 SpringBoot 一整個基礎的學習過來,也到了暑假,發現自己還是有差距所以毅然決定留校學習,於是有了 暑期計劃

暑期計劃

這一段時間,給自己的簡歷上增加項目、學習鞏固基礎的數據結構、演算法知識,然後 參加秋招 (當時的面經),意識到自己的差距,並且想明白了自己想要繼續學習更多的知識之後,決定 考研

兩個月的拼搏,雖然最終以 4 分的差距未能如願擇校,但後來春招也算是如願進入了自己比較心儀的公司。

這一切的 "逆襲" 對於我來說,也不過僅僅一年的時間。

我把這些經歷也記錄在了這裡 – 2018 年終總結

鍛煉獨立思考、自主研究解決問題的能力

在前一段時間裡,我接觸到一個詞:「二手人生」。它概括的是這樣一種處境:「你發現你在生活里遇到的所有問題,在搜索引擎里都能找到答案」

比如說,怎麼搭配衣服才低調優雅,去哪吃飯便宜又美味,買哪款耳機更划算,工作還是考研,要不要入手比特幣,都有人替你解答了。你還發現有一批人用照片、影片、段子、廣告為你提供了一個精心加工過的世界,這個世界常常比你自個兒的世界要美麗有趣深刻好笑有品位得多。如果把當代生活比作一場開卷考,比起你自己慢慢找答案,達人們已經為你提供了一套高分答案放到你面前讓你參考

漸漸地你養成了一種 學生式習慣,當生活給你發了一份新卷子,你的第一反應就是先翻到網上,去看參考答案

事實證明,後來我們接觸的大部分事情 (無論生活還是學習上),都不太容易有一個標準答案,當問題來臨時,如何獨立思考、自主研究解決問題,是非常重要的能力

自我寫部落格以來,常常收到讀者們發來的問題,有一些是他們真實地遇到了不可解決的問題尋求我的幫助,有一些問題則顯得我很意外,就像下面這樣:(網站鏈接 戳這裡)

為什麼會這樣呢?我想大概就是學生時代遺留下來的習慣吧,習慣了更輕鬆一些的向別人尋求幫助或者是翻找參考答案,很少自己主動地去思考並得出問題的答案。

這裡給出一個問問題的標準模板:

學會編程而不是學會 Java

其實技術是相通的。編程的落腳點還是應該放在 解決問題 上,而不是使用某種工具上。更重要的是我們通過學習某一種程式語言,來幫助我們養成 電腦的思維方式,這也要求了我們在掌握一種技術時,不僅要 知其然,還要知其所以然

例如在「碼農翻身」的一篇文章「學會編程, 而不是學會Java」 里就提到了一個問題,模仿 Java 的 ArrayList 實現一個自己的 SimpleList 類:(現在看不懂也沒關係)

public class SimpleList<T> {        private Object[] elementData;      private int size = 0;        public int size() {          return -1;      }        public SimpleList() {      }        public boolean isEmpty() {          return false;      }        public boolean add(T e) {          return false;      }        public boolean remove(Object o) {          return false;      }        public T get(int index) {          return null;      }  }  

這個題目不要求實現複雜的演算法, 也不需要進行面向對象的設計,也不需要考慮多執行緒下的執行緒安全, 況且已經給了提示:「用一個Object數組來實現」。如果說有一點語法層面的難度, 那就是使用了一點泛型。

這個 SimpleList 要求的就是能對一個數組進行操作,核心就兩點:

  1. 能往數組添加數據, 記錄size ,如果數組空間不夠了, 需要增大空間

  2. 能刪除數組指定位置的數據,並且把之後的數據往前挪動。

難嗎?這其實是編程式的基本素養,編程的本質,和用什麼語言實現沒有關係。

寫更多更多的程式碼

技術沒有捷徑

技術不要想著有捷徑可尋,十年入行是有道理的。

現在隨便走進一家書店,都會在技術類的書架上看到一堆的類似於《24小時學會Java》、《21天C++從入門到精通》這樣的的書 (上面的漫畫就很好地調侃了),然而這一類「標題黨」書籍,都是讓你「走馬觀花」地瞧上一瞧,也沒有時間讓你寫幾個真正有意義的程式,這樣的 「一知半解」 是一件極其危險的事情。

踏踏實實鋪平基礎知識,才是正道。

做 ABC 的程式設計師而不是 ABR

  • ABC: Always Be Coding…
  • ABR: Always Be Reading…

看時會,做時廢?人們口中常說的 「經驗」,其實是指從自己 「一手實踐」 中得到的 「一手經驗」,而不是指那些從文章從別人口中獲取到的「二手經驗」。所以要保持 「保持始終編程」,你編寫的程式碼越多,那麼你的水平就會提升得越多。

造重複的輪子與其他程式設計師交流動手實踐自己的想法。最佳實踐就是集中訓練,並且不斷地探索新領域並挑戰自己。

自學

自學是程式設計師必須掌握的一項技能,上面已經說到了大學的課程設計不是以 培養程式設計師 為目的的,而是以 教授最基礎的知識技能,所以自學很重要。

一些高品質的自學資料和平台

部分摘錄自:Github 近90k點贊的電腦專業課程,在家也能上名校! | JavaGuide

computer-science

  1. star :56.1k
  2. Github 地址:https://github.com/ossu/computer-science#intro-cs
  3. 介紹:通往電腦科學免費自學教育之路!電腦專業課程

TeachYourselfCS-CN (自學電腦科學)

  1. star :0.8k
  2. Github 地址:https://github.com/keithnull/TeachYourselfCS-CN
  3. 介紹:TeachYourselfCS 的中文翻譯。內容超級棒!如果你是一個自學成才的工程師,或者從編程培訓班畢業,那麼你很有必要學習電腦科學。幸運的是,不必為此花上數年光陰和不菲費用去攻讀一個學位:僅僅依靠自己,你就可以獲得世界一流水平的教育。在這份指引中會為你解答:你應當學習 哪些科目,為什麼?對於這些科目,最好的書籍或者影片課程是什麼

REKCARC-TSC-UHT(清華大學電腦系課程攻略)

  1. star :12.2k
  2. Github 地址:https://github.com/PKUanonym/REKCARC-TSC-UHT
  3. 介紹:清華大學電腦系課程攻略。受 浙江大學相關項目 啟發,創立了本項目。

網易雲課堂 – 頂尖中文大學電腦專業課程體系

  1. 地址:https://study.163.com/curricula/cs.htm
  2. 介紹:彙集全國多家知名大學裡廣受學生好評的電腦老師,每一門課程都由他們親自製作,權威、專業!人人都可以在這裡體驗到時下最流行的 MOOC,系統地掌握電腦專業知識。

and more…

類似的資料有很多,重點還是要自己能夠靜得下心來學習,如果糾結「看書還是看影片」,我的建議是 「都看!」

不要在寢室學習

宿舍裡面吃的喝的玩的,要啥啥都有,而且環境複雜.. 很難不被各種奇怪的東西影響.. 所以要學習就不要呆在宿舍。

對自己有更高的標準,才會有更多選擇

這裡直接引用《精進》 的段落。

決策心理學認為,人在面臨選擇時,通常會採用 「滿意原則」,而不是 「最優原則」。所謂 「滿意原則」,就是人會從自己最熟悉的待選項開始逐一考察,如果發現了一個能滿足內心標準的選項,覺得它是 OK 的,就會採納它,不會繼續尋找其他選項了。

拿怎樣度過大學生涯來舉例子。很多大一新生來到大學後,以為你剛剛從原本嚴苛的高中生活中解放出來,所以一時間不知道怎麼適應大學生活,整天耽於玩樂,荒廢了學業。本來他們完全可以選擇認真地對待學習,可是他們卻選擇了相反的大學之路,其中一個最重要的原因就是沒有在心中設立一個比較高的標準。

特別是那些考入二三流大學的學生,在這方面的問題可能更加嚴重,因為高考本身帶來的挫敗感、二三流高校學生的身份設定及環境暗示、不稱職的老師引發的失望以及同學間放任自流氣氛的帶動作用,都容易讓他們在一個低標準下自覺「滿意」地度過每一天。

一個成熟的人,他的標準來自他的內心,而大多數人,卻受環境所左右。一個年輕人,進入一所不那麼優秀的高校,對自己的標準會不由自主地降低以適應這個環境,減少自身與環境的衝突,而這種做法對他們的人生也許是致命的。一個二三流大學的學生,能夠勇敢地以 「985」 高校學生中的中檔乃至高檔水準來要求自己才是更恰當的做法,他也一定會從中受益。

如果心中有了更高的標準,他甚至可以選擇 「炒掉」 自己的學校、專業,打破舊環境的束縛,尋找更高層次的新環境,比如選擇做這些事:

  1. 選擇網路上高水平的在線課程,不選擇本校水平稀爛的課程;
  2. 選擇中國或國外優秀的教材,不選擇中國某些拼湊而成的注水教材;
  3. 選擇與最優秀的同學或學長交流,不選擇與班級里成天玩樂的同學為伍;
  4. 選擇參加具有挑戰性的各類競賽,不選擇只滿足於完成基本的課程作業;
  5. ……

首先意識到你是有更多選擇的,意識到現在環境給你的選項遠遠不是你可以獲得的全部,然後你便可以讓更高的標準推動著你,去發現更多的選項,最後做出對自己來說更好的選擇

這個方法,不論是對於什麼身份、什麼年齡、什麼處境的人應該都是適用的。

參考資料

  1. 千萬別學電腦 | 碼農翻身
  2. 電腦行業還能火多久?
  3. 996.ICU 背後:程式設計師在互聯網公司的真實生態 | InfoQ
  4. 編程到底難在哪? | 知乎
  5. 這篇寫給想選電腦專業的學弟學妹們 | Crossin的編程教室
  6. 為什麼你可以不讀大學 | 阮一峰
  7. 從《大學之路》思考我的大學教育為什麼失敗?
  8. 紐曼+鴻堡 | 真正的大學生活
  9. 學會編程,而不是學會Java
  • 本文已收錄至我的 Github 程式設計師成長系列 【More Than Java】,學習,不止 Code,歡迎 star:https://github.com/wmyskxz/MoreThanJava
  • 個人公眾號 :wmyskxz,個人獨立域名部落格:wmyskxz.com,堅持原創輸出,下方掃碼關注,2020,與您共同成長!

非常感謝各位人才能 看到這裡,如果覺得本篇文章寫得不錯,覺得 「我沒有三顆心臟」有點東西 的話,求點贊,求關注,求分享,求留言!

創作不易,各位的支援和認可,就是我創作的最大動力,我們下篇文章見!