文/王文珮 Vanessa Wang

身為一位文科生兼理組生,我解決工作問題的方法也時常左右腦並行,試圖用不同方法思考問題。

有一次我解一個 bug 非常沒有頭緒,因為檔案非常大,實在不知道問題從哪一行開始出現,我感嘆「上次動這個檔案的人到底是誰呀!」我先生說「妳沒用過 git blame 嗎?」從此我就愛上這個功能。

Git blame 可以輕易找出每一行code是哪一天幾點幾分哪個人寫進去的。現在每當我 debug 卡住,我就會去看最近一次被加進去的 code 是哪一行,十有八九罪魁禍首就是那行 code。這個功能真的是解救了我。

對我來說,blame 這個功能就像是給了冰冷的命案現場一個生動的背景故事。就像福爾摩斯看到一具屍體、幾個指紋、一個碎掉的花瓶,就可以慢慢想像出這個案件背後牽扯的七情六慾;沉靜死板的命案現場通常背後有非常激情的人物情感。

很多時候我對於如何解 bug 沒什麼概念,因為每行 code 看起來都差不多。但「人」卻是有跡可循的。當我知道哪一行 code是哪個人寫的之後,我通常就會有一點靈感,知道問題可能出在哪裡。很有趣的是,相處久了你就會看出每位軟體工程師寫程式有他們獨特的風格,每個人有每個人特別擅長的地方以及習慣性的盲點。

這讓我想到每次去玩密室逃脫,我破關的方法通常都不是靠現場的物件線索,而是靠場內的關主。關主通常會讓玩家問三個問題,但我發現只要觀察關主回答問題的方法,都能得到超過三個線索。這是因為「人」是活的,是有感情和個性的,他們只要開口就處處有破綻。

我的媽媽是語言學家,她的專長包含「語境」,也就是同樣一句話放在不同情境裡頭,意思就完全不一樣了。好比說,「真的嗎」這樣簡單一句話,隨著說話的人的身分、他對誰說、兩人關係如何、在什麼樣的場景說出這句話,意思可以是好奇的、不屑的、中立的、戲謔的、輕浮的……太多解讀方法。而「前後文」通常就是幫助我們推敲這句話真正意思的方法。程式語言的目的不是要傳達情緒,所以很多時候看起來就像天書一樣,只是一堆冰冷的邏輯指令。但用 git blame 提醒我再冰冷的語言都是人寫的,每一行 code 都還是有一段故事、參雜了每個人的個人色彩。

Blame 這名字取得實在不好聽,顧名思義就是找出問題該怪罪到誰身上。但卻非常生動就是了。最近科技界許多常用專有名詞都被拿出來檢討,例如所謂的 slave / master、blacklist / whitelist 都被撻伐。也許 blame 哪天也會被改掉吧!

※ 本文摘自《文藝少女的矽谷進擊》,原篇名為〈用人文方法解程式的 bug〉,立即前往試讀►►►

  • 用Line傳送