When you enchant people, your goal is not to make money from them or to get them to do what you want, but to fill them with great delight.
— Guy Kawasaki
核心概念#
身為開發者,我們的目標是取悅使用者。這才是我們存在的意義。不是為了挖掘他們的資料、不是為了數他們的眼球或掏空他們的錢包。撇開邪惡的目標不談,即使只是及時交付可工作的軟體也不夠。光靠那個不會讓他們高興。
你的使用者並不特別在意程式碼本身。他們有一個需要在目標和預算脈絡中解決的商業問題。他們相信藉由與你的團隊合作能做到這一點。
挖掘真正的期望#
他們的期望不是與軟體相關的。它們甚至不隱含在他們給你的任何規格書中(因為那份規格書在你的團隊與他們反覆討論幾次之前是不完整的)。
如何挖掘他們的期望?問一個簡單的問題:
「專案完成後一個月(或一年),你怎麼知道我們都成功了?」
你可能會驚訝於答案。一個改善產品推薦的專案,可能實際上是以客戶留存率來評判的;一個整合兩個資料庫的專案,可能是以資料品質或成本節省來評判。但正是這些對商業價值的期望才是真正重要的——不只是軟體專案本身。軟體只是達成這些目標的手段。
對照期望交付#
現在你已經挖掘出專案背後的價值期望,你可以開始思考如何交付:
- 確保團隊中的每個人都完全清楚這些期望
- 做決策時,思考哪條路徑更接近這些期望
- 在期望的角度下批判性地分析使用者需求。在許多專案中,所謂的「需求」其實只是對技術能做什麼的猜測,實際上是一個偽裝成需求文件的業餘實作計畫。不要害怕提出建議來修改需求,如果你能證明它們會讓專案更接近目標
- 在專案推進過程中持續思考這些期望
超越程式碼#
隨著我們對領域知識的增長,我們會更能提出建議,發現能解決底層商業問題的其他方案。作者們強烈相信,開發者接觸到組織的許多不同面向,往往能看到將不同業務部分編織在一起的方式——這些方式對個別部門來說並不總是顯而易見的。
Tip 96 - Delight Users, Don’t Just Deliver Code(取悅使用者,不要只是交付程式碼)
如果你想取悅你的客戶,就與他們建立一種關係,讓你可以主動幫助解決他們的問題。即使你的頭銜可能是「軟體開發者」或「軟體工程師」,真正的頭銜應該是「問題解決者」。這就是我們做的事,這就是務實的程式設計師的本質。
我們解決問題。
相關章節#
- Topic 12,曳光彈
- Topic 13,原型與便利貼
- Topic 45,需求的深坑