我是濟(jì)南一所大學(xué)的一名計(jì)算機(jī)專業(yè)應(yīng)屆畢業(yè)生,自2022年春天開始至畢業(yè),我一直在上海某研究院的遠(yuǎn)程實(shí)習(xí)生,我的崗位類別是:RISC-V 操作系統(tǒng)構(gòu)建。
非技術(shù)圈的朋友可能比較難理解我的工作內(nèi)容,來打個(gè)比方,比如我們要做一道西紅柿炒蛋,雖然菜譜在網(wǎng)上都是公開的,但我們還是要自己買來原材料按照步驟進(jìn)行加工,才能產(chǎn)出一道成品的菜肴。開源軟件也類似,源代碼都是開源社區(qū)貢獻(xiàn)的,但是社區(qū)卻沒有提供編譯好的可執(zhí)行程序。
【資料圖】
我的工作就是從社區(qū)下載一些開源庫的源碼,再根據(jù)我的專業(yè)知識以及源碼說明,把源碼編譯、打包成可供用戶下載即用的可執(zhí)行程序或安裝包。
作為遠(yuǎn)程實(shí)習(xí)生,又是純粹和數(shù)字資料打交道,我的工作是相對自由的。
我的工作單位是研究院,本身的學(xué)術(shù)色彩就比較濃,所在組的管理模式也是課題組形式。每周一的規(guī)劃組會上會確定這周大體的工作內(nèi)容是什么,做一個(gè)簡略一些的規(guī)劃,而作為實(shí)習(xí)生,我具體的任務(wù)則會在組會后由我的“小老板”向我下達(dá)詳細(xì)安排。在確定具體任務(wù)后,我就可以自行選定時(shí)間地點(diǎn)來完成任務(wù)。我一般會按照我的課表安排和個(gè)人事務(wù)的規(guī)劃來統(tǒng)籌地選定每周的某幾天來作為“工作日”,偶爾比較忙的時(shí)候可能一天工作幾個(gè)小時(shí)然后幾天湊出一天來也說不定。
我的學(xué)校在濟(jì)南市,在一個(gè)“典型的”工作日安排中,我會在七點(diǎn)之前起床、洗漱,之后在學(xué)校食堂吃個(gè)早餐就打車去一家想去的星巴克。一家去膩了就換另一家。八九點(diǎn)鐘的時(shí)候店里也一般不會有太多人,我會選一個(gè)靠近角落的位置坐下,再等我的咖啡沖好,打開電腦,就可以開始干活了。
我需要跟很多外國工程師討論溝通,達(dá)成共識。他們都是在開源社區(qū)中具有卓越技術(shù)積累和工程能力的大牛,對軟件開發(fā)有著深入理解,見解往往也很獨(dú)到。和他們爭論,我更大程度上是在學(xué)習(xí),學(xué)習(xí)一些優(yōu)秀的工程師特質(zhì)。
有次某個(gè)用戶提出了一個(gè)需求,希望我們能夠添加一個(gè)特定的冷門功能,但這個(gè)功能涉及到一些新的依賴項(xiàng)。這個(gè)時(shí)候一些老外擔(dān)心這些依賴項(xiàng)會增加軟件包的復(fù)雜性,同時(shí)還可能會導(dǎo)致運(yùn)行環(huán)境的不穩(wěn)定。
我試圖以我的思路來論述這個(gè)需求應(yīng)該如何規(guī)劃:為什么我們應(yīng)該采納這個(gè)功能,并解釋了如何通過適當(dāng)?shù)臏y試和文檔支持來減輕增加依賴項(xiàng)的風(fēng)險(xiǎn)。其他同事也提出了一些實(shí)際的案例和場景,來補(bǔ)充說明新功能的重要性以及它可能帶來潛在好處。有一部分人對我們的觀點(diǎn)提出了支持,然而,為數(shù)更多的外國工程師堅(jiān)持認(rèn)為,作為基礎(chǔ)軟件包,保持簡潔和穩(wěn)定性是尤為重要的。而且兩撥人還專門針對我所表達(dá)的“軟件的功能性是最應(yīng)該被重視的”的觀念進(jìn)行了一番友好和富有成效的大討論。
大家就在郵件列表里吵了好幾天,不過最后彼此之間也終于達(dá)成了一個(gè)妥協(xié):采納這個(gè)功能,但在添加新的依賴項(xiàng)之前,要進(jìn)行更多的測試和驗(yàn)證,并提供詳細(xì)的文檔來幫助用戶理解和處理潛在的兼容性問題。
說實(shí)話這種爭論在列表里比比皆是,來自不同國家地區(qū)的工程師們通過郵件來表達(dá)彼此不同的思維方式和工作觀念。對于我這樣一個(gè)計(jì)算機(jī)萌新來說,他們的經(jīng)驗(yàn)和洞察力真的讓我受益匪淺。
正式的工作其實(shí)在下午才真正開始。
“典型”流程就是邊看需要封裝的源代碼邊讀配套文檔,了解清楚代碼的依賴和構(gòu)建配置,之后就丟去服務(wù)器上編譯,有時(shí)候在源碼里發(fā)現(xiàn)一些小問題也會順手去修正一下。編譯這個(gè)活是比較吃時(shí)間的,咖啡店提供了一個(gè)相對安靜和專注的空間,有時(shí)候旁邊還會有對著電腦寫文檔的白領(lǐng),我就和她們一起加班。
偶爾,我發(fā)現(xiàn)有些編譯過程會有點(diǎn)問題,比如某個(gè)依賴缺失或者編譯性能離譜地差,大部分時(shí)候我都可以獨(dú)立搞定,但總有一些邊邊角角的問題我解決不了。
印象很深刻的一次,當(dāng)時(shí)我打包一個(gè)大型項(xiàng)目中的某個(gè)小模塊,本來是一個(gè)砍瓜切菜的小任務(wù),但那天編譯卻一直都不過,而且是很奇怪的代碼未定義錯(cuò)誤。我回溯了最近一段時(shí)間的提交記錄,沒發(fā)現(xiàn)有和這個(gè)錯(cuò)誤相關(guān)的信息。我又試圖通過代碼報(bào)錯(cuò)的本身入手,發(fā)現(xiàn)報(bào)錯(cuò)的未定義結(jié)構(gòu)并不來源于項(xiàng)目本身,而是來源于項(xiàng)目調(diào)用的一個(gè)子模塊A。
我順藤摸瓜,發(fā)現(xiàn)該子模塊的最新版本對接口做了改動,導(dǎo)致項(xiàng)目無法編譯通過。于是我只好對模塊A做降級處理。但是,詭異的是,模塊A降級之后,又一個(gè)模塊B開始報(bào)錯(cuò)。升級A后B就安分了,但A又不過,這讓我大呼不解。到這個(gè)時(shí)候,我已經(jīng)在這個(gè)問題上花費(fèi)了兩個(gè)多小時(shí),身心俱疲。
最終我尋求了老師和同學(xué)的幫助,拉了個(gè)在線會議。三個(gè)人屏幕共享查日志,一番搜尋,最終確定問題在于模塊B看模塊A更新了接口后自己也進(jìn)行了對應(yīng)更新,而現(xiàn)在我降級了模塊A,新版本的模塊B自然接口和穿越的A不匹配了。
每周有三四天是我的“工作日”,周末的匯報(bào)組會上,我再按照自己提前準(zhǔn)備好的匯報(bào)材料來展示一下我的工作進(jìn)展,重點(diǎn)分享一下我在工作過程中遇到的困難和解決方案,之后“小老板”和組里同學(xué)再給出彼此的反饋意見,一周的工作到這里就算是正式結(jié)束了。
遠(yuǎn)程工作可以很方便地與其他同事聯(lián)系,共同解決問題,而且這種方式非常高效,在解決問題上和在辦公室相比也幾乎沒什么差別。我的工位也不固定,周圍坐一起的人也不確定,偶爾周末在圖書館會遇到一些高中生做高考題,也有的時(shí)候會遇到一些拿一堆報(bào)表材料來星巴克加班的中年職場人,更多的則還是在星巴克遇到帶著電腦來寫文字材料的白領(lǐng)。不同的人,會給我?guī)聿煌墓ぷ黧w驗(yàn),我有時(shí)候出神,看著身邊也在電腦前敲敲打打的人,也是在看著另外一個(gè)可能是來自未來的自己。
不過,當(dāng)時(shí)的我終歸還是個(gè)學(xué)生,工作地點(diǎn)也是課題組不是項(xiàng)目組,屬于是還沒有完全走出象牙塔的狀態(tài)。同學(xué)們對我這樣參與“遠(yuǎn)程實(shí)習(xí)”的實(shí)習(xí)生反應(yīng)也多有不同,有的同學(xué)會覺得工作還不著急,在學(xué)校好好備戰(zhàn)考研之類的會更好,畢竟學(xué)生時(shí)代就這短短幾年;有的同學(xué)就認(rèn)為,本身計(jì)算機(jī)專業(yè)的實(shí)踐性質(zhì)就比較強(qiáng),學(xué)術(shù)界和工業(yè)界的割裂現(xiàn)象也確實(shí)存在,所以早些統(tǒng)籌個(gè)人時(shí)間來進(jìn)入工業(yè)界探索一下業(yè)界的實(shí)際樣貌也是很好的一件事;還有同學(xué)會覺得實(shí)習(xí)有工資,雖然不多但對學(xué)生來說很夠花了,談戀愛或者出去玩什么的都會寬裕不少,所以一直努力尋找這樣的實(shí)習(xí)機(jī)會。對“工作”,幾乎有多少個(gè)不同的學(xué)生就會有多少種不同的態(tài)度。
我個(gè)人則更為偏向上面提到的第二類同學(xué)的觀點(diǎn)。從我了解到的有限的業(yè)內(nèi)動態(tài)上,也可以看出,計(jì)算機(jī)行業(yè)也確實(shí)是一個(gè)活力四射的行業(yè),各種新鮮事物層出不窮,我這個(gè)“遠(yuǎn)程實(shí)習(xí)”的工作形式就是在疫情中大范圍普及開來的,之后又逐漸滲透到其他行業(yè)中,反過來又通過在線會議平臺等方式反哺了業(yè)內(nèi)。
在這么一個(gè)注重變化、注重?fù)肀ё兓⒆⒅孛舾械負(fù)肀ё兓男袠I(yè)里,早了解些、多了解些業(yè)內(nèi)狀態(tài)還是挺適合我這類重視實(shí)踐的學(xué)生的。在我個(gè)人的人生規(guī)劃中,“嘗試新鮮事物”也早就是一個(gè)優(yōu)先級很高的人生指導(dǎo)理念了。
畢業(yè)后,我在一家做計(jì)算機(jī)硬件的公司做CPU 前端設(shè)計(jì)工程師,我那將近一年半的實(shí)習(xí)經(jīng)歷,為我到正式工作提供了基礎(chǔ):實(shí)習(xí)的工作算是“擰螺絲”,多了些技術(shù)背景,為現(xiàn)在的工作提供了專業(yè)技能上的支持。


