需求不斷變更,到底哪個環節出錯了 ── 工程師血淚史

文/林鼎淵

有些 PM 覺得跟工程師溝通很痛苦,甚至大腦會不時冒出這樣的想法:「明明只是修改一個小地方,為什麼總有各式各樣的理由拒絕跟拖延,就算答應修改,做起來也是一副心不甘情不願的樣子。」

其實大部分的工程師都是可以理性溝通的,但我們無法接受一直做「白工」和「重工」,今天筆者想透過一個案例來跟大家分享「客戶、PM、工程師」之間思維的差異,並提出可以改善的方案。

本文提及之專案、人物、事件純屬虛構,如有雷同,實屬巧合,請勿對號入座。

一、工程師說 Loading 太重,可以請你幫忙分擔嗎?

PM 反饋這個問題後,我打開專案管理系統,看那位抱怨 Loading 太重的工程師手上有哪些 Ticket,是否需要做適當的調整。

結果仔細一看才發現,儘管那位工程師在這個 Sprint 中只剩下 2 張 Ticket 尚未完成,但有一張「匯出 Excel 報表」的 Ticket 預估時程遠遠超過之前在 Sprint Planning 的預估(4➝15)。

因為剩下的 2 個 Ticket 都是這次 Sprint 的核心功能,且距離結束只剩不到 2 個工作天,因此 PM 希望我可以接手那個估時已經到達 15 小時的 Ticket,讓工程師專注處理剩下的 Ticket。

跟 PM 談到這裡的時候我覺得有點奇怪,之所以將匯出 Excel 報表的 Ticket 分配給那位工程師,就是因為他之前有實作的經驗,沒道理在這個地方卡這麼久。

二、需求不斷變更,緩衝時間再多也不夠用!

為了釐清這個問題,我跟 PM、工程師開了一個臨時會議,去了解是什麼原因導致一個不困難的 Ticket 花了這麼多時間。

此時我才從工程師那邊了解到另一個事實,其實對他而言,匯出 Excel 報表的功能並不複雜,Loading 太重的原因是客戶不斷變更需求,導致這個 Ticket 的估時不斷增加,但預計交付的日期並沒有延長,因此時間壓力會全部壓到工程師身上

我在詢問這個需求變更的頻率有多高時,工程師表示把新版交付出去後,可能再過 3、4 個小時就會收到新的需求變更;儘管每次修改都不會花太多時間,但架不住這麼頻繁的更動啊!

當需求變更導致一直做白工、重工,就可能讓工程師工作效率下降,甚至可能在完成功能後故意拖一段時間再交付;畢竟提早交付沒好事,只是讓自己的工作量變更多而已。

三、可是客戶態度很強硬啊!東西真的不符合他們需求

客戶花錢請我們做系統,當然是希望做出符合他們實際業務需求的產品;站在客戶的立場上,他們當然會用最嚴格的標準在看待每一個功能。

但站在我們的立場上,在人力資源固定的狀態下,每多一次需求變更,我們就需要花更多的時間與精力去完成,甚至導致部分同仁需要加班。

為了解決這個問題,我請 PM 跟客戶約一個時間,一起了解需求不停變更的原因是什麼,不然這樣一直改下去其實是在浪費彼此的時間。

四、整理不完的例外,變更不斷的需求

客戶是一個專門提供材料出貨的公司,在深入訪談後,才了解需求之所以會一直變更,是因為這個 Excel 報表始終沒有決定一個固定的版本,會這樣是因為過去客戶在填寫出貨單時沒有律定格式,同一個材料可能有 10 幾種表達方式。

過去沒有遇到這個問題,是因為之前的出貨單都是 Case by Case,所以他們材料名稱儘管不統一,但依舊能夠看得懂;可是如果把好幾張出貨單放在一起看,就會因為資料很難整合而產生許多問題,這也是客戶找我們做系統化的原因。

下面用手機來舉個例子,我們手機有前鏡頭,假使在出貨單上顯示:「前鏡頭、前置相機、front camera、Front Camera、frontCamera」我相信大家都看得懂這是指同一個東西;但如果管理階層想要知道公司這個月到底賣了多少個「前鏡頭」,下屬就需要畫很多時間做比對跟整合。

除了相機的案例外,這邊再舉一個螢幕的例子,每個手機螢幕的尺寸大小不同,因此出貨單上有各自的命名;當管理階層想了解這個月總共賣了多少個「螢幕」,下屬會因為出貨單的材料沒有階層的概念而整理到崩潰。

在了解客戶的痛點後,我們就知道這是因為過去「命名不統一、材料缺乏階層概念」導致的問題。

PM 一開始也是從這個方向去處理問題的,他先請客戶將期望的命名、材料的階層整理出來,然後請工程師依照規格去統整;儘管這個方案看似沒有問題,但因為客戶當時在填寫出貨單時,命名太過狂野,因此有非常多的例外需要處理,而每發現一個例外就要請工程師調整程式。

五、從源頭解決問題,不是每個問題都要靠程式解決

了解來龍去脈後,我想也許我們都把問題搞複雜了,既然我們都知道問題是在出貨單上,為什麼不要從源頭來解決這個問題呢?

如果出貨單的格式沒有律定,在未來同樣的問題還是會發生;因為出貨單上每天都可能會誕生新的名詞,而新的名詞會無法自動歸類,可以料想到就算現在符合客戶的需求,在未來還是會有許多衍生問題。

當然過去的歷史業障很難要求客戶調整,「統一名詞、確定階層」還是一個必要的工作;但也許我們可以先用過去的出貨單模擬客戶期望的 Excel,而不是不斷請工程師修改程式。

若發現有缺少、錯誤的材料先記錄下來,累積到一定的量後再請工程師修正,不然他會改到瘋。

同時為了讓錯誤的歷史在這個階段就停下,我們需要請客戶與填寫出貨單的部門溝通,律定「出貨單」填寫的格式。

如果涉及到客戶公司內部,盡可能讓他們「自行協調」,我們做好「引導的角色」就夠了,如果由我們向客戶的其他部門提出需求,那破局的機率非常高。

六、客戶未必具備工程背景,我們要協助他們表達需求

其實就算是公司內部的溝通也是不容易的,起初填寫出貨單的部門對律定格式這件事反彈極大,因為他們原本都做得好好的,現在變得要依規範行事。

在了解到客戶推行的困難點後,我們製作了一張高達數百個欄位的 Excel,並請客戶向填寫出貨單的部門展示,讓他們體會到混亂的格式造成什麼後果。

在這之後他們才理解為什麼格式需要律定了,也了解公司導入這個系統就是希望把流程標準化,減少報表製作的時間,不是想要刁難他們。

七、我們要如何調整,讓未來的合作更加順利

儘管這個問題最後在多方的協作下圓滿解決,但其實中間有許多摩擦是可以在初期避免的。

➤ Tech Lead

若發現某個 Ticket 的估時逐漸增加,要主動向工程師詢問實際狀況,因為有些細節在 Scrum Meeting 並不會提及。

若發現工程師在做重工、白工,要先釐清問題來源;不是每個問題都要靠程式解決,我們可以先嘗試跟客戶溝通。

➤ PM

如果客戶提出的需求變更太過零碎、頻繁,可以先記錄下來,等累積到一定的量,或是明確需求後再交給工程師處理。

如果發現需求能用模擬的就先用模擬的,盡可能不要讓工程師把時間耗在有高機率做白工的需求變更上。

➤ 工程師

如果發現需求變更的內容不合理、次數太多,可以即時與 Tech Lead 反應,而不是用加班默默把需求的吃下來。

希望這個案例對讀者日後執行專案時有幫助,如果還有其他建議也歡迎留言分享喔~

本文由 林鼎淵 授權轉載,原文連結

瀏覽 1,821 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button