概率上不幸的必然
上週我經歷了不太幸運的一天。
工作上卡到了莫名其妙的問題解不掉,加班到七點半都還沒吃飯,精神頗為疲憊。放空一下回過神來已經八點了,肚子餓到有點痛,準備出門找吃的,外面還飄著雨,走到摩托車旁邊鑰匙一插,卻發現機車發不動。火星塞努力地點火哀鳴但就是發不起來。
上週我經歷了不太幸運的一天。
工作上卡到了莫名其妙的問題解不掉,加班到七點半都還沒吃飯,精神頗為疲憊。放空一下回過神來已經八點了,肚子餓到有點痛,準備出門找吃的,外面還飄著雨,走到摩托車旁邊鑰匙一插,卻發現機車發不動。火星塞努力地點火哀鳴但就是發不起來。
“Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky…” — Donald Knuth
每個大學生都可以在抽象上跟你解釋二分法的概念,但是一旦需要寫出正確無誤、考量到邊界條件的實作,大概只有10%左右的工程師能夠做到。儘管現代工具非常方便,只要呼叫bisect,就可以把一串有序列表二分搜尋。但學習正確地寫出二分法,對於鍛鍊程式思維還是非常有幫助。
最近在release時遇到一個特別的需求。在某個比較舊的專案上,Jenkins CI只會留下前幾個版本,而且只有master上的版本會被release。如果要rollback到更舊的版本,那只能在master上推一個舊版本的commit。
跨平台的git repo換行問題應該可以列入「每個工程師都會踩到的十大問題」之一。整理一下自己的筆記。
2020,計畫趕不上變化的一年。幾乎沒有人在2019時想過,世界會有超過8000萬人感染新興疾病,190萬人死亡。國境封鎖、口罩、防疫物資成為搶手貨,各國開始印鈔票挽救經濟。原訂的旅遊計畫也因為飛機停飛而取消。
Legacy Code就像是一間沒有人維護的廁所,功能正常,拉屎沖得掉,但裡頭充滿難聞的氣味,牆上被簽字筆寫上各種低俗的髒話,不小心還會踩到髒東西,你連一分鐘都不想待在這裡。
因為某個不是資訊科系的朋友看到小弟操作電腦後驚為天人,一直堅持要我寫這篇。
出社會後的某個時間點開始,我決定要多用鍵盤,少用滑鼠。人生苦短,有太多你想要做的事情。聰明的人把重點放在要達成的目標,而怎麼做是實做細節,越快越好。
曾有一段時間覺得,寫程式是個需要腦力的工作,需要專注才能寫出有品質的程式。而如果要 達到專案進度,每天最好需要有一段專注的時間,不該隨意被打擾。
工程師常常會覺得溝通頗浪費時間,我都沒時間寫Code了,還要去參加各種會議、討論計畫、demo進度,到底寫Code的時間還剩多少?工作一陣子之後,我的想法改變了。
抽出介面的重構練習
我們聽了太多的敏捷開發,但不寫測試的敏捷,就像不會動手術的外科醫生一樣荒謬。
我在2017年上了Daniel的CSM(Certificate Scrum Master)課,上完有種毀三觀的震撼,那門課表面上在講SCRUM,其實講的是一套敏捷的人生觀。課程最後一天的下午,Daniel談到了為什麼要自動化測試。