為什麼成為一名程式設計師?

王陸發表於2021-12-31

好久沒有寫感悟類的文章了,本來考完研就打算寫一篇文章,對大學四年做一個“覆盤”的,但複試被調劑了,難受了很久,之後也實在沒什麼由頭寫。在歲末年初前夕,我終於不打算再拖沓了,準備好好整理一下,做個紀念。一方面,審問一下自己的初心,整理一下思緒;另一方面,思索未來的方向,慕然回首時,不回因碌碌無為而羞愧。

初次接觸

我和程式的淵源,最早可以追溯到小學。

上的小學是我們縣裡最好的私立小學,當時還很潮,有微機課。現在回想起來,還記得上課時要穿鞋套才能去機房,調皮的男孩子扣出滑鼠裡的軌跡球當彈力球玩。那時的微機課學了好多東西,但到現在我記得最深的是老師在一個框框裡演示一個小烏龜爬呀爬,畫出了各種圖形,那個框框老師說叫Turtle。之後老師讓我們自己操作,我照著書敲擊鍵盤,畫出了圓形、方形,三角形,很有成就感。當時的我根本不知道在做什麼,等多年以後我在python裡發現了turtle庫的時候,猛然如雷擊,這竟然是在程式設計?

後來初中為了考計算機等級,學了excle,裡面的函式有求和、取平均,最大最小,甚至還有if-else結構,其實這也算是程式設計了吧。

上了高中學習壓力大增,雖然學校也有微機課,但只在高一上過幾節,講了一些計算機基礎和剪輯視訊。後來瞭解到當時高中重點班裡就有一些學霸,在搞NIO(資訊學奧賽),他們在高中應該就學完C語言和資料結構了,聽說在南方這很常見,但對我們這些北方小縣城的學渣是不敢想象的。

選擇專業

高考算是人生第一次重要選擇,我高考成績很差,理綜考了有史以來的最低分(17年理綜生物的一道道橫線永遠也忘不了),只能上一個二本。那時候,知乎和B站還很小眾,沒有這麼多專業選擇的文章和視訊。家裡也沒有走出小縣城的人做指導,我只能靠那本學校發的一本全國高校分數線的書,按圖索驥,找和自己分數匹配的學校專業。當時大部分選擇還是省內的學校,那就找找合適的專業吧。我開始選了一堆土木工程、機械工程、自動化,爸爸看了看,緊鎖眉頭,問了我一句:你以後想去工地還是去工廠?啊這,我想了想我自幼體弱多病,也不愛運動,肯定做不了體力活。看了看剩下的還有計算機、數學、統計之類的專業,家裡一位當老師的大姨說可以學學數學,但我又想到我高考剛一百出頭的數學成績,學了數學豈不是會被累死?最後權衡之下選了電腦科學與技術,現在回想起來,還挺好玩的,計算機並不是當時的首選項,如果當時選了數學或統計,研究生再轉計算機,又會是怎樣?

可惜沒有如果,最重要的一次人生路線,我就這樣陰差陽錯做出來選擇,去了離家開車只需要兩小時的一所財經類高校,慶幸學校重視計算機,計科專業是國家特色專業,老師和學校也盡力提供了各種資源。我懷著對大學生活的憧憬度過了暑假,終於等到了開學。

大學生活

大一剛開學,我就像逃出籠中的鳥兒,參加了好幾個社團,本想著終於開始自己豐富多彩的大學生活了,但社團活動就是無聊的簽到和開會,後面我也不想去了,一有空就在宿舍躺著完手機。如果我一直這樣下去,可能就真的廢了吧,但我的C語言老師改變了我。我的C語言老師當時對我們非常嚴格,期末成績由三次上機考試分陣列成,有一次不及格,直接掛掉。每次上完課後都會在Online Judge上佈置作業,如果系統判斷是抄襲,也是直接掛科。在這樣的重壓下,我們不得不認真完成作業準備考試,有時為了完成作業,整個宿舍寫程式碼到深夜。不得不說,嚴師出高徒,我在OJ上練習多了竟然也對寫程式碼興趣愈發濃厚,簡單迴圈加判斷的組合竟然能解決這麼多問題,每次練習AC了就很開心,WA了就抓耳撓腮。後來學院ACM集訓隊招募隊員,我通過了選拔,開始了演算法學習。

在ACM集訓隊學習期間,晚上就是刷演算法題,週末參加線上的比賽,假期師哥們講解演算法。我當時整體做題補題到自閉,看著周圍同學都能很快理解題意碼程式碼,我一遍遍懷疑自己是不是智力缺陷。有很多同級的同學嶄露頭角和師哥們取打省賽、區域賽,也獲得了很好的名次,說不羨慕是不可能的。後來我也明白自己沒有競賽的天賦,索性就當學習吧,就這樣給大佬們當陪讀,學了些資料結構、圖論、動態規劃、搜尋演算法等。ACM比賽帶來的抗壓能力、程式碼能力、演算法理解力、思維縝密度這些是最珍貴的。我的部落格最早也是寫演算法題題解的,想來這也算是ACM帶給我的好處——整理知識、分享知識。不得不說,那些一直參加ACM的同學畢業去大廠的真的不少,阿里位元組都有。今年畢業時,我校ACM隊終於拿下了省賽金牌,後生可畏啊!

到大二時我選擇了退出,選擇了另外一個學習計算機底層的實驗室。當時實驗室的學習任務是在Linux上做一些彙編實驗,用的是CMU的CSAPP上的實驗,裡面的彙編拆彈讓我一步步瞭解了程式是怎麼在記憶體中執行的,很nice!大二開始學C++、Java、作業系統、組成原理,我也可以搞一些事情了。當時我每上完一節課,就對著課本整理筆記放在部落格上,最開始只想著自己回顧的時候方便些,後來有越來越多的網友閱讀,也有不少在下面評論的,我像得到了正反饋一樣,越來越有趕緊了。就這樣我整理完了演算法設計與分析C++Java資料庫組成原理作業系統圖形學等的專欄筆記,隨著學習的投入,我的成績排名也保持專業前列。

大三的時候我準備考研,或者說本來就是打算讀完本科之後就繼續讀研,一點去工作的想法都沒有。一方面覺得自己本科學校不好,想要考研翻身給自己和父母一個交代,另一方面也想和一直異地的女朋友在一個城市生活,所有最終選擇了考研。雖然計科專業畢業找工作確實不難,但在我們這個二本學校裡面考研風氣確實很濃厚,我們或主動或被裹挾這進入了這場競爭。我報考了一所中上211的計科學碩,因為數學成績太差,壓著分數線進了複試,最終還是在複試上折戟沉沙,慘遭調劑。經濟下行,人人又想要更好的待遇,造成了考研浪潮愈發高漲,21年375萬報考人數,22年457萬的報考人數,考研這條路無疑會更加艱難。也是伴隨著考研複習,我深刻體會到“內卷”的含義,最直觀的就是我的成績放在以前是穩穩會被錄取的,我們比其前幾屆師哥師姐無論是就業還是考研機會都越來越少。

現在我也在反思,當時選擇去考研正確麼?如果一開始目標就是工作,繼續留在ACM集訓隊學演算法,或許也能在畢業拿到大廠的offer。這次的選擇時間或許會給出答案,現在只能說是初心雖不亂,但依舊未明。

關注我的很多都是大學在讀的學弟學妹,這裡我也有一些建議給你們:

明確目標,儘早做好未來規劃

因為我自己在這方面吃了大虧,所以這也是我最想要說的。有人覺得人生是不確定的,計劃趕不上變化,規劃反而會限制自己。但我想但今時不同往日,內卷加劇的社會對年輕人越來越不寬容了。我們或許看不透遙遠的未來,但做好區域性最優的貪心一定不會錯。

拿計科專業的學生來說,我們畢業可以去考公考編,去讀研究生,去進企業工作。那為了實現這些目標,我們不妨從大四6月畢業倒著來回顧一些時間點都需要準備什麼,考研的同學要在大三下學期和大四上學期複習完數學、英語和408等專業課,在大一大二認真學高數線代概率並且通過四六級考試;考公考選調的同學從大一起就不能掛科,有的還要參加組織活動成為班委團委負責人,完成組織考驗入黨員或預備黨員;準備工作的同學,秋招想要得到理想offer,大三下最好就要去企業實習,大二開始就要刷演算法題,學著做專案,到秋招有拿得出手的比賽獎項、實踐經歷。

切忌朝三暮四,我身邊就有朋友既想隨大流去考研,又準備想找工作,家裡還給安排考老家事業編,到了最後什麼也沒得到。

紮實基礎,提升自學能力

畢業前,我問過我本科學院的院長:我們該如何提升自己的競爭優勢?院長和我說要形成自己的“知識壁壘”。何為“知識壁壘"?就是掌握的技術本領範圍比別廣,內容比別人理解更深刻。這一切的形成都離不開基礎,就電腦科學與技術而言,一面科學,一面技術。科學就是老師教授的從離散數學、數字邏輯、計算機組成結構、編譯原理、彙編、作業系統到計算機網路,這一條從數學原理開始經過底層硬體到應用系統層面的計算機執行原理。而技術則是利用已有的工具(這裡的工具可以是高階語言,框架,演算法、編輯器,API等),去實現各種需求。科學是技術的基石,技術又不斷倒逼科學的演進,二者相輔相成。

對本科生而言,當然不可能都掌握的面面俱到,但首先要對這麼學科有一個清楚認識,在理解計算機是怎麼工作的?程式是如何執行的?網路是怎麼連結的?這些問題後,把重點放在資料結構與演算法計算機組成原理作業系統計算機網路資料庫原理物件導向程式設計(Java或C++)上,這六門是計算機專業最核心的課程,既是考研初試複試必考內容也是校招求職考察的基礎。至於該怎麼學,我想如果學校老師水平可以,那最好還是跟著老師上,記好筆記,畢竟這是上課講的內容,不學也是浪費時間,還要應對考試。但也有的老師拿著十餘年不變的教材來糊弄學生,說實話上這樣的課沒有益處甚至有害,那不可如能翹就翹,B站上資源那麼多,跟著B站學也是可以的。當然這要有很強的自學能力,如果中學時代就是被動學習一路走來的話,必須要培養自學能力了。我看到過很多同學說要一起晚上去圖書館學習,到了圖書館,書沒有翻幾頁,就忍不住掏出手機刷著抖音微博,等要回宿舍了感嘆太難了學不會。是真的學不會,還是不夠自律,畏難呢?

談戀愛,雙向奔赴才有意義

有時候我甚至覺得我活到現在最值得慶幸的是找到了人生的伴侶。我的女朋友是高中同學,戀愛算是高考完才開始談的,一直到上研究生現在也在一起五年了。我們兩人大學期間因為異地隔著580公里的距離,大三她還出國交換一年,所以相處機會倍加珍惜,一到節假日我們就去旅行,本科四年基本將省內的城市都逛遍了,寒暑假回到我們的小縣城。平時主要交流是打電話,每天睡前一起聊天一起打遊戲,也和我們各自的同學一起玩,前段時間我想不起本科同學名字了,她倒是記得,直接回我一句:xxx是你同學還是我同學啊?讓我哭笑不得。

有人說現在的大學情侶就是“酒肉情侶”,兩個人在一起就是隻能吃吃飯,打打遊戲,旅旅遊。一旦遇到什麼更深層次的現實問題就會產生矛盾,比如工作、異地、結婚,觸及金錢利益等。確實如此,我身邊就有朋友一上大學就移情別戀拋棄高中時的物件,也有大學期間四年談了四五個女朋友的海王,還有人人都稱讚的模範情侶傳出畢業分手的訊息。或許是越來越浮躁的風氣,讓愛情變得越來越廉價,找的不是共度餘生的伴侶,而是填補慾望的軀殼搭夥過日子的人。

戀愛啊,加上現在愈演愈烈的女拳反女拳對立,太複雜。這裡我只說一下我的愛情觀:

  • 戀愛的雙方是對等的,要互相尊重。男生不要有大男子主義傾向,女生也不要太依賴男生。
  • 交往中矛盾摩擦不可避免,雙方是要找出問題,共同解決,而不是把彼此直接當成問題本身。
  • 愛情更多的時候是一種責任感,既要為自己負責,對得起自己的本心;也要為對方負責,受得住忠誠。
  • 雙向而默契的付出,包容理解對方的忙碌,不要太計較對方偶爾的疏忽
  • 在學業和工作中共同進步,不斷提升,成就彼此;在學識 相貌 背景上都契合。

初入江湖

由於從本科答辯結束到研究生入學中間差不多有四個多月的時間,我想要不找一份實習工作吧,進入職場,接觸一下社會。於是從三月初,我和另外一個考研上岸的同學龍哥就一直在關注相關的實習崗位,由於會點Java和Python,所以找的也都是相關的開發崗。中間也參加了學校裡的春招會,用人單位一聽是我們是計算機專業的都挺熱情的,但聽到只想實習三個月又紛紛搖頭。找來找去,一家分部在本地的資料公司說是招聘Python實習生寫爬蟲,給我們拋來了橄欖枝。因為畢業設計做的是電影推薦系統,為了獲取電影資料,用Java寫了一個爬蟲採集了豆瓣四千多部電影,所以爬蟲知識多少會點,就是Python沒怎麼用來做專案,心裡還是有點慌,但還是選擇去看一看。HR給安排了面試時間,我們倆坐公交從學習出發,橫跨了三個區倒了兩班公交車,到公司去面試。

未完待續。。。

 

相關文章