如何拒絕不合理的工時安排
當我們做軟體開發的是,客戶通常希望花更少的錢、用更短的時間做更多的事情。《快速軟體開發》中舉了這麼個例子:
假設你想賣掉一輛汽車去換一艘汽艇,經過估算汽車至少要賣5000塊錢才夠你湊齊足夠的錢買到遊艇。一個買主看中了車,但是他只願意出4500塊錢。你說”少於5000不賣“,他也堅持”我最多能出4500“。
這個談判的例子是基於立場而不是利益,所以最終的結果必然一贏一輸。但是我們假設買主可以讓你4000塊錢就能購買一艘遊艇,這樣你不僅買到了遊艇還掙到了500塊錢。這個故事想要告訴我們的是談判要基於雙方的利益,而不是立場。
軟體開發也是一樣,通常客戶讓我們6個月開發完成的專案至少需要9個月,沒人想在此後的6個月每週工作60小時以上。為了保證拿下專案,你必須做出讓步,考慮一個雙贏的方案。在專案進度的談判中最容易出現的問題就是雙方針對進度計劃爭論不休,此時我們應該避免對立立場 ,儘量從各個角度提出多種備選方案。如果客戶一定要堅持按照指定的進度完成專案,你可以從下面幾個方面說服他們:
1.過分樂觀的預估開發速度
過分樂觀的預估開發速度會對進度計劃造成負面影響,指定計劃需要追求實際。
2.延長開發計劃可以增加成功的機會
若將計劃進度縮短,則如期完成的機率也相應的減小。
3.提引以前類似專案的失敗教訓
指出以前的某些專案之所以延遲正是由於進度估算過短而造成的,並且還產生了其他很多由於超時引發的各種問題。儘量使他人明白不應再犯相同的錯誤。
不要將談判看做你死我活的角鬥遊戲,應從解決問題的角度進行協商,真正明智的談判者會努力達到雙贏的解決方案。在進度談判中提出多種備選方案是非常重要的,由於開發人員掌握著關鍵實現技術,因此他們比與之談判的非技術人員更有責任從各個角度考慮各種可能方案,並解釋每個方案的可實現性及各方案的平衡因素。
在籌劃軟體專案時,最好先確認一下其中存在多少可以靈活調整的內容。如:
1.與產品有關的靈活變通
- 將一些設計功能放到下一個版本實現。大多數人在提出需求時,並不清楚這些需求是否必須全部在當前版本被滿足。
- 砍去某些實現起來費時或者需要談判後才能確定的特性。
- 對某些特性不必精雕細琢,只需要實現到某種程度即可。
- 儘量輕鬆的實現各特性的詳細功能需求,可以使用一些第三方元件來貼近功能需求。
- 如果處於專案初期,則增加更多的開發人員。
- 增加高層次的開發人員
- 增加更多的測試人員
- 在管理方面給予更多的支援
- 提供更好的開發環境
- 提高終端使用者參與度
- 在產品設計的時候只提出進度目標,不設定確切期限。
- 在產品設計的時候探求縮短開發時間的方法。
- 先給出進度的估算值,在隨後的專案進展中逐步精確。