今天會接續著昨天的主題,來聊聊 The Clean Coder 的另一個主題。
在我過去的工作經驗中,寫過的程式性質各有不同,有充滿前端互動UI邏輯的(著重在 DOM 操作),有透過資料、狀態驅動的(著重在管理狀態),也寫過後端,一點畫面都沒有的(?),因此我的技能樹也一直亂長。
但其中不管哪一份工作,都會有一個靈魂人物 - PM,會不斷幫助我鍛鍊,一個到哪都用得上的技能。
對於很多 developer (以下簡稱 RD)來說,經常都會有被 PM 要求預估時程的經驗。
因為公司只要開著,每天都在燒錢,晚一天交出程式,公司就晚一天從客戶手上賺到錢,意味著多燒一天錢。
尤其是新創公司,不像大公司可能有其它產品線,可以來養這個 team,新創完全就是只能靠自己。
而做為一個 PM,一定是被上層第一個追問狀況的人,所以當然就再往下詢問 RD 時程囉!
不是所有 PM 都是從工程背景出身,甚至可以說滿大多數都不是,若真的遇上能溝通又是工程起家的 PM,請好好珍惜。
因此,最了解程式的 RD,是有責任要在預估時程的時候,跟 PM 報告「真相」的。
「真相」就是:「客觀中立的時程預估」、「預估背後的原因」
不樂觀、不悲觀,預估一個以目前的能力,最有可能的完成時間,以及為什麼需要這麼多時間,背後有哪些困難與阻礙。
尤其當 deadline 愈緊,PM 會愈著急,畢竟如果沒有如期交付,要直接面對客戶,被噴一嘴口水的人不是 RD,而是 PM。
所以在溝通時程的時候,往往會帶一絲緊張,但需要切記,愈是緊急,就愈是要將真相說清楚,踩住立場:
==== Round 1 ====
PM: 明天就是 deadline 要交付給客戶了,你的程式還要多久!?
RD: 我預估還要 2 天的時間,因為現在這個 bug 牽涉到系統底層的架構,也就是說,如果沒處理好,很有可能會造成其它本來正常的東西壞掉,所以我需要時間謹慎處理。
==== Round 2 ====
PM: (瞪大眼睛)兩天!客戶當初說明天就要看到成果,我們也答應過他了,你知道這個客戶對我們來說非常重要嗎!? 我們真的丟不起這個客戶欸!有機會一天嗎拜託!
RD: 我理解,但如果因此趕工,很有可能會導致其它客戶受到影響,到時候我們反而要花更多心力去彌補,我想這也不是我們要的結果。
==== Round 3 ====
PM: 唉!真的沒辦法?(用眼角餘光偷瞄你)
RD: 真的沒辦法。(堅定)
==== FINAL ====
PM: 好吧,那我打通電話跟明天的客戶說一聲,麻煩你立刻開始開發吧!
你的 PM 不一定這麼快就結束,可能還會來回個 4、5 round
但要再次聲明,不是 PM 天生愛壓榨人,所以才逼 RD 加班擠出來,而是因為 PM 負責將產品交付給客戶,因此對於客戶而言,PM 就相當於是這間公司的代表。
若是晚一天交付,透露出這間公司不重視承諾;
若是交付有瑕疵的產品,透露出這間公司沒有品質把關。
因此當我們也站在 PM 的視角去看這件事,一切就非常合理了,甚至 PM 是非常為公司著想的。
總之可以從上面的對話中看到,由於 PM 通常不會了解程式的細節,因此要預估出時程的話,當然就是 RD 的責任囉!如果 RD 沒有堅守住立場,強行將時程「樂觀化」,很容易就踏入「一坑補完再一坑,柳暗花明又一坑」的輪迴中。
先聲明,這個小節沒有貶意,而是單純要來點出真相(?)
是不是覺得上述的語句很常見?即便你沒有說過,應該也看其它人說過。
希望、下次、試試看,這些辭彙不是不能用,只是呈現出來的 「肯定度」不高,相對地給人的信賴感就不會高。
如果是在不那麼急的專案,PM 只是想大概了解一下 RD 沒有在偷懶,這些說法都沒什麼問題。
但如果是火在頭上燒的那種專案,明天一早要上線,如果 PM 聽 RD 說「希望下班前能完成」,你看 PM 會不會先跟你要電話號碼XD
尤其,「試試看」這三個字特別容易出現在 RD 口中,原因也很單純,因為程式的東西,常常不是想怎樣就怎樣的,如果誇下海口說「今天會完成」,到時候如果第三方服務斷線,或者官方技術文件有缺漏,不就開天窗了!
我將在 {某個時間} 之前,完成 {某個任務}。
看到這裡很多人會想:「那麼厲害!? 啊如果第三方服務不給力,或者同事之前留下的隱藏 bug 炸開怎麼辦?」
你覺得呢? (( 起碼想一個答案再往下看吧!
如果你假日跟朋友約在公園見面,結果公車遲遲不來,你意識到「自己的承諾快要無法兌現了」...
你會怎麼做?
思考 3 秒
2 秒
1 秒
你可以有幾種選擇:
因此,回到寫程式的場景,如果跟 PM 說好的承諾快要無法兌現了,你可以怎麼做?
你會發現當承諾無法如期兌現時,是需要付出代價的,付出更多時間,或者欠同事人情,甚至挨一頓罵。
蛤?聽起來太不划算了吧!那我一開始就說試試看就沒那麼多問題啦!
三個面向可以看:
如果從自己的觀點出發,因為我承諾給 PM 了,我說什麼都要完成!會有更多動力從心底湧出,比較不會遇到一些障礙就放棄,也更容易激發自己,嘗試各種方式來完成任務。
如果從 PM 或主管的角度出發,他們會看到這個 RD 是值得信賴的,說到做到的,即便可能有些任務沒辦法如期完成,起碼是做過各種努力,並提前告知有心理準備的,未來有更重要的案子,才比較可能給這樣的人。
如果從團隊的角度出發,當團隊中有一個人,每次預估時程的時候,都願意宣告與承諾,久而久之,大家都會更看重時程的預估。
整體來說,願意下承諾並落實的人,通常都是值得信賴的人。
成為值得信賴的人不是免費的,但好處絕對是有的
今天整篇下來有點長,所以總結一下:
其實寫完才發現,書中的東西其實講得有點少,大部分變成我自己的經驗談XD" 所以如果可以,還是盡量去買書來看啦~
小小的燭火
在愈深的夜裡
愈有力量