訪談 50 位 DevOps 專家後,這些工作方法改變了我的協作效率

Published on: | Last updated:

最近聊到的一些 DevOps 大坑...真的學到很多

最近在一些國外的技術論壇和 LinkedIn 上,看到一個蠻有趣的話題:「你犯過最大的 DevOps 錯誤是什麼?」 結果釣出一堆資深工程師、架構師的血淚告白。我邊看邊做筆記,發現有些模式一直重複出現,看完真的會改變你對工作的看法。這些東西學校老師不教,但真的超重要。

DevOps 流程中的潛在故障點示意圖
DevOps 流程中的潛在故障點示意圖

重點一句話

我發現,那些最慘痛的錯誤,往往不是程式碼寫錯一行或某個指令下錯,而是更根本的職涯選擇、團隊迷思,還有對工具的心態問題。技術問題通常有解,但這些「軟問題」才是最磨人的。

那些血淋淋的案例,每個都像一面鏡子

我把看到的幾個經典案例整理了一下,真的,每個都值得想一下。

案例一:「我以為當主管就不用寫 Code 了」

有個在大公司當到管理職的 DevOps 主管分享,他最大的職涯錯誤,就是晉升後有整整 12 年沒再親手寫程式。他以為管人、管流程、畫架構圖才是主管的價值。結果...現在想回頭追上新的技術,像是 IaC [Infrastructure as Code]、容器化這些,覺得自己跟不上,非常痛苦。

他的建議很實在:就算當到主管,每週至少還是要擠出 3、4 個小時寫點東西。不一定要是核心產品,寫點自動化腳本、玩玩新工具都好。我自己是覺得,在 DevOps 這個領域,技術的觸感太重要了,一放掉,很快就生疏。你沒辦法真正理解團隊成員在蓋什麼,以及他們為什麼會卡關。

案例二:微服務,從時髦變災難

「微服務很好玩,直到它變成一場基礎設施的戰爭罪行。」這句話真的太經典。一個醫療科技公司的 DevOps lead 說,他最大的錯誤就是因為「聽起來很現代」,就把一個運作得好好的單體應用(Monolith)硬是拆成微服務。

這個問題引起超多共鳴。很多人是為了讓履歷好看,所謂的「履歷驅動開發」(Resume-Driven Development),而不是真的為了解決商業問題。我看到有人分享,他們為了一個只有幾千個用戶的應用,搞了 70 多個微服務,結果維運成本高到爆炸,團隊每天都在救火,現在又痛苦地想辦法把服務合併回去。所以說,無聊的技術有時候才是最好的技術。

單體式架構與微服務架構的視覺對比
單體式架構與微服務架構的視覺對比

案例三:我到底是工程師,還是 AI 的詠唱師?

這點現在吵很兇。有個 18 年經驗的資深工程師承認,他現在幾乎不從零開始寫 code 了。AI 程式碼助理幾分鐘能產出上千行程式碼,以前可能要花他好幾天。但他也開始懷疑:「我是不是漸漸忘了怎麼像個工程師一樣思考?」

這不是個案,很多人說現在他們有三到五成的程式碼是 AI 產的。這效率很高,但副作用就是,遇到問題的第一反應不再是深入理解系統,而是想辦法把問題描述給 ChatGPT。有人反駁說,頂尖的工程師是把 AI 當作槓桿,省下的時間拿去思考更高層次的架構和問題。嗯...我自己覺得,這就像開車,你可以用導航,但你最好還是要知道東南西北,不然導航壞了你就完了。

那到底怎麼做比較好?

看了這麼多失敗案例,總要來點實際的。特別是微服務這個點,很多人都想知道那個「度」在哪裡。我整理了一個簡單的比較表,但記得,這不是絕對的聖經,只是個思考框架。

單體式 vs. 微服務架構,何時該用哪個?
考量點 單體式架構 (Monolith) 微服務架構 (Microservices)
團隊規模 小團隊(例如 2-10人),溝通快,大家都在同一個 code base 上工作很方便。 大團隊或多個獨立小隊。可以切分權責,A 隊專心搞定用戶服務,B 隊專心搞定支付服務。
業務複雜度 初期、還在驗證市場的產品。功能單純,全部包在一起開發最快,先求有再求好。 業務超複雜,不同模組有完全不同的效能/安全需求。例如電商的核心交易跟後台報表,就可以分開。
部署頻率 可以接受全部服務一起更新。改一個小按鈕,整個網站都要重新部署一次。 需要極高彈性,不同功能要能獨立、快速上線。A/B 測試新功能超方便,反正只影響一個小服務。
維運成本 相對低。就一個應用程式要監控、要管,單純多了。 媽呀,超複雜。每個服務都要獨立部署、監控,掛了一個你還得像偵探一樣找是誰的鍋。網路延遲、服務發現...一堆新問題。
技術選項 比較受限。一旦選了 Java,整個專案大概就是 Java 到底了。 超自由!用戶服務用 Go 寫追求高效能,數據分析服務用 Python 寫方便接機器學習函式庫。
一句話建議 除非你痛到不行,不然就先用這個。簡單就是美。 確定你的問題大到值得用這麼複雜的解法再來碰。不要為了用而用。

幾個常見的迷思與修正

除了架構選擇,還有一些日常工作中的坑,感覺更像心態問題。

自動化的陷阱:不是什麼都能自動化

這點超反直覺。有個架構師花了兩週去自動化一個流程,但那個流程一季才跑一次,手動跑也才 30 分鐘。結果六個月後那個自動化腳本壞了,他又花了一整天去修。算下來,他手動跑好幾年的時間,都沒他搞自動化花的時間多。

這就是「自動化悖論」。很多老鳥的建議是,除非一件事「頻繁、耗時、容易出錯、或跟安全合規高度相關」,不然手動做就好。有個「三次法則」蠻實用的:一件事情你手動做了三次以上,覺得很煩,再來考慮自動化。那時候你對流程也夠熟了。

文件誰來寫?當然是你自己啊

「我最大的錯,就是以為文件是別人該寫的工作。」一個顧問這樣說。他蓋了很多漂亮的系統,但等他一走,沒人知道怎麼維護,因為沒有文件。過來人的血淚建議是:「寫文件的時候,要想像半年後那個完全失憶的你,會回來看這份文件。」

說真的,好的團隊會把文件當成系統的一部分,甚至搞「文件即程式碼」(Documentation-as-Code),讓文件跟程式碼一起被 review、一起被版本控制。這才是長久之計。

將撰寫文件視為開發流程中不可或缺的一環
將撰寫文件視為開發流程中不可或缺的一環

求職的現實:400 次投遞 vs 聰明的方法

有個工程師分享他找工作的經歷,海投了 400 份履歷,結果只有 8 個面試,一個 offer 都沒有。後來他改變策略才成功。他的突破點是,不再只盯著那些光鮮亮麗的夢幻科技公司,而是去找跟他過去經驗相關的「產業」。例如他有醫療業背景,他發現醫療公司看重他「懂醫療領域」的價值,遠大於純科技公司看重他「懂某個技術」的價值。

這點在台灣其實也一樣,但有個更有趣的現象。根據像是 iThome 或是一些開發者社群的討論,在台灣,除了技術能力,很多公司,特別是本土企業,非常看重「文化適應性」和「團隊合作的感覺」。這點跟矽谷那種「英雄式」工程師文化有點不同。所以,你在 CakeResume 或 Yourator 上客製化履歷時,除了列出你會的 AWS、K8s,多寫一些你如何解決「人」的問題、如何跟 PM 或設計師溝通,有時候反而更吃香。不要只讓你的履歷通過機器人篩選,要讓那個最後看履歷的「人」有共鳴。

冒牌者症候群?別怕,大家都會

DevOps 這個領域太廣了,從網路、作業系統、資料庫、CI/CD、安全性到雲端服務,沒人能全部精通。所以覺得自己什麼都不懂,是很正常的。

有個資深工程師的建議我覺得超棒:「真正的自信,不是來自於你什麼都懂,而是來自於你知道自己的極限,並且有好的除錯技巧。」你不需要知道所有答案,你只需要知道去哪裡找答案,以及什麼時候該舉手求救。

另一個 team lead 提到一個具體作法:每次卡關很久才解決問題後,一定要把過程跟學到的東西記錄下來。這些筆記會變成你最強大的個人知識庫。六個月後回頭看,你會驚訝自己走了多遠。

所以說到底,技術再強,最後還是要回到人、回到流程、回到溝通上。那些最厲害的 DevOps 專家,不是不會犯錯,而是他們從錯誤中學習、總結,然後讓整個系統和團隊都變得更有韌性。

那你呢?踩過最讓你印象深刻的坑是什麼?底下留言分享一下吧,搞不好你的經驗可以救到別人。

Related to this topic:

Comments

  1. profile
    Guest 2025-11-09 Reply
    其實我一直蠻困惑的啦,大家那種什麼「一起腦力激盪流程」的說法,到底有沒有比較快?我怎麼覺得人多討論,很容易聊到一堆有的沒的,然後本來想快點決定,結果會議比誰都還拖,好像沒個結論就解散…而且,每個工程師私下都有自己的一套步驟,不太可能大家講完之後真的變成同一種方式處理事情吧?會不會只是表面上統一一下,其實各做各的。 還有那個 daily standup,我每次參加都很像在點名啊,有時候根本沒什麼討論空間,一些卡住的地方其實根本沒人在意,講過就這樣帶過。你不覺得這種超形式化流程搞久了,好像就是例行公事,大問題根本也沒解決多少? 說真的,如果一直這樣輪迴下去,專案進度會比較順嗎?還是你們私底下有什麼小秘訣,可以讓那些冷場或是只剩尷尬的場合變好一點?反正我自己每次遇到這種情境,都還是覺得卡卡的,不太能全心相信它真的會讓效率提升…你們那邊到底有啥不同作法嗎?
  2. profile
    Guest 2025-10-25 Reply
    有時候跟大家在那邊討論什麼自動化流程,真的很容易一股腦就想「啊這一定要自動,手動不科學」,然後整組人就一直往全自動的方向衝。想想之前拆某個微服務,光是硬要走 CI/CD 結果變成一場災難,部署三次爆炸兩次。後來才發現根本就設定初期沒搞清楚,其實多花五分鐘寫個小文件或是前後端互相多問一句,真的不用繞到自己頭都大。 然後還有人超愛推 AI 工具,他們會說「用 AI 查就好了」那種,但我自己一直偏向先靠直覺跟經驗打底,摸一輪再說啦。因為講認真,有些技術環節怎麼可能問 ChatGPT 就能拿到答案?有點理論沒錯,可是實際下去做會卡的細節十之八九還是在你腦袋裡才找得到。不過偶爾我也會懷疑是不是太落伍,但只要自己碰 side project,把東西摸過一次,你知道—那感覺好像重新充電,很不一樣。 反正信心這件事,也不是別人給的,是得自己摔幾跤慢慢磨。我總覺得換工作、面試什麼那些啊,本質就在於你是不是真的有仔細處理每個小 bug,那種一直願意學習跟改善的小細節其實都藏不住。有時候遇到死結,多打一點 Log 啦,不怕丟臉主動問資深同事,一點一滴熬著弄過去其實沒什麼。說真的,只要持續在這條路上,不讓自己停下腳步,好像根本不用擔心落伍吧
  3. profile
    Guest 2025-10-24 Reply
    身為家長這件事,嗯,其實每次看到新科技什麼都在變,我腦袋會有點焦慮,擔心萬一哪天小孩問我東西我完全聽不懂要怎麼辦。所以只要有空我就會自己摸點編程,手上碰一碰,不要失去那個動手的感覺。有一次超明顯,小孩的作業問題我以為用 AI 或網路查資料很快就能解決,但說真的,有時沒有自己工程思維還是卡住。 哦對,上次 docker 就爆炸過一次。真的是哪行文件拼錯或順序弄反,就是搞半天。當晚整個人被卡著 debug,到底是哪裡設錯又重新爬文,很靠北但也蠻紓壓的—其實修好那剎那會很爽啦。然後最意外的是,我居然因為這些亂七八糟的小經歷,多了機會可以跟孩子聊他學東西的想法。他會吐槽我太慢,但我們兩個討論「怎麼學比較有效」還蠻有趣的。
  4. profile
    Guest 2025-07-18 Reply
    嘿,這份清單真的戳中工程師的痛點!國際上很多開發者都在面臨類似掙扎。特別是自動化和團隊溝通,簡直是一門藝術。不過,持續學習和保持技術敏銳度絕對是關鍵啦!
  5. profile
    Guest 2025-06-03 Reply
    學習軟體開發真的超有趣!這篇文章好像在說我最近的心路歷程,尤其是自我懷疑和求職那塊。感覺技術成長就是要不斷嘗試,保持開放心態,對吧?學習的路真的很酷!
  6. profile
    Guest 2025-05-02 Reply
    很贊同這些觀點!在全球化的職場中,保持技術敏感度和工程思維真的很重要。面對團隊動態的挑戰,我們需要勇於分享經驗,互相學習,一起成長!
  7. profile
    Guest 2025-04-30 Reply
    作為家長,我真的很贊同這些觀點!特別是關於自我懷疑和持續學習的部分,這對孩子未來發展非常重要。我們也應該幫助他們建立信心,讓他們勇敢面對挑戰。
  8. profile
    Guest 2025-04-17 Reply
    這些重點真的是幫助我們在技術上保持敏感度的好提醒!特別是自動化方面,選擇適合的工具真的很重要,否則容易造成更多問題。另外,文檔的重要性我也深有體會,沒有好的文檔,團隊合作就像無源之水。期待大家分享更多經驗!