1. 程式人生 > >我和計算機的恩怨情仇

我和計算機的恩怨情仇

我和計算機的恩怨情仇

專案 內容
所屬課設:北航2020年春軟體工程 班級部落格
作業要求:按要求完成一篇部落格 作業要求
個人課程目標 學習一個具備一定規模的軟體在生命週期中需要哪些工作,鍛鍊自己的團隊協作能力,並使自己具有開發一個“好軟體”的能力
這個作業在哪個具體方面幫助我實現目標 讓自己能更清楚的認清自己的現狀和行業的需求,從前人身上學到經驗,讓自己更好地適應計算機專業學生的身份

結緣計算機

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

出生在經濟相對落後的城市,與計算機接觸自然也相對較晚,小學一年級的時候舅舅家裡買了計算機,逢年過節去舅舅家裡和表哥一起玩遊戲成了每年最快樂的時光之一,當然,那時的我對計算機除了玩遊戲以外的功能一無所知,也無從可知。對遊戲的喜愛讓我小學期間輾轉於親朋好友的家裡,樂此不疲。初二那年家裡有了一臺自己的電腦,當然其主要功能是玩遊戲,我也瞭解了許多其他的內容,社交軟體、視訊播放器、瀏覽器······上微機課學習的極少的辦公軟體相關的知識我卻不感興趣,我學習很大一部分原因來自於這樣一個念頭————“別人能學會的,我沒理由學不會;既然有人能會,我就有會的可能;別人學不會的,不代表我學不會。”大概是這樣的念頭,支援我一直走下去。當然,這與我選擇計算機關係不大。

第一次真正接觸程式設計是大一,這比我的很多同學要晚很多,從來沒有任何競賽經歷,以輕鬆的態度來到大學,開始了這場未知的旅行。大一的C語言,是我那個學期最糾結的課,他讓我體會到了之前從未體驗過的東西,不僅僅是程式碼。沒有絲毫壓力地學習著這門課程,不是因為我有天賦,而是我沒有意識到他的重要性,每次作業,宿舍裡的A能以極快的速度寫完,然後站起來說,你們大概得用4個小時(4倍於他的完成時間),事實上,我總是在作業截止的前一天,用6個小時甚至更久才能完成。不努力讓自己有些許自卑,還有一些失望。直至C語言的期中考試給了我當頭棒喝,30分的滿分我得了7分,考試結束後坐在食堂吃著飯眼淚就流了下來,食堂大叔盯著我看,我才稍稍忍住,短短20年從未體驗過的感覺。不過我得內心還算強大,我知道自己絲毫沒有付出,這是再正常不過的結果,但我也知道,有些差距不是付出足夠彌補的,至於是哪一種,我更願意相信是前者。

沒有期中前那麼放肆了,但還是沒有繃起那根弦,不夠自制的人沒有足夠外力約束的樣子,大抵如此。唯一改變的是我開始認識到,“掛科”這兩個字很近很近,期末臨近,我終於把這門課放在了一個相對重要的位置。期末考試我提前半個小時完成了考試,那種興奮與不安交織的心情,給C語言課程畫上了一個句號。

事實上,我覺得有過這樣的陰影的我絕不會選計算機專業了,但人算不如天算,在選專業的時候,我發現我對所有專業都不感興趣:)。打聽了好多同學選什麼專業,好多選計算機的,這讓我有些茫然。我仔細思考,我覺得應用的開發我可能還比較感興趣,最後將計算機填在了第一志願。事實上,計算機是最熱門的專業,我排名本來是不夠的,但莫名其妙擴招6個,誤打誤撞進了計算機的門。

條件如何這個問題我覺得上面的內容已經足夠解答了,大一第一次接觸程式設計,沒有競賽經歷,興趣一般,基礎課程沒學好,情況就是這麼個情況。與部落格I中的博主自然沒法比,濃厚的興趣,志同道合的夥伴豐富的工作履歷造就他過硬的專業技能,與部落格M中的博主相差也是甚遠,我大三接觸編譯,而他高中就能實現編譯器,製作遊戲。事實上,這些部落格中幾乎每一位科班出身的計算機行業從事者都比我接觸計算機要早得多,也比現在的我更加熱愛這一行業。

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

從無感到喜歡,從不擅長到擅長。

說實話,我抱著當一天和尚撞一天鐘的想法開始了我在計算機學院的學習。計算機組成,資料結構,離散數學成了我學習的第一批專業課,我對離散數學非常感興趣,單純的邏輯是我所感興趣的,計算機組成這門課聽名字就應該好好學,資料結構也是一門非常重要的課程,學完這幾門課程我開始覺得計算機的奇妙之處,開始認為自己做出的選擇是正確的了。

擅長是相對的,選擇了計算機專業,學了計算機的課,自然自身擅長的領域就變成了計算機。但是也可以說有一定的天賦,因為我剛進入這個專業的時候是倒數第二,現在應該稍稍進步了一點,從C語言7分的期中考試,到現在已經寫過一個5000餘行程式碼的程式,還取得了不錯的效果,說明這應該是一個我相對擅長的領域了:)。

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

如果在剛分專業的時候問我這個問題,那我或許會回答不熱愛,但如果現在在問我同樣的問題,我一定會回答是的,非常熱愛。給這中熱愛一個具體的解釋,就是希望能在計算機這條路上走下去,憑藉計算機方面的知識度過接下來的生活。

在計算機系裡學習

你對你的大學生活有什麼想要吐槽的地方嗎?你理想的大學教育應該是什麼樣子的?跟學校給你的有什麼區別?比較你在中國大學的經歷,你的老師和學校能做到和國外那樣嗎?如果不能,請分析一下為什麼。

事實上,對任何事物我們都應以辯證的態度去看待,大學生活也不例外。北航的大學生活有許多非常好的地方,或者說是合我胃口的地方,首先就是我們享有高度的“自治權”,我有不少其他大學的同學,我們偶爾會談論各自的環境,我發現他們的學校有絕大部分會給他們安排大量自習,像高中一樣排滿他們的時間,嚴格控制他們課堂的出勤率,在高考選拔中我們確實可以看出這些對於提升一個人的成績是相當有效的,但這絕不是我想像中的大學,北航很好地滿足了我的期望,沒有上述的那些,給了我們充分的自由,讓我從一個高度受限的地方脫離出來,但這就是好?也不見得,我曾經有一個舍友B,高中的時候各種數學物理競賽的獎,大學後卻整天沉迷戀愛和遊戲,甚至於後來一個學期掛掉幾乎全部科目,通過了高考的千軍萬馬卻夭折在大學的海闊天空。當然,這屬於比較極端的例子,於我自身,大學一定程度上提高了我的自制力,代價是難以入目的成績。失去一些東西才會明白自己想要什麼。從一個小地方的雞頭,老師圍著轉的重點保護物件,到泯然眾人。大學讓我明白了人外有人,天外有天。那些比你強的人,身上必然有值得你學習的東西。比如部落格D中的主角,有著比我更加明確的方向,更加自律,更能認清自己。

對於國內大學能否像國外大學一樣,我的答案是不能。社會制度的不同,歷史文化的不同,讓一切變得不同,也沒有相同的必要。想要接受國外一樣的教育,大可出國留學。留學的同學大多是去歐美留學,據我所瞭解的,藤校注重實踐,其導師和學生的比例能讓每個學生得到老師的指導,得到最為個性化的教育,而且其課程可以說是極其有針對性,主修計算機,就學大量計算機專業的硬課,許多老師在課程開始時會用我們課程的強度和國外課程強度比較,答案總是我們的難度儘管很大,但仍然小於國外難度。這是我長久以來存在的疑慮,既然我們從小數理基礎遠遠比國外的學生紮實,究竟是在人生的哪個階段落下了呢?雖然如此,我覺得國內教育固然存在一些問題,但絕不是部落格H中所說的渣,高校是人才的基地,但能不能成為人才也很大程度上取絕於自身,不是複製貼上那麼簡單。(作業第二部分裡面部落格H和E都連結到了H,不過無傷大雅)當然,幾個部落格中都提到英語的重要性,我表示非常認同。

還有一個想要吐槽的地方是水課,我們的考核方式決定了成績高的同學能有更好的選擇權,這就導致了那些選擇硬課上的同學成績總是比選擇水課上的同學要差,成績對大家都很重要,自然而然,水課趨之若鶩,硬課成了燙手山芋。這是我感觸最深的相對於置課,自由選擇帶來的壞處。

迄今為止,你寫了多少程式碼,描述你做的最複雜的軟體專案/作業。

我寫過的程式碼主要來自於課程,沒有進行過完全的統計,也無法完全統計,因為在作業迭代的過程中會有重複的程式碼也會有,刪減的程式碼,大概估計在3w行左右。

做過最複雜的專案是編譯器課程作業的最終版。從詞法分析到語法分析到中間程式碼生成,再到後來的目的碼生成和程式碼優化,程式碼行數達到了5000餘行。這次作業算是一次較為完整的經歷,每一行程式碼都來自於自己手下,使用怎樣的演算法,怎樣的資料結構,都由自己決定。實現了眾多編譯教材中提到的優化演算法,是一次比較滿意的經歷。但在反覆的迭代中,明顯發現了程式的不可拓展性,限制了我實現更多的功能,也明顯發現自己寫程式碼沒有規範,隨心所欲,肆意妄為。希望在軟體工程之後我能更好地設計程式的架構,能寫出更加易維護的程式碼。

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

對這個問題我有長期以來的思考,我給出的答案是有用,但用處的多少,什麼時候會用到,都是未知數。以線性代數為例,現在紅極一時的深度學習,其基本的原理都是基於線性代數的推導,如果你從事了相關行業,那麼你會發現相當於提前進行了知識儲備,我記得某老師在演講時說過,你過去學習過的東西你可能會忘,但你下次想要撿起來的時候,你會發現要比第一遍學習輕鬆許多。以我自己為例,在幾門基礎學課中,我學得最好的就是線性代數,在接觸深度學習時,我通過吳恩達的網課進行基礎知識的學習,我能很快掌握線性代數相關知識。部落格C中的博主在每次面試是都發現這是他或者在《程式設計珠璣》或者是《計算機程式設計藝術》上的題目,印證了開卷有益。這僅僅是其中的一個例子,你能預料到自己將來會做什麼嘛,並不能,但凡是知識就有其儲備的意義,用處的多少,全取決於後續的發展,不能因為你從事了人工智慧,就說你學的物理毫無用處,事實上,計算機是一門包容性極強的學課,他可以與任何學課結合,碰撞出別樣的火花。

因此,在我看來,學習這些數學,物理等等學課,都是在為你以後的儘可能多的道路做鋪墊,因為你並不知道你會選擇哪一條。

未來規劃

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

我比較喜歡偏演算法的工作,或者是遊戲開發這樣的實踐性強的工作。也就是說,我更喜歡偏實踐的工作,我個人感覺理論研究十分枯燥,我並沒有極端的天賦,能夠讓我把理論研究做到極致。喜歡演算法的工作並不是研究演算法,而是讓一些有趣的演算法落地,而不僅僅是輾轉於論文之中;至於遊戲開發,也可能是我從小玩一些的小遊戲,從中感受到了樂趣,希望能開發出更好的小遊戲,激發更多小孩子對遊戲探索的樂趣。

事實上,直至今日,我對自己的未來也沒有一個明確的規劃。我曾經上過一門職業規劃的課程,有過思考,但如同選專業一樣,我並沒有特別明顯的傾向,或者只有當選項擺在我面前時,我才知道自己真正想要的是什麼。部落格K中的觀點我非常的贊同

“確定了自己的行業和專業領域後,接下來的事情應該是1)努力掌握這個行業的知識,2)用最短的時間瞭解這個專業和行業更為具體的各個子方向。然後在實際過程中再認識自己。”
這似乎是我長期以來的工作模式,任務驅動型人格,事情來了,我自然知道自己要幹什麼了。

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

這一點毋庸置疑,有句俗語說的好,“是騾子是馬,拉出來溜溜”,在學校裡面學習,大多數還是在考驗一個人的應試能力,而正真出生社會,到企業實習,能讓你清楚的知道自己有幾斤幾兩,從而讓你能更好地規劃未來的生活。再者說,我們在學校學習的很多知識,比如計算機系的核心專業課CO,OS,這些都是幾十年前的東西,而企業,實驗室裡面的是當下時代的產物,實習能讓你接觸到新東西,鍛鍊你在課堂上學不到的能力。

但是不是需要馬上開始積累實習經驗呢?我覺得因人而異,如果你未來道路很明確,能100%保研或者做好了出國的準備,已經足夠拿到名校的offer,大三下完全是一個合適的實習機會,再或者你打算畢業直接工作,那實習更是能給你帶來極大的提升。與我自身,即將投入考研大軍之中,縱然實習有千般好處,也不是當下最合適的選擇。

相關部落格

部落格I 我的軟體開發生涯 (10年開發經驗總結和爆棧人生)
部落格M 進入2012 -- 回顧我走過的程式設計之路
部落格H 【野生程式設計師】:優先招聘
部落格C 徐宥:掉進讀書的兔子洞
部落格K 談談職業規劃——CSDN對我的採