天天看點

停下來,回頭看 ——記2020BUAA軟工第一次作業-熱身!

description: 'Mar 1st, 2020 - Mar 3rd, 2020'

項目 内容
這個作業屬于哪個課程 2020春季計算機學院軟體工程(羅傑 任建)
這個作業的要求在哪裡 第一次作業-熱身!
我在這個課程的目标是

完成一次完整的軟體開發經曆

并以部落格的方式記錄開發過程的心得

掌握團隊協作的技巧

做出一個優秀的、持久的、具有實際意義的産品

這個作業在哪個具體方面幫助我實作目标

熱身、熱身、熱身

在開始寫出自己可能迄今為止最大規模的代碼前

認清自己

同樣我也送給大家兩首小歌《你要相信這不是最後一天》 和 《你的答案》。

0x00 不認真聽講其實也沒有那麼錯

description: 閱讀完這篇部落格,發表一點自己的小小看法。

在這篇部落格中,Scalers 給我們分享了幾個觀點,認為大學生上課就是要聽講,我整理在下面:

  1. 認真聽講是一種能力。學會認真聽講實際上是對人的一種能力的培養,大學中如果沒能養成認真聽講的習慣可能就會導緻散漫的習慣的養成,直接導緻關鍵時刻也不能繃緊自己的弦。
  2. 課程講的不好不能成為不聽講的理由。Scalers 的觀點是始終相信的整體水準是優于學生的,大部分情況下學生認為的老師沒水準其實是自己沒水準。還提出了大學是專治青春期各種不服的地方的論點。
  3. 課程有用無用不是一個大學生的格局能判定的。Scalers 認為很多學生評論課程落伍實際上是由于自己短淺的目光所導緻的,如果你在大學裡能訓練自己不帶情緒地學好任何課,你畢業走上社會,會成為非常有競争力的人。
  4. 跟上老師的節奏,梳理你的思路,這是最快的進步。Scalers 提出了一種“原生态”的思考模式的概念,指的是沒有經過系統刻意地訓練,沒有經過斧正,而是任由随機事件随機沖擊産生随機結果的狀态。這種“原生态” 類型的人在社會上很容易被當成韭菜被收割,而大學聽課可以給大腦裡留下專業領域帶來的精神、信念、理論和體系。
  5. 聚精會神在這個時代已經是稀缺能力,大學應該打好基礎。

順手查了一下 Scalers 的資料,從公衆号 ScalersTalk 和他的知乎中搜集的,分享一下:清華大學計算機大學,14年1月開始寫作,每天持續産出,文章覆寫面從外刊精讀到機器學習,一定是一位很了不起的人。從16年開始做社群,社群内部發表高品質文章,推出高品質課程,群内互相監督學習。社群吸引了很多人的加入。社群的加入具有門檻,最表面的門檻就是資金的門檻,入群費用從1k漲到了3999。

上面的資料隻是介紹一下作者,我這一節的内容對事不對人,也許未來我也考慮加入社群看看呢 😃

對于作者的觀點,我有感同身受的地方,但也有駁斥的一方,我就不再一二三四地來像對标似的辯論,我隻是講一下我的一點經曆。

首先我很大程度上也贊同這一說法——大學應該聽講,但是我也認為我們任何事情都不能走到極端,認真聽講亦是如此。

Scalers 就讀清華大學,想必接觸到的教育資源都是數一數二的,我以一個北航大三學生的身份,若是我也能有機會到清華聽上幾節課,那就算是很多清華的學生口中的“爛課”,想必我也是會很認真的。因為我也覺得,清華的老師的整體水準是優于學生的。可是,在我真實的生活中,在全國99以上的大學生的真實生活中,每天是在清華上課嗎?是以當我看到作者的一句 “其實我是不相信一個認為老師沒水準的大學生,水準要高過老師的,老師站台講台上,你就好好聽講。” 的時候,不知怎的,讀出了一股 “何不食肉糜” 的感覺。

我自己在北航學習,也已經是全國頂尖的學府了,但還是不免在前兩年的學習生涯中,遇到了一些大家口中的“爛課”。我的母親是一名教師,是以我對老師是非常尊敬的,我小時候就看到我的母親晚上備課的樣子,在家裡的書桌前親自動筆演算着一道一道數學題的樣子,但是我的經曆告訴我,不是所有的老師都是負責任的,不是所有的老師都是值得我們尊敬的。

我始終認為,上課認真聽講是衡量老師能力的最好展現,而不是一種強制措施。學校每學期末都會讓學生填寫一份教師評價表,評價完了教師才能看到成績。這一種雙盲的制度确實收集到了很多學生的回報,但是想問,有多少人是認真填寫的?有多少人是直接腳本一跑,為了看成績而看成績的?

教學的評價應該是一個從第一堂課開始到最後一堂課結束,從始至終的一個連貫的、持續性的過程,而不是以期末成績的檢視作為交換的一個一錘子買賣。Scalers 也說了一句話我特别贊同 “當一個學生說老師講得爛的時候,我其實是期待學生能說出來具體哪裡爛,而且能指出明确的點以及可改進的方案的。” 但是這句話說起來真的太簡單了,實際上做起來真的有那麼容易嗎?我相信,每一年的學生在學期進行中對老師和課程有着不盡的吐槽,但考完試之後為了拿到成績而填寫教師評價的時候,一個學期貫穿的吐槽還有多少人是記得的?然後第二年的學期又換作了下一屆的學弟學妹們,吐着一樣的槽。為什麼大家學期中不回報?因為學期中的回報沒有雙盲啊。我隻能私下吐槽,誰會為和分數過不去呢?等到我分數到手,我也離開老師了,我也懶得吐槽了。北大有樹洞,北航有ihome,ihome作為一個訴求社群其實已經很不錯了,訴求80%一天内解決,99%三天内解決。但是這個訴求,他沒有一個匿名的制度啊,學生們是真的想講出老師哪裡爛,但是對學生有保護的措施嗎?

扯遠了,回到上面。我堅信:一堂好課,一個好老師,你不用讓大家認真聽講。北航最最最最最有名的老師之一:高甯老師。他教的是什麼?馬克思主義哲學和黨課。這兩門課敢說自己從始至終認真聽講的估計沒什麼人敢站出來,但如果是高甯老師的這兩門課,我敢站出來。非常有幸在大一的時候上了高甯老師一個學期的黨課,沒有一次遲到,沒有一次缺席,沒有一次走神,有時候還是哭着走出教師。是高甯老師有魅力嗎?稀疏的頭發,普通不過的教師面孔,但是隻要他一出聲,人格魅力加滿。高甯老師會為了一堂2小時的課準備許久,讓同學們能夠喜歡。我記憶最深的一堂黨課是我哭着走出教室的那一次。高甯老師給我們講***的知青歲月,給我們講梁家河的曆史。在他的口中,梁家河的畫面仿佛就在我們的眼前。為什麼?因為高甯老師自己親自走訪過梁家河,挨家挨戶和村民交流,收集村民口中的青年***。 在講到***在梁家河插隊的時候看到報紙上有成功修建沼氣池的案例,帶幾個人取取經的時候,高甯老師拿出了一張早已泛黃的1974年1月8日的《人民日報》——這就是當時***看到的那一期報紙,給大家觀看。 那一堂課我雖然坐在右後方的位置,距離講台比較遠,但我不可能忘記。下課的時候,我走出了教室,卻突然想跟老師說一句謝謝,回頭見到老師,言未出,淚已流。這就是我最尊敬的老師。高甯老師在後續的采訪中這樣說到:“報紙的真實能夠給大家反映出那個時代的整個的印記,這就叫觸摸曆史的真實。”。

一個優秀的課堂,一個優秀的教師,無論是什麼樣的學生,他都不會走神。一個普通的課堂,一個隻會念PPT的老師,如果不是必修課,我真的會做自己的事。

課講得不好憑什麼不能成為我們不聽的理由?老師付出了時間,我們就沒有付出時間嗎?幾百個學生的時間和一個老師的時間,質比不過量也比得過吧,甚至有的時候質也可以一比。當教師的成本高嗎?挺高的,教師是紅燭,照亮學生;但同時也挺低的,現實中隻需要考取教師資格證就能上崗,上崗前誰都不知道是不是一根紅燭。

為什麼說上課不認真聽講就不能培養認真的能力?能抵抗外界的幹擾獨善其身,靜下心來做自己的事,這種能力難道比認真聽講差嗎? 這也是一種 聚精會神 的能力,而且是不比認真聽講差的能力。

再者,我認為一堂課有用無用确實是大學生來判定的,我是老師上課的唯一對象,不是由學生來判定,還能由誰來判定?我真的找不到一個合适的第三者,來說服我自己。我自己是計算機專業,是以我就自己學習的專業課來說一下。一個計算機專業的學生,除特殊情況意外,大機率都會在大學生涯修四座大山——計算機組成原理,操作原理,編譯原理,計算機網絡。我不否認會有一部分學生覺得自己隻是來學習做網頁的,隻是來學習算法的,隻是來學習如何找工作的,有可能會認為這幾門課對我們毫無用處。但是我相信很大一部分同學,可能在學習之前會覺得這些沒用,但一個學期下來确實覺得自己受益匪淺。就拿上個學期結束的編譯原理來說,北航要求每個通過都做出了一個屬于自己的編譯器,隻要按照給定的文法,就能在自己的編譯器上跑起來,這種自己實作的小作品是很令人興奮的。緊接着 Github上就出現了一個大火的 文言文程式設計 還有最近小火的 東北話程式設計。外行看熱鬧,内行看門道。學習了編譯原理的同學就知道裡面其實主要是在詞法分析和文法分析的部分下了功夫,定義了一套屬于自己的詞法和文法,在生成中間代碼一層開始,其實就已經交給成熟的Python了。 另外,在最後優化編譯器的時候,我們也真正地接觸到了很多 代碼是如何跑起來 的東西。比如我們對一個 2 的幂次做取模,實際上就是做一個和 2的幂次-1 的位運算,在硬體上位運算的速度要比取模操作快得多。這恰恰也是C編譯器已經做了的,C編譯器在取模前會先對模數進行判斷(我估摸着也是 n&(n-1)==0 的判斷),如果模數是2的幂次,則進行位運算而不是取模運算。這種隻有自己親自動手做了東西,誰會覺得沒用?怕就是那些沒有做的人。是以我不否認這些人的存在,但我也相信這部分人是少部分人,絕大部分人還是會對編譯原理這門課評價為有用而不是無用。

最後,我非常同意跟上老師的節奏,把一堂課聽順下來,确實能汲取到不少的知識。每次我有時間預習的時候,第二天聽課都特别舒服,因為我既有知道老師下一步要講什麼的準備,又有等待一個優秀的老師可能會突然提出一個驚喜的例子的未知。唉,可惜能夠有預習的時間是極少的。

最後,不請自來地也想給 Scalers 提一個建議,可能他永遠不會知道一個北航的學生會在第一次軟工大作業中給他提一個建議,想建議他:在每天高産的間隙,翻看一下自己以前寫過的部落格,看一下别人對他的部落格的評論和留言,我相信一定會有一些新的東西,這種東西可能是随着時間的推移對同一件事産生了新的看法,也可能甚至是從以前的自己中學到了一些什麼。 這也是我在時隔半年打開部落格園時,翻看自己之前寫的面對對象的部落格的有感而發。

人不僅要堅定地向前走,還要時不時看看自己背後的腳印。

0x01 我選擇了你,計算機

description: 本節主要回答以下幾個問題:

你為什麼選擇計算機專業?你認為你的條件如何?和這些部落客比呢?

計算機是你喜歡的領域嗎?是你擅長的領域嗎?

你熱愛這一專業嗎?你對計算機的熱愛是怎樣的?僅僅是口頭的嗎?

2005年,我們家有了第一台計算機。若不是父親的攝影的愛好,估計我們家要晚上幾年才會引入計算機這個成員。如今已經15歲的他,雖然各方面的性能已經被這個時代抛下一大截了,但是在日常斷網運作的保護下,依然堅挺。

我考慮過計算機專業嗎?不,我連北航都沒考慮過。

若不是差個幾分,我可能就去到北京的另一邊——南京,去南京大學學實體去了。

其實我在報考大學的時候對實體的愛是偏執的,因為自己在高中三年的生涯中,數學競賽占據了第一年,實體競賽占據了第二年,而在學習實體競賽的一年也是給我帶來獎項,帶來成就感的一年。

高中讀的是競賽班,離計算機專業最近可能也就是去機房看資訊競賽的選手打題吧,都是我看不懂的東西,不過我也不感到遜色,畢竟實體競賽的東西他們也看不懂。

不過我是在高中的時候就知道清華姚班的姚期智院士,還知道他曾經說過,學習計算機的話,推薦大學期間學習實體,高興了許久。

直到成績出來前可能對有什麼學校都不是很了解,因為家在廣東,更加了解港大和港科大。聯考出分後,對着港大的

conditional offer

,差了一道理綜選擇題的分數,懊惱傷心了許久。幾天後撿起聯考志願填報手冊,看看自己的排名能到哪裡去。對我而言,南大,一個聽說過的C9老牌高校,實體專業名聲遠揚,但也是一個是否錄取取決于報的人多不多的學校;北航,一個隻從愛好航模的兄弟口中聽說過的學校,但我的成績可以随便選專業(嚴格來說高工差兩分,但也讓我幸運地直接進計算機學院),面對這種情況我對學校沒什麼好糾結的了,沖南大保北航,南大專業可能是天文,北航專業随便選。對北航并沒有太多了解的我,把高工填在了第一位,而風評最高的北航計算機,排在了第二位。我的計算機專業,就此開始了。

你要是問我的條件如何?我隻能說比上不足比下有餘。得益于基礎學科的紮實,入門計算機不是非常的吃力。但是相比于已經和計算機摸爬滾打了好幾年的資訊競賽選手們,我也不期望能夠在專業知識上靠大學四年超越他們了,畢竟上了北航的個個都是人才,學習一個比一個狠,特别是6系。

和這位部落客相比,我簡直不可比吧。

我和計算機的緣分,和很多同齡人都不可比。很多人小時候就因為遊戲和計算機結緣了,可是我偏偏是一個不愛玩遊戲的人,電腦在我們家隻有每次拍完照才能被寵幸。我也對這個黑色的機箱中是如何運作的,一點興趣都沒有。

不過我和這位部落客一樣,也思考自己是不是選錯方向了。隻不過他是覺得選錯了應該學計算機,我是覺得選錯了計算機。因為我剛上北航的半年,又是通識教育很少接觸計算機的内容,又是仍對實體念念不舍,一度懷疑自己是不是也太草率了,隻因為計算機熱門就選擇了他,都不知道要學什麼。面對自己的第一台電腦的桌面上的

devcpp

,我迷惑了。

我對計算機的興趣,是從資料結構開始的,是以說白了,還是從數學開始的。果然是國小就開始學習奧數的人,居然對資料結構有興趣。在資料結構的課上,我才體會到,程式,是有用的。二叉樹、隊列、圖,解決了很多實際的問題,空前解放了人類的勞動力。可能對每一個學計算機的人,甚至是文科生,也聽過人類曆史上計算 pi 最多到多少位,計算機一秒鐘能算多少位這樣的小故事。但就是這些小故事,真正把我的心俘獲了。從模拟銀行排隊到城市之間的最短路徑,從最近公共祖先到sql的B+樹,這些由人腦想出來的一個個資料結構,還沒有太多的算法,就已經把人類從重複無趣的勞動中解放了很大一部分,再加上數學家的算法加持,早就趕超人類幾條街的水準。從手寫字型識别到BigGAN,深度學習的發展速度之快讓人類看到了一些難以置信的東西,很多深度學習領域的可解釋性居然成了人類的一道難題。“他能跑,但是他為什麼能跑呢?” 計算機的魅力愈發吸引着我,讓我不再去思考自己是否走對了路,而是看自己每天是不是向前走了路。

現在大三,我敢說計算機是我喜歡的領域,但我不敢說計算機是我擅長的領域。

就像一個段子一樣,敢說自己精通C語言的人,一部分是剛學完譚浩強的《C語言程式設計的人》,另一部分是在維護C标準的人。

越學越覺得自己無知是真的,原來計算機包括那麼多東西,我現在連冰山的一角都沒看見。

雖然我不擅長,但我熱愛。我的熱愛可能沒有推動計算機發展的人那種熱愛,也沒有很多人夢想着改變世界的熱愛,我的熱愛很樸實很可笑,因為我想讓計算機成為我生活的一部分。

成為我生活的一部分是什麼意思呢? 其實就是利用計算機來解放我的人腦,解放我的勞動力。懶是第一生産力,所言極是,電梯就是因為不想爬樓梯的懶人發明的。而我現在就是在借助計算機,偷一些小懶。

非常巧合,絕非騙分,這幾周我的工作狀态就像是一個乙方,一直在滿足甲方的需求。全國線上教學,北航也是第一次,非常有幸被體育部拉去做苦力,什麼苦力呢?不斷地更新選體育課的人數的資料并打電話給他們讓他們進課程群。體育老師們都不太懂計算機,此時我這個計算機專業學生的身份就展現出來了,從錄屏教老師們檢視課程名單,到線上釋出作業和通知,再到導出學生名單等等等等。其中導入學生名單一塊讓我感受到了計算機這個學科的美好。

任務是這樣的:

現在教務從每個老師的8個班級裡面導出了一張選了該班級課程的學生表

一共有40個老師

另一張表存儲着選課學生的電話

現在要導出一張學生+選擇課程+電話的表

由于老師并不懂計算機,配置設定給我和另一個同學兩個人,讓我們人工導出表合并表并登記電話号碼。

嗯?在逗我?320張表裡面找沒選課的人?

(柯南背景音樂)

這個問題沒有那麼複雜啊,直接把320張表全部合并成一張然後根據學号的主鍵連結一下帶有電話号碼的表不就行了???

于是我用半個小時的時間,編寫python程式并測試運作得到了總表。

嗯,老師開心極了,把表立刻分發給每個老師配備的助教,可以開始打電話聯系了。

不是因為懶,不是因為我學了計算機,我可能會花幾倍的時間,依次打開我負責的160張excel,讓電腦的風扇嘩嘩響着,把未進課程群的同學從表中揪出來,填上他的電話号碼。

是的,可能大家會覺得我這個也太幼稚了,根本不是什麼熱愛,在很多人眼裡算不上熱愛。但是,給予人友善,将人從大量無意義的勞動中解放出來,不也是計算機發明的初衷嗎?我的這一次導出表合合并的操作,是一個程式,但是如果老師有長期的需求,而且需求多樣化了,我提供給老師一個一鍵導出的exe,這不就是一個軟體嗎? 軟體工程,呼之欲出!

大家都在改變世界,你改變的是實體的世界,我改變的是軟體使用者的世界。

當他們不用從320張excel表格中

ctrl+F

尋找一個個沒有進群的同學,他的時間不是節約出來了嗎?或許這些時間他可以拿來看劇,可以拿來做個點心,可以陪家人多一點,可以陪夫妻多一點,他的世界,不就被我改變了嗎?

今天在B站逛的時候偶得 Vue 架構設計者 Evan You的采訪,他一開始也隻是找不到一個友善的工具,幹脆自己做一個比較順手的,經過了三五年的時間才逐漸轉變成為了全職開發Vue嗎?我相信他對技術是熱愛的,對計算機也是熱愛的。我又何嘗不是。

0x02 速成班?系統班?

你對你的大學生活有什麼想要吐槽的地方嗎?你理想的大學教育應該是什麼樣子的?跟學校給你的有什麼差別?比較你在中國大學的經曆,你的老師和學校能做到和國外那樣嗎?

迄今為止,你寫了多少代碼,描述你做的最複雜的軟體項目/作業。

科班出身和北大青鳥有什麼差別?

速成的教育訓練班和打基礎的大學教育還有mooc之間有差別嗎?

學線性代數和機率論的時候,你是否有過這樣的疑問“我們為什麼要學這麼多數學,這和我們的計算機有關系嗎”,你現在是否還有這樣的疑問?對這個問題,你有自己的解答了嗎?那麼其他學科呢?

這個專題裡面突然多那麼多參考部落格,着實把我看爽了,精選的部落格品質确實不錯。看到輪子哥的大學生活,感歎自己的大學是多麼枯燥;看到一個行走的書庫面試着自己見過見過還是見過的面試題,感受到閱讀的力量;還看到一個号稱自己是野生程式員的小哥,果然敢說自己是野生程式員的人技術肯定不野生;但同時從一個.net程式員的自述中看到了自學路上的坎坷與辛酸。

我對大學生活的向往,是從高二的實體競賽開始的。由于題目難度的原因,我們要先修一些簡單的高等數學微積分,然後去解實際的實體應用題。無論是微積分還是實體競賽題,都帶給我了一種與聯考題目之外的全新的體驗。高中三年學習的知識,真的非常枯燥無味,就拿我接觸的實體舉例,高中學習的一直是質點運動學,總是在不是x軸就是y軸上面平動,直到接觸了實體競賽我才發現轉動的美妙。這種感覺可能現在難以體會到了,是那一種在每天學習着一樣的知識裡面突然發現新大陸的欣喜與激動。為了沖刺最後的競賽,我們停了半學期的課,我們求解了空間站在什麼時候發射多少燃料才能最節能地返航,我們求解了什麼樣的軌道能使得小球下落最快,我們求解了一根正六邊形的鉛筆如何放在一個帶有恒定系數的摩擦面上不會滑動,我們還求解了一根木棒靠在牆上滑下來時的運動狀态...這些都激發了我對這個世界的好奇。那為什麼我就向往大學生活了呢?因為我覺得大學我就可以學到更多諸如此類有意思的知識了。

當然最後我沒有在大學學習實體,而是學習了計算機。平心而論,無論外界如何抹黑北航,如何抹黑北航的計算機課程,我對計算機專業都抱有着強烈的好感。在網上查閱了一下,北航是國内少有的理論教學和實踐教學相結合的大學,雖然我被計算機組成原理實驗虐的很慘,但我也很感激他,因為我自己動手從零開始搭起來了一個能跑的CPU。這和我理想的大學無差——我不喜歡枯燥的知識。倘若我當初沒有選擇北航,而是選擇了一所沒有配套的實驗設施的大學讀計算機,估計我現在會很煩躁吧。

如今已經大三,我說一下我現在的理想中的大學吧。其實隻有一點,我希望穿插多一些自由的時間。當然這可能并不是特别現實,比如延長寒暑假。為什麼我想要延長寒暑假呢?因為我覺得學習了一個學期的知識,需要一定時間的消化,而現在的寒暑假的時間,我覺得有點緊迫了。我非常羨慕徐宥能夠看這麼多優秀的經典書籍,這也是他為什麼能夠在面試中如魚得水的一個重要原因。讀書不在多,而在于透,略看百本不如細品一本。我也希望能夠有自己可以配置設定的自由時間,投資看看書上。這個書甚至可以不是專業類的書籍,人生哲學也是一個非常好的建議。我确實感覺我讀書讀的少了。從小就不是很喜歡看書,直到國中才有一次讀書熱,那是一段對餘華的作品狂熱的時期,讀了很多《許三觀賣血記》、《活着》等一系列優秀的文學作品。然後又沒有怎麼看書了。轉眼到了高中的時間,入手了kindle電子閱讀器後,本着物盡其用的原則,一不小心迷上了東野圭吾的作品,《放學後》、《白夜行》、《嫌疑人X的現身》等等。我發現我是一個非常吃文風的人,平時對書不怎麼喜歡,但如果遇到喜歡的文風,會抓着作者的所有書不放。到了大學開始接觸程式設計的專業書籍了。大一的C語言基礎黑書是我看過最多的,因為當時入門實在比較吃力。後面雖然拿到了很多電子書,但都隻是當作參考資料,在自己有需要的時候當百科全書一樣去查閱罷了。學習資料結構時買的《C和指針》,學習面對對象時買的《Java程式設計思想》,學習算法時買的《程式設計珠玑》等等一系列優秀的書籍,可能翻開的都不到50頁。我是真的像給自己放一個假,把自己的存書全部看完。可能有人會說平時也可以擠一點時間,這個我也不想狡辯了,這個可能與個人的學習習慣有關吧,在忙活了一天之後我真的已經沒有看書的欲望了。

說到國内大學和國外大學的差距,我還是有一定的親身體驗。在大一的暑假有幸前往伊利諾伊大學香槟分校交流三周,接觸到了國外大學的教育。雖然我也不知自己在假期接觸的大學教學和國外平時的教學有什麼差別,但我暫且認為大體上是一樣的。在UIUC,我修了兩門課,一是人工智能導論,而是網絡分析。至于導論課和中國的大學并沒有什麼差別,就是上課講PPT,下課答疑并完成選擇填空的作業。至于網絡分析則更加有意思,也許因為他是一門實踐課,老師并沒有對着PPT一直講,而是從第一節課就從安裝軟體開始,手把手的保姆式教學。老師通過分析的軟體上的參數告訴大家什麼是Degree Centrality、Closeness Centrality、Betweenness Centrality 等等,中間可能穿插着必要的說明在PPT裡面,其他的都是以實踐的可視化的方式幫助大家來了解。最後的考核方式也很有意思,讓大家組隊收集材料并整理分析一個網絡。我們隊伍分析了英國的倫敦的幫派之間的關系,得出了不少有意思的結論。比如不同幫派之間的老大和其他幫派的人的關系親密度很低,很多事情都是交給小弟去做等等。

我們暫且不說是國内的教學方式更加優秀還是國外的教學方式更加優秀,因為我相信都有可以互相學習的地方。但是我想說國内的大學教育其實是可以從國外學習的,而且本身并不難。劉帥在回顧自己的計算機生涯的部落格中也寫道,他聽了清華的朱仲濤老師的“資料結構”課之後的那種震撼。這似乎是一件很奇怪的事情,我們居然會因為一個老師的教學方式而感到震撼。一堂課隻用1/5的時間講理論,剩下的時間從零開始着手解決一些具體的問題,這不就是我所向往的、在UIUC的網絡分析中看到的那種将知識點融入到實踐中去的教學方式嗎?很可惜,這可能對國外的同學再不同不過的日常教學手段,在我們的同學眼裡竟是如此驚豔。是啊,我多麼希望我的專業課老師也能在課堂上給我們手把手實作一下講過的知識點,讓我們看到知識是如何運用的,知識是活的,具有靈魂的。不過在北航雖然老師們沒有給我們展示,課下也讓我們自己去實踐了,這在一定程度上彌補的我的失望。可是哪個學生不想看一下憑借老師多年的教學經驗和豐富的專業知識水準打出來的代碼呢?我相信很多同學上課或許沒有認真聽講的原因,是“不服老師”,這個不服是加了引号的,因為可能學生覺得老師PPT裡面的東西我自己也能學,甚至有一些mooc上面的内容或者公衆号上的内容,或者部落格園上的内容,講得比老師的更加細緻,我為什麼不利用這個時間去學習我更想要的呢?是以我特别希望能遇見一個年輕有朝氣的老師,他走的不是正常的教學路線,而是以碼服人,就像Linus Torvalds所說的:Talk is cheap. Show me the code。

當然我也遇到過這種老師。大二的時候有一門C++和C#的課程,我雖然沒選上,但是我每次也和舍友早早地到教室占座。很多課大家都是聚集在教室的後排的,而這門課大家都搶前排。老師的電腦上隻有一個複古的VS6,每次上課就是建立一個工程項目,然後将字型調節到最大,開始打代碼,一邊打一邊告訴我們C++和C#的特性,還時不時在運作前抛給大家一個問題,讓大家猜一下運作的結果,大家當然聽的很認真。還有大三上選的Ruby課程設計估計是最符合我預期的了,PPT裡面都是代碼,上課不講太多PPT的内容,大螢幕連上筆記本,将一行一行的代碼變成我們可以看見的網頁的樣子,老師也非常和藹,在我期末遇到困難時主動找我,和我約時間出來當面解決難題,幫助我做出了我的第一個,也是比較符合我預期的,我心目中的網站。

停下來,回頭看 ——記2020BUAA軟工第一次作業-熱身!

得益于北航的理論和實踐相結合的教學特色,這三年來還是打了一些代碼,但是還沒有接觸過非常龐大的工程,我估計自己的代碼量在5000行左右(有效代碼量)。其中比較大的幾個工程分别是:

  1. 大二上學期的Java程式設計,要求我們寫不少于2000行代碼的小遊戲。雖然要求是2000行代碼,但是實際上第一次接觸Java,主要的精力都放在GUI上了,對于GUI而言,雖然行數多,但很多都是初始化和定位和捕獲異常的操作,對于自己的工程能力沒有太大的提高。
  2. 大二下學期的面向對象程式設計,也是北航計算機學院的精品課程,有四個Project,每個Project分三次疊代開發,總共代碼量也有2000行左右,但因為是疊代開發,每次Project的後兩次都是在之前的基礎上進行修改,裡面有很多重複的量。面向對象作為北航計算機學院的精品課程還走出了北航,提供給兄弟高校使用。(作為2020屆的助教打一個廣告)
  3. 大三上學期的編譯設計實驗,寫出了屬于自己的能夠識别特定詞法和文法的編譯器,因為對指針的操作比較多,是以使用C語言實作的,是以很多造輪子的過程,前後也有2000-3000行的代碼。輪子太多,是以有效代碼量差不多應該減半。
  4. 大三上學期的Ruby程式設計,寫出了自己的第一個網站。因為并不是團隊開發,是以網站的規模并不大,都是自己前後端兼顧,體驗了一把全棧工程師,Ruby的代碼前後應該也有小1000行,但這些代碼都是實打實的,無論是後端的資料庫操作還是前端的頁面設計都讓我感覺每一行代碼都有自己的生命。

在2019年的下半年開學,拖了兩年的士谔獎學金評選終于進行,在我的發言中就提到了類似的對比。這裡我們對比的是北大青鳥,當時我對比的是隔壁的北郵。并不是說北郵的不是科班出身,當時我拿北郵做對比是來談了談通識教育的感受。

北航的通識教育在全國範圍内都是領頭羊的身份,從我們2017級開始大類招生,第一年用心學基礎知識,什麼工科數學分析、離散數學、線性代數、基礎實體,甚至還有2018級加入的工程圖學,很少涉及到專業知識,大一上的計算機專業知識隻上了8周的課,大一下接觸資料結構開始才覺得自己還有一點點計算機學院的學生的意思。相比北航,北郵的步伐很快。 他們沒有大類招生,入校就開始學習專業知識。當我們大二才開始接觸一點專業課的時候,他們準備出去實習了。我有兩個同學在北郵,他們都通過學長學姐的内推拿到了實習的機會,像他們一樣的人還有很多。從外人的眼光來看,甚至從很多北航自己人的角度來看,當年考取北航的分數,成本效益不高。而很大一部分是如何計算成本效益的呢?能否立刻出去工作實習賺錢。我不否認這是一種衡量的途徑,但同時也認為這種衡量的途徑是否太片面了。倘若将北航和北郵的學生畢業五年後十年後的工資水準拿來對比,會不會又有新的發現。

我愈發感受到基礎知識的重要性,不僅是輪子哥所說的紮實的數理基礎讓他在學習圖形程式設計的時候信手拈來,還有我現實中遇到一些小事。

在大二的時候,有幸加入了北航的軟體國家重點實驗室學習計算機視覺的知識,雖然實際上是作為深度學習的入門,了解一些深度學習的基礎知識罷了。多年的數學功底幫助了我很多,在看吳恩達的深度學習入門課程中很多關于矩陣的運算還有微積分的運算,不會把我卡太久。後來有一次幫師兄調研論文,論文裡出現了很多降維升維的操作,師兄有點吃不消,讓我跟他慢慢講講其中的矩陣是如何變化的,那一刻我意識到,原來數學真的是如此重要。

再後來看到一些讨論人工智能領域是否過火了的議題,有些人認為現在大家一窩蜂地撲到人工智能的浪潮中,人員已經過飽和了。但下面有一個回答特别刺眼,他将從事人工智能的人群分為兩類人,一類是工程師,另一類是科學家,根據二八原則,大緻也是工程師占8,科學家占2,而大家都很清楚接下來的結論,往往推動這個行業發展的,是那一少部分的科學家。 雖然我已經決定不往人工智能方向發展了,畢竟這一塊其一是實在太熱了,我的競争力太小,其二是在我實習的期間也發現自己對深度學習和人工智能等等并沒有很大的興趣,我更喜歡和系統和資料庫打交道。但是我還是會在課餘補充自己的數學知識,以防自己的大腦掉電。

但其實從另外一種角度想,北大青鳥的人就差嗎?這個社會就像是一個機器,每個人都是一顆螺絲釘,隻不過大家所在的位置不同罷了。有重要部位的螺絲釘,但也有其他部位的螺絲釘,畢竟不可能每個人都當最重要的那一顆,隻要大家各司其職就好了。隻不過一個很殘酷的現實就是,非關鍵部位的螺絲釘可能會被随時換下來,以為更換的成本并不高。 在剛入學的時候,北航就給我們灌輸了一種思想—— 北航所培養的是領軍上司人才。 在剛上程式設計課的時候,老師問我們,你們學習打碼是以後就像成為一個程式員嗎?如果你想成為一個程式員,不如現在就去北大青鳥,那裡更符合你的預期,突擊的集訓學習,保證你在他那裡畢業能找到工作。但是,從 .net程式員工作兩年總結 中我們看到了,那些非科班出身的,在外面通過教育訓練班出來工作的,即使非常用心地在學,有付出自己的努力,但是面對相同的福利待遇,門檻比我們要高得多。看完他的總結我其實非常同情和了解他,雖然可能他也不需要我的同情,很多人可能不是自身的原因,而是外部的原因,失去了很多機會,隻能靠北大青鳥、達内等教育訓練班教育訓練上崗。我們真的要感謝我們所獲得的一切,若不是我從小接受優質的教育資源,要不是我父母是有文化的大學畢業生,我恐怕走到北航的幾率也很小。

我沒有去過速成的教育訓練班,隻接受過大學的基礎教育是以在此不做評論,但我想說一下mooc方面。

我其實算比較早接觸mooc這種東西,在高中的時候,那時候網際網路教育還不是特别發達,我就花了100塊錢上猿輔導買了網課,補習自己的化學,老師講的内容非常好,很多記憶的口訣,我的化學确實提升了不少,我也感受到了網際網路帶來的便利,可能是搭上了網際網路的早班車。後來我下載下傳了網易雲課堂,網易公開課,在上面接觸到了可汗大學的優質mooc,可汗大學的線性代數講得真的非常幫,高中的時候雖然用不上,但是我還是會像追劇一樣看,老師說話很舒服,闆書也很工整。再到後來解除了中國大學mooc,那時候是為了補充一些實體競賽中粗略帶過的概念,看了一下清華大學的電磁學。怎麼說呢,本來是懷着期待的心情看中國大學mooc上面的高等學府的資源,但卻出乎所料的失望。很無趣的課堂,對着知識點的幹講,沒有互動沒有闆書,于是乎我看完自己需要的部分,就再也沒打開過了。

現在全民在家上網課,在開學的第一周有幸參加到了很多高校上司出席的觀看開學第一課活動中。徐校長談到,自己最近就在看網上某知名大學的mooc,但發現品質并不是很理想,卻同時又帶者精品mooc的牌子,其實北航很多的老師講得絕對比這個好,但是我們缺少一個契機,做成網課的形式,展現出來。

2020的春天,這個契機來了。我相信這些真正給學生的mooc,而不是特地錄制的mooc,更有一種真實感,更能反映出真實的課堂的感覺,而不是像中國大學mooc上面的現在的很多課程,老師确實花了時間和精力去錄制,但是學生的效果卻并沒有理想中的完美。

線性代數和機率論本來就很有趣啊,為什麼會有人提出這樣的問題呢? 😃

可能是數學虐我千百遍,我待數學如初戀吧。說實話至少北航的大學數學課程和高中數學競賽相比簡單了不是一個層次,而且數學能和生活聯系的實在是太緊密了,雖然我看不到,但我感受得到。

是以我從來沒有這種想法,學習知識,特别是學習數學這種基礎知識,生活中一定會用上的,用不上也算是防止老年癡呆了。

0x03 你要改變世界嗎?

對于你未來在IT行業的發展,你有什麼樣的夢想或者未來想從事什麼樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?

你對于實作自己的夢想已經做了或者計劃做什麼樣的準備?

你們馬上就要面臨實習了,你打算在企業内實習還是在實驗室實習?

實習經驗究竟有多重要?是否需要馬上開始積累實習經驗?

經過大二将近一年在軟體國家重點實驗室的實習之後,我發現我撲到人工智能的浪潮中,可能就再也找不到自己了。可能是多年競賽的原因,自己對科研這種時間線拉的很長的事情不是特别有興趣,可能很久都沒有idea,缺少及時的回報,很容易讓人放棄。而且人工智能和深度學習領域井噴式的發展,我真的擔心我可能跟不上時代的發展。是以在大三學期開始前,我退出了待了一年,特别是最後一個暑假的實驗室。

當然也沒有閑着,轉身加入了北航的超算隊,主要負責機器調試,也在賽題中幫手。我貌似找到了自己的興趣所在——後端。後端是一個看起來誰都能做的職位,但絕對不是一個輕松的職位。除此之外我對GPU程式設計也比較感興趣,大三上的《CUDA程式設計實踐》為我打開了興趣的大門。但是我并不是想往圖形學方向發展,我更向往底層發展。聽聞MEGVII的

brain++

大廈已經落成,不知道我未來能否貢獻自己的一份代碼?

當然為了成為一個優秀的後端工程師,我也想參與實習,但參加了一次面試之後,發現自己所了解的還隻是皮毛而已。面試官考了我幾個linux下的指令的細節,我卻回答不上來。是的,都是我曾經用過無數遍的指令,像是free,但我也隻是在用的時候隻了解了自己所需要的部分,而沒有将一個指令所展現出來的所有内容和所有細節記在腦子裡。這可能就是一個企業為什麼要在你身上符出資源,憑什麼招一個隻會用的時候上網查的工程師?我深感遺憾,但也更加細化地明确了自己的方向。

至于我的技術道路的話,看了爆棧人生部落格 裡面的總結,感覺自己的技能樹點了不到一小截,長路漫漫。但年輕也是一種資本,在實踐中學習專業的知識我相信更加有效。至于職業道路的話,可能也是按部就班,先從程式員做起,但心中也堅守一份成為團隊Leader的希冀,培養自己成為Leader的擔當,至于再後來的路線,誰也說不定這個時代會怎麼樣發展,自己又會遇到什麼樣的人和事。看了靈感之源的十年工作經曆和.net程式員工作兩年總結之後,我覺得單憑一個人自身的努力很可能看不到效果,還要抓住路上的機遇,甚至是風險。每一次風口出現的時候,都有一群豬在天上飛,我能不能也成為其中的一頭呢?

對于馬上就要面臨的實習,我覺得按照我的目标不改變的話,大機率是選擇公司實習了,因為學校裡面也沒有什麼需要後端實習生的地方,而且校園内部的場景與公司相比還是太顯得單一了。我現在也在學習算法和Linux程式設計,複習四座大山,希望能到明星大廠開啟自己新的一段實習生涯。

實習的經驗固然重要,但也不可神話。每個人有每個人适合自己的道路選擇,我也見過身邊的大佬就是适合單幹,腦子裡盡是idea,自己也能夠一點點實作,可能實驗室對于他來說是可有可無的資源,并不是必需品。但是我也相信對于大多數人來說,實驗室是指明自己發展道路的一個 捷徑,在導師和學長的 push 下你可以看清楚自己想要什麼和不想要什麼。當然大佬的能力不是人人有,對于像我一樣的普通學生,能夠盡早地進入實驗室,看看自己感興趣的東西實際上是否和自己想的一樣。很多人認為到實驗室要拿出成果,積累經驗,但就我自己的角度來說,更加重要的是看清自己的方向,早走彎路。個人愚見:科研是興趣驅動、興趣導向的,單純有能力可能會學的很好,但未必學的很高。在學校的實驗室的試錯成本要比到時候步入社會了時候的犯錯成本低得多。若能在學校的期間就發現自己的真正未來方向所在,我覺得大學實習的意義已經達到的差不多了。就像是在CSDN對陳皓的采訪中所說的:“今天,我對許多剛上路的朋友都會說,人生的規劃很重要,從上大學時就要好好規劃,這對國人來說尤其重要。因為對于國人來說,人生的頭20年都是被别人規劃的,導緻了自己根本不會給自己做規劃。這點是相當危險的。”

你要改變世界嗎?是一個好問題,但我現在并不幻想着立刻改變整個世界,先從個人的小世界做起,或許哪一天在不經意間,撬動了這個世界那麼一點點呢。

0x04 好久沒寫過思考過這麼久了

拿到第一次熱身作業,第一反應是被十幾個博文的連結吓到了,但因為時間還很長,是以就硬着頭皮一個一個看吧。但讀着讀着發現,程式員們的文筆都還蠻符合我的口味的,而且在自己也經曆了一段科班生涯之後,在文章裡也能夠讀出一些共通之處。大家都學了四座大山,大家都有實習和面試的經曆,甚至大家都會為了大學畢業的下一段旅程而思索過。特别是當我看到輪子哥2012年的部落格的時候,内心是有點喜悅的。早在知乎上就關注了輪子哥,但一直看到的隻是他在一些回答中的隻言片語,始終沒有弄清楚過他是怎麼樣的一個人。在網上搜尋過“輪子哥vzch”是誰,卻沒有找到自己想要的答案,也沒有想過輪子哥是否有自己的部落格。好巧不巧,居然因為軟體工程這門課程,對許多程式員和計算機專業的學生膜拜的輪子哥有了更加深入的了解。果然優秀的人無論在哪裡都是優秀的,無論是清北學府還是華南理工。課程組估計也下了一定的功夫,給我們設定了循序漸進的題目,确實這些題目非常誘人,一步步把我很少說的東西都從肚子裡勾了出來。從來沒想到過自己能寫這麼多,現在已經有1w4k字左右,從3月1号動筆寫到了3月3号的下午5點。這幾天是有時間就寫,甚至晚上寫到2點(我自己的真實情況是晚上更加冷靜,思緒更加流暢)。

這學期借着軟體工程這門課的機會,多動動筆吧,把自己的科班最後一點路記下來,或許對别人有用,更有可能的是對自己有用。

希望自己能在這學期學到一些東西!在熱身作業中立下這一支Flag!

參考連結

  1. Scalers:大學生上課為什麼一定要認真聽講?
  2. 我的軟體開發生涯 (10年開發經驗總結和爆棧人生)
  3. Vue 架構設計者 Evan You的采訪
  4. 徐宥:掉進讀書的兔子洞
  5. 進入2012 -- 回顧我走過的程式設計之路
  6. 【野生程式員】:優先招聘
  7. .net程式員工作兩年總結
  8. 劉帥:在失望中尋找希望
  9. 談談職業規劃——CSDN對陳皓的采訪
  10. 神秘的連結