寫程式、做工程師的難免失手、失敗,有寫錯 code的失敗、考慮不周全造成的失敗讓APP 閃退、Server 爆炸、線上服務停擺,讓網站瞬間一秒少賺幾十萬 😱
還好我們不是醫生,一個失敗、就讓保貴生命消失!
身為程式工程師,我們可以 rollback 失敗、可以 revert 失敗;但也只有在你認真看待作品、工程的時候…我們才能說『只有認真的失敗,才有價值』
認真做好工作、認真面對失敗、檢討失敗!
如同我的某篇舊文軟體工程師的職業道德!Code 的靈魂
(https://cola.workxplay.net/programmer-and-professional-ethics/) 裡提到的~~
我想簡單來說就是負責和想要做到更好的心態吧~~~
ps: 我很喜歡看漫畫,比起文字滿滿的工具書、閒書、成長書等... 漫畫讓我更有代入感
近期,
公司網站無預警故障,new relic APM 沒有記錄、反應;新上線的程式也是4 小時前的事了
(心裡偏見的關係,直覺不認為是新上線程式造成問題)
多位工程師一至認為先重開機
在工程界重開機能治百病!!
治電腦、治 Server 小到手機,大到冷氣機更甚至飄在太空裡的衛星 🤣
(重新開機什麼都能醫,NASA 只用「重開機」就治好了壞掉的哈伯望遠鏡)
當下,
我也讚同重開機,但我表示應該先查 Log 檔看看、找出 root cause
在網站服務故障的一個小時多期間,公司應該損失了不少錢;也看得出工程師們的緊張和焦慮!!
事後看來~
外人或是聰明如讀者你一定會覺得查 Log 不難,也是第一步;但在火燒房子和心裡偏見的情況下往往會有盲點;少一個 ;
多一個 $
這類的錯誤更是不勝枚舉 🤮
(我想.. 這是非當事者難以理解的難題。)
在亞洲社會、教育下…
修正錯誤後會因為燒女巫(git blame) 的習俗 (??!!)
讓大家對失敗、犯錯感到挫折或是難過、害怕!
但如同文章標題『只有認真的失敗,才有價值』
雖然我們不是愛迪生,但是每次的失敗裡是真的可以找到解法、改善方式進而避免下一次再失敗。
良好的失敗,可以警示出問題所在,指出改善位置。
我們應該擔心的是錯誤、失敗沒有被發現!
每一次的失敗背後,應該被重視的是如何修復、修正,而不是把犯錯者吊起來燒🔥
– 明確指出問題發生原因
– 建立停損點
– 提出改善方案
– 實行、實做改善方案
– 建立更完整的錯誤警示與回報機制
當然事後還是可以 git blame 燒一下啦 XD
我被燒過,也燒過別人 … 請原諒我年少無知 🙇♂️
ref.There is Good Failure and Bad Failure
https://thinkgrowth.org/there-is-good-failure-and-bad-failure-d2b168841f95Are there also, types of failures like, good failure or bad?
https://www.quora.com/Are-there-also-types-of-failures-like-good-failure-or-bad
錯誤追蹤、回報非常重要,看到的錯誤才知道怎麼修。現今 PHP 流行的 Laravel 有很好的 Error Tracking, Error Handling。但 plain PHP 怎麼辦呢? 在 production 為了安全考量會設定…
jenkins、circleci、travis 或 Gitlab CI 皆為目前暫知名的 CI/CD 服務,各自缺點也不言而喻...過於肥大、收費略高(?)、速度不夠快執問題...此時使用 go language 開發的 Drone 就出現啦,完全 docker 容器化的運行方式讓整個 CI…
網頁壓縮技術中 gzip 很好用,deflate 己經過時,但你聽過 brotli 嗎? 有著比 gzip 更好、更快的壓縮效率。看起來利大於弊有什麼不用他的理由嗎?簡單從優、缺點來看 brotli!到底 brotli 布羅特利是什麼、如何設定呢。 目前大多的 web server…
為什麼要讓本機使用 Docker 內 PHP? 情境... docker 容器內用的是 PHP 7.4 但你的開發本機還在跑 PHP 5.6 或是更舊,因為 dockerize 的關係會將所有相關環境都轉移到…
為什麼你需要密碼管理工具現代人一天下來需要輸入多少組密碼,工作與生活己經和密碼密不可分! 除了足夠全安的密碼,密碼記錄、儲存的方式又足夠安全嗎?密碼管理工具可以帶來什麼幫助呢? 為什麼你需要密碼管理工具 資安問題!!大多人說著沒做壞事不怕被偷資料、監聽。嚴重曝露出現代人的基本科技素養的低落和無知 🤯 密碼的使用無所不在!! 行動裝置的普及,APP 、手機遊戲、銀行帳戶所有和生活相關的東西都需要密碼!!facebook, line 只要打開 APP 也會輸入密碼只是他是自動輸入、一般情況不可視 (auth token) 一般人最常發生的密碼資安問題…
mysql 資料表分區 mysql table partition 從架構上調整 mysql 的查詢效率。mysql DB 的優化可以簡單也能複雜,除了調整設定值。也可以透過水平分割(Horizontal Partitioning)、垂直分割(Vertical Partitioning) 分庫或分表將資料分散儲存減少資料搜尋、group by 時的效能消耗。拆開批次處理,理論上效率都會變好,本文就水平分割的…