寫程式其實很像在做料理,身為一個工程師,
可能會遇到的情境大概是這樣:
今天客戶抓了隻龍蝦,只給一句話我要吃龍蝦,
你們是專業的交由你們來料理,
於是經過一番處理後清蒸龍蝦上桌了,
結果客戶說,不對呀,龍蝦不是應該要用炸的嗎?
雖然龍蝦的最初的模樣與鮮味已經跑掉了
但是這尾龍蝦都煮了,總不能浪費,
於是只好把這尾龍蝦再拿去油炸,
客戶很可能心中已經有個程式的雛形,但卻無法完善的表達,
直到功能完成後實際操作,才覺得與預期不同,而進行細部檢討
但這時候工程師不太可能把原本程式碼整個打掉重寫
而會在原架構上進行修補與添加,而這會造成程式碼複雜化
油炸過後重新端上桌,
結果客戶又說,所以我說那個醬汁呢?
還好身為一個專業的宅宅,我都有看小當家,
醬汁我早就備妥了!!!
這時候客戶又說,
不對呀,醬汁應該在鋪上核果外衣前,就應該用雞蛋、砂糖、牛奶調配好醬汁,
然後再用豆皮包覆呀!
有時候客戶會覺得某個功能看起來很酷炫,
但實際上會增加程式的複雜度而降低穩定性,
本來只要裝在碟子就可以上桌的醬汁,
被要求要包覆在龍蝦上,因為複雜度上升,所以BUG的機率就提高了
同時也導致當需要重新調整醬汁比例的時候,弄破豆皮的機率增加
至於原PO的問題嘛,版友又不是當事者,誰知道呢?
如果是按照談定的正規操作流程且乾淨的資料,卻出現BUG,
那很可能對方沒經過內部測試就釋出,這個可能就有點問題,
不過我估計原PO可能也沒談到這麼細去定義操作行為吧?
但只就程式會不會有bug,我是覺得有bug是很正常的事啦,
重點是在測試與驗證過程中有被抓出,不至於到終端使用者造成影響就還好,
線上遊戲經過千人封測,然後上線公測還不是會被找到bug。