[軟體業日常] 客戶需求與開發時程的平衡 | 如何避免被當軟體奴工

在軟體業工作
最常碰到的是接到需求要如何安排時程
才不會讓客戶/使用者知道"原來你做事這麼快!"

因為一旦讓客戶/使用者養成這種習慣
就會面臨所謂的「情緒勒索」
"你上次不是做很快嗎,怎麼這次變這麼慢?"
"幫我改個功能,反正你不是做很快"
"幫我寫個軟體,我明天就要"

以上種種情況都是因為客戶/使用者被養成了
「你很好用」的心態

【什麼樣的工作環境才需要平衡】

通常都是公司部門體系
部門開發、有制度與規則等等
無論人數多少
都需要有需求與時程間的平衡
(但是也有可能會面臨單打獨鬥的情況)

平衡的好處是
1. 有充足的時間完善專案,也不會有過多壓力
2. 不再為了趕時程而經常加班
3. 即使有臨時需求,軟體緊急維修,也不會耽誤到後面的專案進度

難處是
1. 如果是獨立開發,很吃重個人能力與經驗,如果時程拿捏不好,反而會害到自己
2. 如果是團隊開發,很吃重組員溝通,如果有人能力偏差/難以溝通,反而會拖累整個專案進度

通常
如果你預估專案完成時間需要一星期
那你就需要預估為一星期半到兩星期時間

【客戶/使用者不會去了解軟體工程師的心情】

"客戶怎麼一直改需求"
"客戶怎麼一堆問題"
這些都是軟體工程師的心聲

客戶/使用者並不了解軟體開發的流程以及難處
對於他們來說只關心結果如何

我們要做的就是能讓客戶顯現出以下情況
"請他改一個需求好像要等很久"
"我知道你有很多專案,需求不急你慢慢來"
"改這個需求是不是很困難,不行就算了"

【遇到懂你心情的客戶/使用者就跟抽卡機率一樣】

遇到懂你心情的客戶/使用者的機率真的非常低
這類型的客戶/使用者比較能為另一方著想
或許也跟他們以前的經歷有關

如果真的遇上了
工作日常至少可以輕鬆的過

【必學的需求平衡技巧】

Q1: 你可以幫我開發一個軟體嗎?
如果需求很簡單,你可以說"可以啊,但是我手上還有其他專案,可能要兩星期的時間"
在話中提到自己有其它專案在進行,給客戶/使用者一個預期等待心理
時程依照過往經驗去延伸,例如一星期就可以完成,要多說個幾天,保留完成緩衝時間

如果需求有困難度,但是你有一定把握,你可以說"這個需求我需要研究與學習新技術,才能確定是否可以完成"
讓客戶/使用者知道說你有遇到阻礙,你需要嘗試,讓他有個可能會失敗的預期心理

Q2: 我需要增加/修改功能,什麼時候可以完成?
可以答應,但請記得要說"我手上還有其他專案在進行"
給客戶/使用者一個預期等待心理
如果改一個功能只要一天,那就跟他說三天
(依照你自身情況去做調整)

Q3: 我這個需求很急,你現在可以幫我做嗎?
如果這個需求評估過後並不會危害到系統軟體運作
就表示他想要讓你以他為優先
如果讓他嘗到甜頭
之後都會用這句話來跟你說

你可以說"沒辦法,因為我現在有一個需求需要趕快修復,不然公司系統無法運作"
主要讓客戶/使用者知道說你的需求優先度在他之上

Q4: 改這個需求很困難嗎? 如果不行就算了
大部分時候改需求其實不是問題
你可以說"我需要一點時間去分析,我會盡力試試看"
由於客戶/使用者提出了對你有利的條件
也是拉近關係的好時機
完成的話可以得到信任
失敗的話也不會有太大影響

【結語】

上述情況只是一小部分而已
如何應對都需要靠經驗
也不一定適用於任何情況
這些客戶/使用者都有可能是你的老闆、經理、主管、同事、外面委託人等等
只要能抓到平衡
往後的工作日常就會輕鬆許多

留言