程式設計師心中永遠的痛 -- debug
2022/11/24 8:47 pm 鄭安巽

開發程式是一場耐力賽,可能寫程式碼過程很順利,但跑起來卻不順利。不順利的成分可能包含閃退、當機、功能異常或效率不彰。舉例來說,有時候功能全都做對了,但操作起來就像睡著一般;或者跑起來很快「就」閃退當機。

最近遇到兩件事後有感而發:一是某公司 app 上架 Google Play 被退件(拒絕);二是晚輩接手的一個 flutter 開發專案的程式碼。

App上架被退件是常有的事!因為上架有一大堆審核規定,很少人會真的去研究全部的規定。以我自己來說,也是等到被退件才根據退件原因做調整。

最近遇到的某公司被 Google 退件的理由,是「程式無法測試」, Google 很好心的的給了截圖,確實出現白畫面。也就是說程式一開始執行就出現白畫面,所以 Google 無法測試,當然只能退件。

這家開發公司經歷幾個月的時間都無法解決此問題,於是朋友找我協助時,我問他出現白畫面是很容易解決的問題,怎麼會拖這麼久?朋友說開發公司找了很多人測試都沒有遇到白畫面,也嘗試修改了很多次並重新申請上架,結果都相同,因此懷疑是 DexGuard 導致白畫面。我問能給原始碼嗎?朋友聯絡開發公司後,我拿到了原始碼並且花了幾分鐘時間研究一下,找到兩個問題後給對方建議;但對方認為「不可能」是那兩個問題。

經過三天的溝通,對方仍然堅持不是我說的問題。我有點不高興的告訴朋友這件事幫不了。我說,他們遇到白畫面而不明原因,我已經告知:1. 為何測試過程會出現白畫面, 2. 提供解決方法。但對方堅持不是我說的問題,所以愛莫能助。朋友建議對方根據我的建議修改程式再送審,就能知道是不是我說的問題。果然這次送審,就出現其他不同的退件理由,後來再修正後,就順利通過審核並上架了。

第二件事,是晚輩接手的新任務,維護並且繼續開發一個 flutter專案。因為接手時該專案已經很龐大了, bug 很多,要在有 bug 的大型專案上增加程式碼,無疑是個爛主意;但公司交代的任務也只能照辦。晚輩壓力很大,我告訴他反正活越久領越多,盡力撐下去就是。為了給晚輩放心,我就幫忙看一下程式碼。

我看過後,覺得寫這程式碼的人對 C / C++ 應該很熟,但對 flutter 不熟,所以他想要把 flutter 當 C / C++ 使用,導致一發不可收拾,最後應該是承受不了自己的傑作。晚輩說那個程式員的確離職了。其實公司給的待遇還算不錯,一個有經驗的程式員會突然離職,如果不是待遇問題,那就是遇到瓶頸了。我看了程式碼,深深感覺那個程式員「很會寫」,但「不會 debug」,所以只能棄甲而逃!

寫程式真的很簡單,要不出錯卻很難。很多程式設計師都不喜歡維護程式,只一直想寫新的程式。不維護別人的程式還算有理,不維護自己的程式這就很耐人尋味了!據說程式人員離職的很大原因,便是不想維護自己的程式,也就是所謂的 debug 。開發過程都很愉快,但到了測試階段就一個一個離職。

我晚輩的新任務其實是一個新的工作機會,到職沒多久就遇到公司預定的「測試展示」行程。跟我預料一樣,預定的測試展示日期快到前,就走了八個程式設計師。奇怪的是,預定展示之前的所有工作報告,都是正常完成進度!那為何測試展示之前會全部離職?原因很簡單,就是這些程設人員只想寫程式,不想抓蟲。一個大型專案,每個人都說自己的程式沒錯,都是別人的錯,就無法整合成功,開會就像一場躲避球賽,先閃人再說!

再回來說第一個事件也就是 app 的上架問題。後來朋友說我可以報價,因為這是個大型專案,拖延幾個月的成本非常可觀。我本來想這是舉手之勞,幾分鐘的事情如何報價?沒想到朋友說這種解決問題的技術能力,不是用幾分鐘來評估,如果那麼簡單,對方為何花了幾個月都解決不了?後來我就報了五萬元稅外加,對方公司副總親自來收發票,還直說謝謝我的幫忙。

一瞬間又讓我想起多年前的一段往事,話又多了起來,也想要炫耀一下。

話說很久以前,當時 macOS 是很尊貴的身分象徵,市場也相對封閉。有一家廠商找我開發滑鼠的 USB driver 給 macOS 用。合約過程談了三個月,合約簽下來的第二天我就把 driver 測試版寄給對方。沒想到對方收到 driver 測試版後竟然打電話來把我臭罵一頓,說我簡直是土匪!兩天的工作收他六十萬台幣!我聽了自然不高興,就說不滿意可以解約。對方也同意解約,於是就解約了。沒想到過了幾天,對方又來電說希望我算便宜一點。

真的是很奇怪的一件事啊!談合約的三個月過程中,他自己表示因為公司內部開發兩年多,實在是做不出來,又發包多次也失敗,這才找到我。這次好不容易才簽了合約,拿到的測試版 driver 也確定可正常工作,產品都已經 ready了,所以不能解約。

我想他大概在公司被鬥爭了才來跟我懺悔,我當然不想理他。後來我把 driver 用一百萬台幣賣給不同公司。也就是說,六十萬他嫌貴,一百萬還有人買。他們自己開發與發包歷經幾年的失敗難道都不需要成本嗎?

再聊聊遠傳的全音樂,以前是「Omusic」,後來改名為「friDay 音樂播放器」,也是很多年以前的故事了。我接觸到這個專案時,遠傳已經箭在弦上。此話怎講?因為遠傳的全面廣告活動都是一年多以前就預定好的。也就是說,音樂播放器這個 app是遠傳的大事件,為了這個 app 才成立全音樂這家子公司,外包與行銷活動全都是預定好的行程。我接觸時已經接近廣告曝光,而軟體竟然沒有開發出來。果然時間一到,廣告全面曝光,但沒有人知道是什麼廣告,因為沒有 app 。後來我承包了遠傳 macOS / iPAD / Android 三個 app ,歷經九個月,一人完成程式碼任務,收費 650 萬台幣。我特別強調程式碼任務,因為這個專案動員很多人,包含規劃、測試、 UI / UX 的很多人員,都是全音樂的人員。

故事很多,說不完的。但只要說到寫程式,專家一大堆!每個人都很厲害,但要說到程式 debug ,能閃則閃,程式閃人也跟著閃!當時遠傳的外包失敗,並非沒有開發出來,而是外包商無法解決閃退問題,一個會閃退的程式⋯很多大型專案經常如此!

如果有人遇到程式開發的問題,無人能解,一天又拖一天,可以跟我聯絡。代客 debug 、代客除錯、程式抓蟲等都是我的專長。我想在網路上很少人有敢這樣誇口,但我很有經驗,所以我敢誇口!不信可以試試!



【編按】想找鄭先生談談?歡迎大家與之聯絡:chengansun@gmail.com 或至他的 SmartInside 閱讀他的文章或試用他的「奇易雲端車牌辨識」。