一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
一路走來,我是看著學姐的背影成長的,希望有一天我也能成為別人的背影~
雖然我成績差,智商低,又丑又懶,但我踩過的坑多啊。所以把踩過的坑分享給下一屆學弟學妹
文章結構:
- 序
- 說給出國黨聽
- 說給學霸們聽
- 本文最適合的讀者
- Computer Sicence 與 Software Engineering的關系?
- 什么是本科生該習得的專業能力?
- 對應這倆能力該如何提高?
- 再詳細說說理論和工程
- 第三個選項
- 對應這倆能力該如何提高?
- 踏入編程的殿堂
- 優秀的程序員應該具備兩種能力
- 啟蒙
- 不得不聽的導論課程
- 技術怎么搞?邊實踐邊學習
- 方法
- 兩條路線
- 一個根本途徑——刻意練習
- 資源分享
- 關于書籍的選擇
- 跋
?
?
[注意事項] 1.兒童必須在成人監護下使用。
2.如同時看到其他相似文章,使用本文前請咨詢導生。
3.服用后若產生不適,或刺激癥狀或病情加重,且持續時間超過72小時,請停止使用或向導生咨詢。
序
首先歡迎各位報考電子科技大學!
如果你在高中獲得NOIP的金牌或者其他學科競賽是省隊水平,或者你很小的時候就在小霸王上寫程序,又或者你已經為Google寫了很多年的程序,本文的信息量以及作者自身的格局都入不了你的法眼,請盡早找到你的導生/輔導員/副院長/院長,和他們一起探討。同時也希望,你不要用自己的優勢去影響同學們,說一些諸如“心比天高,命比紙薄”的話。
如果你對本專業并不帶感,但還想保持學霸的品質不動搖。你已經確定了你的大學生活由刷題,績點,高分,保/考研,出國這些關鍵詞組成,那么本文僅僅作為你的參考。
很多人建議我談談互聯網行業的錢景,可以“挑逗”起大家的興趣,雖然我一口答應下來了,但寫出來卻是下面的樣子:
不要替未來的你做決定,未來的你已經不是現在的你,不要把你現在的感受強加給未來的你。
人對未來的預測是不準確的,總是會高估或低估某些情緒,以及某些事件在未來發生的概率。
不管想做什么,去試一試,去開個頭,不要害怕這件事投入大或者你能力不夠。不要瞎預測,以為你做之前和做之后都是同一個感受,不是的,大多數事情都是做著就有了感覺,就喜歡上了。
所以,先別想什么國內年薪至少12W RMB、美帝6W $起步之類的,編程試試看吧~
說給出國黨聽
???? 【小廣告:大信軟正在籌辦精英出國班,有興趣的同學可以了解下~這是比較官方的途徑啦】
?????? 先要確定到底想申請Master還是PhD?兩者的要求有很大的不同呢。大部分Master的主要目的是培養職業技能,因此一般對科研能力沒有太多要求,主要看你是否達到了入校的最低要求。滿足這個要求的申請者其實很多,此時就看看GPA,TG之類的硬指標了。而PhD的話,就更要看你不同于別人的技能了,GPA就不是你的核心競爭力了~
?????? Master大家都知道,比如最近美帝的Master就在風口上,成功的話一年留學花的錢,在美國工作兩三年基本就回本了~(切記,雖然在風口上,雖然門檻低,但有過硬的技術總比沒有好)
這里主要想強調一下PhD,不要想著PhD就真真是搞科研了,按照現在工業界的需求,很多PhD也去工業界了啊。當然,從Mentor的角度講,如果不是真心搞科研,何必讀PhD呢~我只是提供不一樣的視角。
?????? 如果是申PhD的話,出國前你可以花一年時間去MSRA實習一年(大五?),這一年的實習經歷可比你本科四年那些水獎和GPA要耀眼多了,如果你的目標是TOP10 CS名校這樣的,總得有個這經歷吧~(但我也沒說申請MSRA的實習很簡單);當然,你本科期間發了篇頂級paper也是可以的。
不過話說回來,你要是只把出國當跳板,當我啥都沒說。
但是呢,家里條件如果負擔不起的話,不要太任性。(這里的“負擔不起”是指砸鍋賣鐵那樣的負擔不起)如果不為國外工作、定居的話,保研肯定比砸鍋賣鐵出國來得劃算。當然,并不是說條件不好就一定出不去,很多項目、路子都能走。同樣的,我只提供不同的觀點,自己多了解吧。這里推薦一畝三分地論壇,干貨很多,用了都說好~還有我們成電 清水河畔的出國留學版面。
多說最后一句,分數最好通過正考就考好,不要寄希望于到時候刷分。萬一你的申請全都被拒了呢?那時候想保研都搞不定了…你說你考研?( ̄▽ ̄)” 你看本專業清北復交的考研名額加起來有80人沒~
(學術界的不同階段)
說給學霸們聽
條條大路通羅馬,羅馬城里多學霸。這條路的確代表主流的分配方式,而且機會成本低,幾乎是高中的無縫切換。堅持走下去一定沒問題。
關于考研/保研的問題,我沒有評估過,所以大家請教導生咯~
(個人覺得靠抱大腿,水論文等方式競爭保研資格的人,到底還是沒有 正兒八經考研 或者一直很優秀的人踏實。)
噢,對了,學霸可以,學婊不要,也不要見不得別人好,等你長大了你會發現,有個比你優秀的朋友,其實是一件很省心的事。
最后,戀愛要趁早,學習要搞好。
不對,還有一件事(你們這些學霸就是讓人操心),現在的年輕人,特別容易出現如下癥狀,看了一本比較經典的書以后,就覺得自己了不得了,一定不要這樣!
最最最適合本文的讀者~
本文最適合那些對專業有點迷茫,對大學有憧憬,想折騰出一點東西,但不太想走學霸路線的同學。這里有很多你可能遇到的坑,以及各種不同“技術流”對你的誘惑~絕對干貨滿滿!
Computer Science 與 Software Engineering的關系?、
?
顯而易見,軟件工程是計算機科學的一個二級學科,而單拎出來招生的二級學科學費都比一級學科貴(逃
?
但這只是概念上的劃分,實際的授課中,我們可不是只研究“需求分析、軟件設計……”這些,畢竟沒人會讓一個應屆生去直接帶一個項目,我們又不是工商管理/財務管理/XX管理
?
所以說,我們信軟學院學的是 計算機科學與技術 專業課程的一個子集,為什么是子集嘞?因為所選方向不同,可能會少幾條內容,比如:有的方向不學計算機網絡,有的方向不學計算機圖形學,具體內容等培養方案發下來了你自己去看咯…
?
不過不同于 計算機科學與技術 專業的同學,除了正常的教學,我們的大學生活有很大一部分是實習,這一點蠻實用噠,具體細節問導生咯
?
知道這些你心里是不是開心點啦 ? 百度知道和百度貼吧只能告訴你“計算機科學偏理論,軟件工程偏應用”! 然而這句話并沒有什么卵用,我當時看的時候仍然分不清這倆有啥區別,而現在泥萌好歹能分得清內容上和形式上的差異了。
當然,關于本專業中更具體的方向(嵌入,軟技),我的觀點是“小孩子才看方向,大人只看年薪”,畢竟學校的授課內容不能直接變現,工作中用到的東西,還是得到企業里去學。(我們信軟安排的實習就顯得特別給力,相信我,根據我獲取的信息,實習方面我們做的比復旦軟院還要好)
但話雖這么說,我覺得泥萌自己心里肯定有自己的評價標準,比如認為我電的強項偏弱電,所以跟著嵌入走比較有前途;信工有點通信工程的色彩也是我電的王牌,巴拉巴拉這些的…那就是你們自己的事了。
關于軟件工程這一學科,習而學的軟件工程教育 這篇文章寫得還是很中肯的,大家可以作為補充。
(習而學版? 所有專業必修課的安排)
什么是本科生該習得的專業能力?
我們今后是要就業的,但只要是軟件/互聯網 這個類別(領域內HR、PM請走開…),不管是學術界還是工業界,本科階段干的事都差不太多,因此這里從行業的角度談談專業能力的問題,到這里就暫且忘掉與CS的差異吧。
?
我們這個行業呢,大概有兩類問題,能解決其中任何一個問題的,其實都算數。
?
一類是理論:算法,數據結構,復雜度,機器學習,模式識別,巴拉巴拉~。另一類是系統:操作系統,網絡系統,分布式系統,存儲系統,游戲引擎,巴拉巴拉~。
????? 理論走的是深度,是在追問在給定的計算能力約束下如何把一個問題解決得更快更好。而系統走的是廣度,是在追問對于一個現實的需求如何在眾多的技術中設計出最多快好省的技術組合。
?
對應這倆能力,本科生該怎樣提高?
?
你看,這就開始又有差別了,有差別就會產生分歧啦啦啦。
?
為什么嘞?因為我們這行知識多噻,大家總是不愿意去學新東西,為了給自己的懶惰找借口,他們就發起了不同程度的“圣戰”——Surface ,MacBook ,ThinkPad的設備之爭, Linux 與 Windows的平臺之爭,函數式與命令式的編程范式之爭,IDE 與文本編輯器的 開發工具之爭,Vim 與Emacs的最好編輯器之爭,PHP是不是世界上最好的語言?人生苦短,是不是要用Python ? C++好還是Java好?開發Web是不是真的迫于生計?
?
(一下看到這么多名詞是不是很開心?喜歡的話就一個一個去維基百科搜一下唄~
?
打不開?請學會科學上網——Chrome+紅杏出墻;VPN; ShadowSocks)
?
面對這些圣戰,千萬不要無聊地加入其中。保持一個開放的心態是很重要的,我們可是互聯網領域哎!
?
(程序員的鄙視鏈)
?
當然啦,在你學了C++,而另一個同學卻在搞Java的時候,你可能會不自覺地有排斥心理,然后你的關注點都會變成: “C++這也好,那也好;Java這也不行,那也不行”,“我學的東西是有用的,有前途的;他學的技術是過氣的,要被淘汰的”。千萬不要這樣! 這種念頭偶爾可以想一想,但別讓它在你的內心發芽,否則直接否定另一個領域是很吃虧的一件事,你可才只是本科生啊!
?
反正將來,語言你都要會,平臺的差異你都要知道,為什么要斷送自己學習這些東西的機會呢?你真的以為不知道垃圾收集的原理,和一些底層的、可以通過C++的練習而得到的操作,你真的可以在某些關鍵時刻操縱好Java嗎?當然有些人會覺得,我估計一輩子不會遇到這些問題的,所以我們還是不管他了~
(糾結選哪種語言?)
?
但是,但是,但是,即便你再有開放的心態,有一道坎是不能用心態解決的,因為它會有更根深蒂固的“陣營心態”——這就是前面說到的理論 和系統/工程 這樣大方向之間的差異。比起用C++還是Java,這方面的糾結才是讓人惱火噠。因為編程語言和工具的轉換成本還是比較低的,雖然也要花些功夫。但理論 or 系統 ? 這樣的決定,讓人感覺影響就比較大了!
?
?
本著先問是不是,再問為什么的原則,我先給大家擺事實:
?
搞理論的話,本科期間顯然就是參加ACM-ICPC了。這是一個江湖,既然是江湖,就有武林高手,有定期的英雄大會(regional,finals),有各大門派(學校,如國內7大門派——THU,PKU,SJTU,FDU,ZJU,SYSU,UESTC),有武林盟主(國內的ACRush,國外的Petr和tourist),有武功派別 (數據結構流,幾何流,等等),甚至還有各種秘笈(各大學校內部題表和模版),江湖上經常流傳各種謠言和八卦,各大高手和江湖小蝦們躲在宿舍黑暗的小黑屋里,修煉自己的絕世武功。搞好的話保研加分哦 ! 不過它的初衷是讓有興趣研究算法的大學生鍛煉思維能力。而且光想著保研加分的話,它的性價比是最低的…
?
當然啦,如果你天賦異稟,本科期間就發paper也不是不可以。(你看清華就沒太把ACM-ICPC放在心上,大牛們直接去搞科研的居多)話說回來,ACM這玩意可看智商,看天賦,拼數學。所以這項比賽是我電 數學學院 引領潮流而不是 計算機學院 或 信軟學院,你要做好長期被打壓的準備。
?
搞系統的話,就是造輪子,拆輪子。自己做點小東西(iOS,Android,Web),模仿別人的設計做個東西,看看大牛們的代碼。你可以自己搞,也可以加入創新工坊的一個工作室,如果你水平高的話,還能搞點零花錢。但這玩意就沒有量化的標準了(其實有,就是上Github上為開源項目共享代碼的行數,但初學者貿然接觸開源的玩意,沒啥意思),也沒有保研加分的政策了,所以如果不是真愛的話,一些人興趣磨滅以后也就放棄了。所以比爾蓋茨說,看到現在學編程的人經常都把編程看作解各種腦筋急轉彎的問題,他覺得很遺憾。
?
再詳細說說這倆部分
????? 這倆兄弟之間依然是有鄙視鏈的…我們行業不是一個和諧的行業~同行之間都是赤果果的鄙視
????? 一般人都會認為ACM很牛~學霸這么想的,學校也是這么想的,因為考智商,能拿獎,可量化。
????? 先給他們一悶棍 ——ACM的局限性!
?
????? 對于學術界,這玩意只是奇淫技巧,入門級的游戲。我并沒有看到過神經網絡,機器學習的算法出現在ACM的題目中~
?
????? 對于工業界,工作中大部分復雜的算法都有現成的庫了, 不需要自己實現。會用到的基本都只是一些很低級別的算法, 比如二分, 簡單hash, 或者用map建立一個索引。這一點也常常作為北大青鳥之流或者普通院校的老師的論據~
?
????? 再給做工程的同學一顆糖(or 悶棍?) —— 被誤讀的工程
?
????? 說到工程, 很多人就覺得是查文檔, 調接口, 以為就是體力活,所以有了“碼農”這個說法,還有一句名言“我們不生成代碼,我們只是Github的搬運工”。
?
????? 寫工程代碼確實不少時候就是查文檔, 調接口, 但是其精髓應該是隱藏在這些接口后的設計哲學, 這種東西光看文檔和接口是看不出來的, 得真正自己去挖掘, 去動手寫自己的代碼, 去認真讀別人的源碼。
?
????? 不要把工程這個坑看得太淺噢,工程的魅力在于對項目的不斷提煉,對代碼的不斷重構,它的設計哲學是最美的。一聽到“設計”、“哲學”的組合詞,這個坑就不會淺~ 一定要多寫。
注意!!這可不是寫完一個俄羅斯方塊以后,又完成了貪吃蛇這么簡單的轉化。如果只是這種程度上的“開發”,我覺得你寫一個項目和寫100個項目沒啥區別,無非是這些游戲的邏輯知道多了一點,API熟悉一點,還是處于入門的程度,低端碼農的程度,廉價勞動力的程度,依然會被人瞧不起的…
?
當然,你做完基本的俄羅斯方塊,加了華麗的效果,代碼量很足了,這已經值得肯定啦。但你想想,做個俄羅斯方塊的AI,是不是更厲害呢~當然,這玩意就涉及算法了。所以你也可以開始想模塊化的問題。怎么做一個游戲用的GUI庫?怎么做一個游戲用的腳本引擎?怎么給他們制作工具?怎么寫一個游戲引擎?怎么寫一個RPG Maker? 造輪子,量要足,難度要夠。
?
多造輪子,但不要重復造相似的東西,要造有含量的東西!不然你也覺得無聊不是?等你熟悉以后,那種一折騰需要大半年的那種輪子,是最好噠~比如自己寫個圖形庫,自己搞個IDE~
?
還有一句話要注意“不要重新發明輪子”,這句話不是“不要重新造輪子”。原文的目的是要你多看書,多見識,不是讓你眼高手低的!!。
?
無論如何,請你務必要相信:當你輪子造的多了,你就擁有了整個世界!
?
????? 再給ACM的同學一顆糖吃~
?
?????? ACM中的一些基礎算法技巧(比如二分, 單調棧, 單調隊列, 線段樹, 強連通等), 能讓你更加抽象和理解你做的東西的本質。而且ACM上手以后,至少不會走上邪路,也屬于康莊大道(當然,你只練ACM的話,寫出的代碼會有點丑),不像上面的工程同學,如果你一直被當作廉價勞動力,自己卻還樂在其中,就只能成低端碼農了…
?
??????? 舉個栗子~有一堆地圖數據, 由點和邊表示, 邊是有向的, 本來這張地圖上的點是應該是相互能夠走通的, 但是數據出了問題, 需要把不能走到的點給報錯出來。(簡化了一下下)
???????? 學過圖論話,稍微思考一下, 問題就是“一個有向圖, 求連通性及報出孤島和斷邊”。一個tarjan算法就搞定了。
????? 再來一個栗子:
????? 在一個大型項目中, 有一些小模塊。 模塊間相互依賴, 現在這些模塊出現了死鎖, 需要你安全地解除死鎖, 這里安全的定義是如果模塊A依賴模塊B的資源, 那么一定要先關閉A再關閉B,就醬紫。(同樣化簡了一丟丟)
????? 也是看似復雜的任務, 其實稍微提煉一下就會發現模型是一個拓撲排序。
?
????? 在一些小問題上, ACM能讓你把問題考慮的更加抽象, 你能學到更多, 而不是單純的停留在需求本身。
?
現在你對這倆兄弟有個大概的印象了吧?
?
對于路線問題,先不要急于給自己下定義,分類別。每個領域都可以去試一試,管他理論工程,前端后臺,C/S還是B/S,嘗試一下你不上當,嘗試一下你不吃虧~畢竟我們還年輕,有時間去試錯,去找到自己喜歡的方向。鋪墊那么多學科知識,就是為了讓你對編程有一個正確的了解,沒有宏觀的把握,很容易迷失噠!
第三個選項?
?
但凡有點國際視野的童鞋,就會去看看美國那些CS名校是咋教的。對照一下它們的課程體系和本學校的專業課程體系,會發現基本上差不多,所以至少這些專業課的設置是沒有問題的。但是!但是!我們學習的深度根本就跟國外不能比啊!我們一個學期七八門課啊,國外是一個學期頂多選三門課啊!
所以這里給一個建議,就是按美國的標準學好專業課(可以去Coursera或網易云課堂,網易公開課跟幾門MOOC)——
(計算機專業體系)
學《計算機組成原理》,就自己設計一個CPU,至少做一個單周期的,有余力就做多周期和流水線的;
學《編譯原理》,就搞個LINQ編譯器+運行時庫;
學《操作系統》,就自己寫一個操作系統Kernel;
學《數據庫原理》,就自己寫一個小型的數據庫管理系統;
學《數據結構》,就去ACM 的OJ上做幾道題。
確實,這樣的話相當于每門核心專業課的大作業都是項目級的了(大一上用C語言實現的學生信息管理系統不叫項目…),但你在985院校啊!你在985院校啊!你在985院校啊!你不能按那些普通院校的標準要求自己啊,有些課程所在方向未設置的話, 請自行補全。
確實,這些領域每一個都自成體系,每個領域都足以花費一生去研究。但你只是本科生啊!但你只是本科生啊!但你只是本科生啊!本科階段夯實這些領域的基礎,以后不管是選擇研究方向,還是做工程時遇到的底層問題,有個了解總比啥都不知道強啊。
哪個領域熱門?有前途?你個小本科生操什么學術大牛的心啊。
我用一個簡單的例子回答你:
畢業后去阿里好還是騰訊好?
這倆公司哪個不都是多少年的企業了?在哪學不到東西?你是去當小兵,又不是去當高管。所以說,不能浮躁,不能事事都想找出個最優選項,你才大一,確實沒必要~打牢基礎,學好數學、英語才是正道。
(你可能需要點的技能樹)
?
?
?
?
?
?
?
?
?
?
?
?
如何入門編程?
上一小結把本科中大致走向介紹了一下,不過…喂喂,學弟學妹還不會編程哎!
我可沒打算用一篇文章把大家的編程帶入門了…
先普及概念啦啦啦,這時候再忘掉本科的路線之爭吧~忘掉刷題的學霸,忘掉工作室的大神,忘掉保研,出國巴拉巴拉,我們談編程!
?
優秀的程序員應該具備兩方面能力:
- 良好的程序設計能力:
- 掌握常用的數據結構和算法(例如鏈表,棧,堆,隊列,排序和散列);
- 理解計算機科學的核心概念(例如計算機系統結構、操作系統、編譯原理和計算機網絡);
- 熟悉至少兩門以上編程語言(例如C++,Java,C#,和Python);
?
- 專業的軟件開發素養:
- 具備良好的編程實踐,能夠編寫可測試(Testable),可擴展(Extensible),可維護(Maintainable)的代碼;
- 把握客戶需求,按時交付客戶所需要的軟件產品;
- 理解現代軟件開發過程中的核心概念(例如面向對象程序設計,測試驅動開發,持續集成,和持續交付等等)
嗯,我只是先介紹一下名詞,好歹以后看到知道怎么回事,不然多丟人,啊哈哈哈…
我并不覺得高考后的暑假可以讓你一躍成為大神,所以這里只談啟蒙階段。
?
啟蒙
深呼吸,我們要開始啦!
先看段視頻唄:What MostSchools Don't Teach
下面我來給你洗洗腦~
?
編程很酷
You can code. They cannot. That is prettydamn cool.
– LearnPython The Hard Way
?
不要浮躁
Bad programming is easy. Even Dummies can learn it in 21 days. Goodprogramming requires thought, but everyone can do it and everyone canexperience the extreme satisfaction that comes with it.
?
保持興趣
Most good programmers do programming not because they expect to get paidor get adulation by the public, but because it is fun to program.
– Linus Torvalds
?
再來點具體的~
我們信軟沒有 計算機導論 這門課,和編程有關的直接就是C語言了,我覺得不好,暑假補一門公開課吧:
MIT 計算機導論課(如果你英語不過關:麻省理工學院公開課:計算機科學及編程導論)
Harvard CS50 (如果你英語不過關:哈佛大學公開課:計算機科學 cs50 )這門課與MIT的導論課互補。教學語言涉及 C, PHP, JavaScript + SQL,HTML + CSS,可以很好激發學習計算機的興趣。
?
看這兩門課的時候,可以用Codecademy 把 Python的操作熟悉一下;
學C語言的時候呢,不要看譚浩強的書~ C語言編程 或者 C和指針 都不錯,要看書噢,要敲代碼,具體細節問導生咯。
編碼的奧秘 這本書也可以放進待讀書目啦,這樣你對整個計算機架構就有個了解啦啦啦
Computer Science: An Overview 這本書是清華第一學期要看的書,對計算機科學有了系統的介紹~
?
結束啟蒙階段后,我們積累了一定的代碼量,對編程也有了一定的了解。這時你可能想去學一門具體的技術,諸如Web,Android,iOS什么的,嘗試做一些盡可能簡單的東西吧,給自己一些正反饋,補充自己的推動力。
?
但你肯定會問Web開發這些怎么學…學校有選修課,網上也有那種入門級的視頻,也可以看書自學~
?
技術怎么搞?邊實踐邊學習!
以做網站為例,首先你可以看看《Head First HTML5》和《Head First PHP & MySQL》,或者用Codecademy,學會基本操作。然后找一些作品,比如WordPress,和它的一些經典模板,去看別人是怎么做的。然后,你 就可以自己設計一個小網站,嘗試把它做出來。不用等什么都學會了再開始做。做的過程中,你遇到什么障礙,再有針對性地去學習和解決。
做完了是吧?但別深入,這些技術有無數的細節,將來會有時間去學習;同樣的,這時候也別過于深入特定的框架和語言,現在是學習計算機科學核心基礎知識的時候,抄近路是不對的~
你搞搞技術可以,但你一定要把通用基礎知識搞明白 ! 特別喜歡這些玩意?我不管,我不管,我不管,反正你要把基礎打好。
?
方法
嘴上說只講啟蒙,身體卻很誠實嘛…
兩條路線~
1.???特別喜歡編程的,打心眼里喜歡的,比如@vczh ——先寫再看書
輪子哥說過:“
像設計模式這種需要大量經驗才可以領悟到的知識,如果你從來沒獨立寫過一個上萬行的程序,你覺得你能理解設計模式在講什么嗎?你不能!我覺得這種時候能做的也就是背下來,理解什么的都是扯淡。
但當你把項目做得越大、越復雜、算法越扭曲、界面越華麗、尺寸已經大到你覺得不學習新的方法論就肯定會讓代碼失控的時候,這個時候你來看設計模式的書,保證是每看到一個模式都覺得人家說到你心坎里去了。那你不僅可以迅速理解,而且以后還可以不由自主的想起來使用它。”
?????? 但是嘞,這期間會有太多的事讓你中斷這一行為了,如果不是真愛,一定堅持不下去~
?
?
2.???? 普通用戶 ——先看書再編程
這個就容易理解啦~符合我們的認知規律,不再贅述。
?
一個根本途徑——刻意練習
我有這個必要告訴你們一點,人生的經驗~
知識分為舒適區,學習區和恐慌區。舒適區——輕松搞定;學習區——大量投入;恐慌區——無從下手。所以我們練習的時候,要盡量把題目都安排在學習區這里,這樣才能讓你進步快的同時,還不會被問題打倒。
?
豆瓣上有個叫心智工具箱的系列~
還有劉未鵬的《暗時間》,都是講認知科學的,有興趣可以看一下~
?
?
?
參考資源:
@蕭井陌、@Badger??????編程入門指南v1.4
@左耳朵耗子??????????????? 程序員技術練級攻略
@vczh? ????????????? 如何成為牛逼的程序員
這是幾篇比較有質量的入門攻略了,可以參考一下,具體細節問泥萌導生哈。泥萌導生可是身經百戰了,見得多了。
其他的各種資源,自己搜羅咯,智商能低,情商能低,搜商不能低!
?
?
?
?
?
?
?
?
?
?
資源分享
知乎上,有哪些計算機科學與軟件工程方面值得一看的問答?
知乎上,前端開發領域有哪些值得推薦的問答?
看不看先存下來,萬一無聊的時候想看了呢!
?
對了,關于是下載電子書或者自己買書的問題,不要道德帝,不要玻璃心!要懂法律:
中華人民共和國著作權法釋義 (第22條)
第二十二條 在下列情況下使用作品,可以不經著作權人許可,不向其支付報酬,但應當指明作者姓名、作品名稱,并且不得侵犯著作權人依照本法享有的其他權利:?
(一) 為個人學習、研究或者欣賞,使用他人已經發表的作品;?
(六) 為學校課堂教學或者科學研究,翻譯或者少量復制已經發表的作品,供教學或者科研人員使用,但不得出版發行;
?
?關于書籍的選擇
其實僅僅從入門的角度講,你能學到的那點知識,網上隨便那種博客都能滿足你。但為啥我們總喜歡黑譚浩強呢?(這一次,譚浩強重新發明了C語言)因為即便知識有了,內功不扎實,對算法或者工程都沒有益處,所以國人寫的那些書,還是盡量不要看了~看看經典的吧 !
而且你想,你讓我跟你推薦本書,我肯定也會說比較經典的啊,你一查,發現這書牛哎,是不是對我的信任度也就高了呢? 面試的時候,如果面試官問起來看過啥書,你說出來那幾本經典書的時候,這也是加分項。不信你看 怎樣花兩年時間去面試一個人
關于書單,有一份比較好的總結,請參看 程序員必讀書單
?
?
?
?
?
?
?
?
跋
這里就是一些老生常談,老調重彈了~ 如果你有耐心看到這里的話,堅持看完吧~
?
不積跬步,無以至千里;_______________。(請填空)
?
本科生找工作和研究生不一樣,基礎是最重要的,競賽成績和項目經驗乃錦上添花。
?
本科生找工作和研究生不一樣,基礎是最重要的,競賽成績和項目經驗乃錦上添花。
?
本科生找工作和研究生不一樣,基礎是最重要的,競賽成績和項目經驗乃錦上添花。
什么樣的年紀做什么樣的事,就是最好的安排。
?
這句話對應想表達的意思就是:在該打基礎的時候要好好打基礎,不要追求一些浮夸的東西。你現在走的捷徑,以后會有多達十倍的彎路等著你繞。
?
互聯網行業最大的包容性在于它可以接納各式各樣背景千態、水平不一的入行從業者。對于CS/SF專業學子來說,是好的也是不好的現象。
?
你看人家通信工程啊,微固啊,這種科目屬于門檻高,沒人教你學不會 的那種。EE的東西,光靠上課那點東西連門都入不了。只上過學校模數電課的人,做出來的板子壓根就不能用,你以為按照書上的連線電路就能正常跑么?有時候跑著跑著就會自激震蕩,這個時候又要具體情況具體分析。不同品牌的元器件即使參數相同也會在不同頻率上有不一樣的性能,怎么選擇也是一門學問,這就已經不是電路圖可以描述的了。
????? 深入到微弱信號、高頻那塊更是一堆深坑。布線、電磁兼容、信號完整性分等等要注意的點都不是自己隨便看看書,就能學會的,大多數人還是靠前面的人帶著走的(當然,我電的通信工程是有這個實力帶著走的)。而且,EE動手實踐的條件更高,至少要有示波器吧。再加上實驗過程中的隨機性,它的門檻你懂了吧?
?
而我們就不一樣了。從學科上講,CS具有完備性的學科體系,是熵為零的,各種知識和模型都是自洽的,是為實際應用服務的,你寫出來的代碼是什么,運行出來就是什么。學習工具只要一臺電腦也就足夠了。從實際運用上講,網上不管是電子書 還是技術博客也多得是。連大專學歷的人也能碼出很多代碼,而且人家寫SQL語句,調API說不定比你還熟。
所以如果你不掌握核心科技,就會被無縫替換掉~
說真的,現在才開始搞編程,已經晚了一大半了 …極少數人能在本科四年完成超越,大多數人還需要研究生的積淀才能成為一名優秀的程序員,所以,要拿出高三的勁學編程噢 !
好吧…我是故意渲染了就業壓力的色彩,其實按照我們的擇業標準,我們的意向公司是壓根不會招那種培訓學校出來的學生的,因為那幫人根本不能用,啊哈哈哈哈…
但我們專業的學生是不是搞好編程就真的成功了?不見得。所以我還是建議大家,除了計算機科學以外,多接觸一些經濟金融方面的東西,往大了說可以 提高個人素質,往小了說,可以為轉碩士金融或者CS PhD之后的Quant之路做鋪墊。
《計量經濟學導論》、《微觀經濟學》、《期權、期貨和其他衍生品》是三本很經典的書,當然啦,你也可以問你相關專業的同學~之所以寫在跋里,是避免與主題造成沖突,但我個人覺得還是蠻重要的哈。當然,還有寫作之類的
來個彩蛋!
? ?根據 我電校友 ——目前是鵝廠的安卓開發主程 ——的介紹,校招要看如下內容!~
· 實習經歷
· 專業成績排名
· 專業競賽成績
· 高水平科研成果
· 校內技術團隊/互聯網企業俱樂部核心成員
· 國家級重點實驗室核心項目成員
其實還有一個彩蛋!——送給出國黨
你要出國,好歹得想清楚下面幾個問題吧?
國內外CS教育的異同?
如果你想讀研,你自身的興趣點在哪個領域?
如果本科想搞科研的話如何起步?
????? 保研vs 出國:
a)是否應該在國內先讀研再申請出國?
b)應該選擇保研還是出國? ?
c)導師的承諾是否可信 ?
如果鐵了心想出國,MasterOr ?Phd?
你好歹得知道一下自費讀 Master的費用開支 ??全獎PhD的就業問題?
以及美國博士要讀多久才能畢業這樣基本的問題吧????
想好了以后,那么Master的話怎么準備?? PhD的話怎么準備?
不管怎么說,基礎是最重要的!如果你核心專業課沒有掌握,只是分數高,績點高,那你叫高分低能;如果你核心專業課沒有掌握,只是鼓搗Web開發,Andriod開發,即便是參加ACM,也是點歪技能樹 ;如果你核心專業課沒有掌握,只是這主席,那部長的,那你叫不務正業!
???? 有的知識可能你學完以后的很長一段時間里不會在實際工程中接觸到,但請不要質疑這些知識的存在和意義,那只是因為你做的工程還不夠牛逼。它們是一種烙印式的知識儲備,否則當你真正需要用到它們的時候,會有一種技術盲從感。
????? 雖然互聯網行業是一個需要不斷迭代知識體系的行業,但萬變不離其宗,天才也是少數,最好還是一步一步來。共勉!
總結
以上是生活随笔為你收集整理的一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三阶行列式求法
- 下一篇: 弘辽科技:优化宝贝标题的4大雷区不要踩!