我在第一份工作時被炒了魷魚,因為一個寫得很糟的查詢把資料庫伺服器弄掛了,還被 FAANG 拒絕錄取。這些事全都發生在過去 10 年裡。
但一路走來,我在寫程式這件事上學到了一兩個教訓:
問題在於:你的猜測,和其他人的猜測對不上。
你猜自己能在 4 天內完成一項任務嗎?不不不。
你最好把它拆成更小的專案,讓大家看到進度。
你上一次讀超過 2、3 頁的文件是什麼時候?
你最好快速做一個簡陋的 Pull Request,來展示一個想法或原型。"有可執行的程式碼,勝過文件。"
寫完程式之後,還有部署、測試、使用者採用、客戶支援,以及後續跟進。
你加入軟體工程,是因為你喜歡寫程式嗎?忘了這件事吧。
你會把更多時間花在會議上:
還沒完……
在最理想的一天,你大概只有 1 到 2 小時能不受干擾地寫程式。
不管叫它單元測試、整合測試、端對端測試、TDD、BDD,還是任何 DD。
你最好有任何一種方式,讓你在把程式部署出去之前,就知道自己把東西弄壞了。
這就是我所說的 未經請求的大規模重構。
不是把重構當成你任務的一部分,並且尊重你目前的預估時間(見第 1 點);就是把它正式納入你的迭代規劃。中間沒有什麼折衷空間。
—「Entity Framework 是最好的。」
—「不,它慢到讓人痛苦。」
—「不不不,預存程序才是最好的」
唉啊啊啊!
工具就只是工具。
這也是為什麼我們這些寫程式的人,常被認為很愛爭辯、脾氣又差。
還有,拜託別再談什麼整潔程式碼和最佳實踐了。那是我已經改變想法的主題。
不要叫人類去做機器的工作。
程式碼風格非常適合交給機器來處理。
這跟我聽過關於婚姻的說法是一樣的。
在我以前的一份工作裡,我參與的是 3 個月或 6 個月的專案。
我們用了最炫、最亮眼的工具和框架。
但有些專案最後還是偏離了軌道。
唯一變動的因素是什麼?
我們的溝通方式:
沒有及時溝通期待、專案目標與範圍、行動計畫,以及技術問題。
這是第 10 點的推論。
在我以前的一份工作裡,我剛接觸 ASP.NET Core;當我想測試我的程式碼時,我改了設定檔裡的一個連線字串,結果把另一個環境的資料庫刪掉了。喔不!
我在錯誤的環境裡用了錯誤的設定檔。
我沒有去問,沒有人告訴我,而且程式碼裡也沒有任何限制或保護機制。
這是個溝通問題。
不管是過早最佳化,還是單純懶惰,都不要去解決或最佳化你還沒遇到的問題。避免撰寫那種「以防萬一」的程式碼。
_如果這些話讓你很有共鳴,可以看看 Street‑Smart Coding,這是一份我希望自己剛開始寫程式時就能擁有的路線圖,裡面有 30 個實用教訓。_
原文出處:https://dev.to/canro91/12-hard-truths-about-coding-i-learned-the-hard-way-after-10-years-124j