混血文科 26

菜鳥軟體工程師冒險之旅:信任

Ya-Han Chang
9 min readJul 11, 2021

全文共 3263字,閱讀大約需要 10 分鐘。

如果你有意避重就輕,
去做比你盡力所能做到的更小的事情,
那麼我警告你,今後的日子裡,你將是不幸的。
因為你總是要逃避那些和你能力相聯繫的 —
各種機會和可能性。

―― Abraham Harold Maslow

# Mentor 神救援!

V 立刻走過來:「怎麼了?」

我囁囁嚅嚅說:「我、我不懂為什麼這個地方不應該用 promise……。」

V 湊近螢幕,察看整段 function code,冷冷地問:「你這裡為什麼要用 await ?」

被這麼一問,我回答不出來。

V 皺眉拿起紙筆,開始向我解說 promise 、async 和 await 關係。

20 分鐘過去,講解結束。V用我的 Mac 檢查開發中的前端網頁,隨意操作就破版,我瞪大眼,看著螢幕,這、這樣就破版了?!

Mentor 沒有開罵,只是問:「你知道 css 中 max-width 和 width 怎麼搭配使用嗎?」

我回答知道。

「不要回答得那麼快,用紙筆畫給我看。差異是什麼?可以怎麼用?」

我接過V手中的筆,先說出 max-width 和 width 各別定義,接著在紙上畫出 max-width 設定 px 值和 width 100% 使用方式,以及這麼用的好處是什麼。

不知不覺,在向 Mentor 一問一答的過程,我與 Mentor 的關係緩和許多。

# 技術長小考 orz…

下班前,E 傳訊息過來:「yahan,準備好了嗎?我來抽問。」

我瞅著桌上 Mentor 惡補加加減減拼湊的筆記,再看著筆電被 E 抓出亂用 promise 的地方,字字斟酌地回覆:「好的,我去找您。」

說完,我拿起筆電和筆記本,走到 E 的技術長辦公室敲門。

E 開門示意我將筆電放在桌上,直接問:「妳知道為什麼了嗎?」

不管聲音是否洩露出顫抖和緊張,我說知道,然後就自己的理解開始解釋。

聽完,技術長說:「還可以,用詞不是那麼精準,但我聽得懂妳在說什麼。」

「這個確實比較難,我再講解一次。」

E 用快捷鍵打開 terminal,邊寫範例邊解說,過程中不時出現英文技術語彙,卻不會艱澀難懂,既說明 promise 使用規則,還有 async、await 的使用方法。

我想破頭都無法弄懂的問題,技術長和 Mentor 彷彿輕輕鬆鬆、毫無困難。

這,難道就是 junior 和 senior 的巨大差異嗎?

E 迅速寫出另個範例:「yahan,那我問妳,使用 await 的時候,會獲得什麼?」

突然被問,我慌慌張張愣了一下,隨即冷靜下來,用自己的方式說:「它會獲得打 API response 回來的值。」

「描述得不對,我是問妳 js 語言層級的事情。」

我又停頓,想了會兒,用剛剛教過提到的語彙再試一次:「它會獲得 resolve function 的 return value。」

「沒錯,就是這樣!」

說完,E 按下 enter 鍵,輸出正確結果。

# 夥伴!一起寫扣

隔天上班,第一天 pair programming。

我和 I 坐在一起,她負責打字,我負責思考目前應該先做什麼。

「題目是要做一個 web 頁面,畫面正中央有按鈕,按下會開啟 Dialog,開啟後裡面有文字和按鈕,可以把 Dialog 關閉。」

我想了想說:「我們先把 UI 刻出來,再來想怎麼控制 Dialog 開關。」

I 甜甜地說好。她建立了一個 js 檔案,從 import、export 開始寫,我們互相交換 button、dialog 的 react、css 寫法。

不難的任務,反而有時間細細琢磨寫法。

我們彼此提問,不懂的就問對方為什麼這樣寫。

因為兩人程度都差不多,沒必要隱藏會與不會。

我們約好,如果不知道從哪裡看來、或是搞不清楚為啥這樣寫,就計時 15 分鐘 ,時間到絞盡腦汁還是想不出來,就先記下來,待會問 senior。

一個鐘頭過去,I 和我順利完成任務。

或許因為有 I 在,她不像我,老是過度擔心會不會麻煩別人,總是給人甜甜的感覺,只見她直接走到 V 的旁邊,開心地說:「我們完成了!」

V 聽到抬起頭,又轉頭看看我,似乎有些滿意,隨即面無表情,走到工作討論區。

「比我預期完成時間慢了一點,但是尚可接受。」

和往常一樣,V 廢話不多說,直接開始 code review,看完讓我們提問。

迅速回答完問題,V說:「剛剛任務只是暖身,妳們準備一下,去找技術長,之後會由 E 直接 assign 任務給妳們。」

我和 I 一起道謝,收東西準備去領任務。

離開前,我隱約注意到,V 的臉上有些悵然若失。

咦?咦?

# 菜鳥的首件專案

E 見 I 和我在 office 門口,叫我們先進來,接著打電話請 C 同事進來開會。

「V 有跟我說,給妳們的任務完成了。接下來,兩位和我要共同執行一件專案,yahan 和 I 負責前端,依然是 pair programming,我負責後端,PM 是 C。」

資深 PM C ,處理過大大小小的專案,雖然不會寫 code,卻善於釐清客戶需求和應用情境,工作能力深受 co-founder 們信賴,是比 V 還資深的前輩。

C 敲門進入 CTO office,用投影片說明專案內容。

「這個案子是要為一家旅館業開發 ERP 系統,協助他們從目前的紙本行政流程,轉型成為線上系統作業。下面是他們的工作流程 …….。」

聽完客戶需求,E 走到旁邊的白板,邊畫邊說出這個案子會有哪些 model,以及這些 model 又有哪些關聯。 C 則持續投影對應的 UI 設計圖。

我聽得津津有味,不知不覺,臉變得嚴肅,認真思考該怎麼做、從哪邊開始。

E 說明完 modal design,C 接力開始就 UI 設計圖解說操作流程,E 則補充前後端工作內容、協作注意事項。

百廢待舉,有許多細節、寫法、邏輯階層必須留意和遵守。

最後,C 將每個功能開發時程表列出,並說明客戶的驗收時間。

聽完,瞬間傻住。

要、要在短短兩個月的時間做出來?

我、我辦得到嗎?

# 夥伴!交換寫扣

回到座位,I 一樣拉辦公椅坐在旁邊,我們開始討論怎麼開始。

「E說等下會開 user login 相關的 api 給我們,我們先作登入頁好不好?」

我點點頭,I 繼續說:「剛剛早上是我寫,現在該換妳寫~」

咦,我、我嗎?

從來沒有被人盯著寫 code,我硬著頭皮說好,聽著 I 的指令,十指笨拙地一個鍵、一個鍵按,把 repo clone 下來,用 editor 打開,建立一個頁面。

雖然只花了短短幾分鐘,感覺卻像過了一世紀那麼久。

I 完全沒有不耐煩,接著她說:「嗯~接下來應該要先刻 UI,這是設計圖。」

登入頁的設計很簡約,單一品牌色作背景,正中間有大大的 Logo,Logo 下方有兩個客製帳密的 input,最後是與 input 等長的登入按鈕。

我開始專注地刻這頁的 UI。

I 在一旁幫我查看設計稿的色碼、logo 大小、input 長寬、需要下哪些 css styling。

刻完之後,E 過來說 API 已經開好,教我們怎麼用:「當 BE developer 給妳們 API 時,除了確認要填哪些參數外,記得先檢驗看看對方開的 API 是否如預期,如果不如預期,要向對方反應。」

E打開 API 檢測系統,找到那條剛剛新開好的 API,帶了帳號和密碼兩個值在 request body,按下送出,response 回這位 user 的 token。接著再拿 token 去打另一條 API 取回 user 的基本資料。

示範完畢,E說:「這樣就代表提供給你們的 API 沒問題。你們試試看怎麼串接登入,有問題可以看看其他 project code 怎麼寫,或是也可以問 senior 們。」

# 不好的預感

因為登入頁已經刻好,剩下串接 API 和挖出串 API 的管線,我和 I 交換,她寫 code,我負責想目前該做什麼。

「印象中大家寫 API 有必須遵循的 rule,我們從 codebase 裡面找找看有沒有類似的範例。」

I 和我後來找到一個專門存放 API function 的 js 檔案。發現裡面已有寫好的 sample,是從 template 開出來就有的。

嗚哇,裡面竟然還有 login function !

I 像撿到寶開心不已,我想了想,覺得還是謹慎些:「等等,我們再查一下 codebase 是否有其他 js 檔案 call 這個 function。」

結果有!另外有一層看起來用了兩條 API,就是剛剛 E 測試的那兩條!

我和 I 一起讀 code。

「code 看起來想表達的是,登入後取得 token,將 token 放在某個地方存起來,做為之後 autoLogin 使用,然後現在的這個 token,再打一條 api 拿回 user 基本資料。」

所以現在可以知道,當「登入」按鈕被按,要 call 這個用了兩條 API 的 function。

I 和我已有合作默契,她聽著我的指令,開始挖串登入 API 的渠道。

很多細節需要注意,比如該怎麼接、正在登入、登入失敗的提示、登入成功的跳轉……。

三個小時過去,下午五點,M 從外面回來,呼喚大家品嚐客戶送的點心禮盒。

大家紛紛離開座位,聚集工作吧檯,虎視眈眈盯著 M 打開看起來很貴、很多層的禮盒,一層層放在桌上,精緻可愛的點心,口水都快流下來。

每個人邊吃邊聊天,我另外拿了一個鹹的,想說 mentor 或許會喜歡。

轉頭看看四周,沒看到 V,也沒看到 E 的身影。

我悄聲問一旁的 M:「E 和 V 怎麼不見了?」

M 回答:「他們好像出去談事情了。」

我愣愣地點點頭,沒繼續追問。

會是什麼事情,不能在公司裡,或在 E 的 office ,而要去外面談?

這時才發現,Mentor 不在座位上,似乎已經好一段時間了。

Mentor 從來沒有在工作時間,離開自己的工作崗位過。

真的,從來沒有過。

不知道為什麼,隱隱約約,一股不太好的預感浮上心頭。

--

--

Ya-Han Chang

軟體工程師,遊走寫作與技術之間。 相信人文混血價值,持續鍛鍊理科思維, 希望按照自己的 tempo,邁向 mid-level developer 之路。💬 facebook: https://www.facebook.com/yahan.chang.165/