本文將總結一個使用 AWS × dbt × Snowflake 進行數據基礎建設項目的經驗,
需求定義到設計花了4個月,實作僅用2週,
這讓我深感「這樣的平衡正常嗎?」的學習與體會。
本篇內容將重點放在上游工程的價值、設計的重要性、以及在AI時代作為工程師所需的能力,
而非技術性的小技巧。
在實作階段,AI(ChatGPT / Codex)以驚人的速度推進,然而上游工程卻……
「我們可以聊聊嗎?」本來是這樣說的,但轉眼間已經過了4個月。
通過這段經歷,我深刻體會到,
「專案在撰寫代碼前幾乎已然確定」,
這是一個雖然平常但卻重要的事實。
在此次專案中,我負責了基於 AWS、dbt 及 Snowflake 的數據基礎設施的設計與實作。
我的角色包括:
整個流程我都全程參與在內。
在這裡,我將重點放在「為何上游工程花的時間比實作多」的感悟上。
在本次專案中,需求定義到設計耗費了超過4個月,
而實作則在2週內結束。
僅從時間數字上看,
可能會有人問「是不是在偷懶實作?」其實恰恰相反,上游工程實在太困難才是事實。
每週會議中,前提條件經常改變,
而且不同的相關人員對事物的解釋也不盡相同。
最具代表性的例子是,
原本因為日程原因暫時擱置的 OTF(實時資訊流)採用方針再度被推翻的瞬間。
「咦,又要回去?剛才才放棄過不是嗎?」
在電腦前我默默在心中吐槽,
但在上游工程中,這种“前提的擺動”是常態。
雖然有資料,但卻不知道哪個是最新的;
甚至出現了舊資料反而更正確的反轉現象。
就像是
「有地圖卻都無法指向當前的位置」
的狀態。
參與之後,我首先進行了資料的結構化和更新,
從建立「至少這裡是正確的」的資料起步。
在上游工程中,「正確的資訊在哪裡?」的整理,便能推進專案。
當有工程、架構、基礎設施和運營等多個團隊協作時,
決策延遲和認知不一致的情況是無法避免的。
在關鍵時期,我與最緊密的團隊每日進行短會議,
努力透過“縮短距離的方式”克服這個挑戰。
需求定義和設計階段的困難,比起代碼更在於
「認知、資訊與距離的溝通量」所決定。
我再次深刻體會到這一點的重要性。
在基本設計階段,我提高了抽象度,重點關注客戶真正想知道的
我特別重視這些問題。
在技術細節上更不如關注
「這樣進行沒有問題嗎?」
的確認階段。
為了讓開發者不會迷惑,
我徹底清晰了
我要時刻問自己:
「如果是我來實作,這樣能做到嗎?」
並且在撰寫時不斷檢視。
這一點在後述的“AI實作”中也十分有效。
在此專案中,我感到最驚豔的就是
單元測試(UT)實作的效率化。
從傳統的感覺來看,
大約是這樣的工時,但此次則是
體感降到1/10左右。
在將函式交給AI之前,把其分割為一個職責,
用註解區塊清晰表達「這個函式想要達成什麼」。
這樣一來,ChatGPT好像在說
「我明白了,你想要這樣的東西,是吧?」
便生成了UT。
相反地,若是傳遞模糊的需求,
則可能出現
「我把所有都一起處理了!!」
這樣的巨大 main 函式誕生,需格外注意。
即使出現了規範變更或重構,
只需傳達差異,AI便自動調整UT。
實作 → AI調整UT → 繼續進行
這樣的流程讓我純粹感受到「這就是未來」。
在本次專案中,我強烈感受到自己
「善於整理混沌並推進」的角色。
在這些雖然平凡但重要的環節中,
我多次有能夠確實推進專案的體會。
我再次意識到,這與技術力別無二致的價值。
這次的經歷讓我強烈感受到,
上游工程的確是提升工程師市場價值的階段。
整理需求、統一認知、消除模糊,
將其轉化為可實作的形態。
實作部分由AI來加速。
因此,
「實作前的思考時間」才是人類的價值所在。
當然,上游工程是困難的。
也曾有一天我在想「這真的能完成嗎?」
然而,那份困難的背後,
卻有著在實作中無法體會的趣味。
希望這篇文章能成為某人挑戰上游的契機。
原文出處:https://qiita.com/shota_hanawa/items/e242d826570e4292e388