在開始一個項目時,您對該項目的了解最少。您的項目的使用者也至少知道他們對此一無所知。
他們可以為您提供“天空中的餡餅”,“這是我認為應該做的,這就是我的方法希望它做到”,但是很有可能它們是錯誤的,特別是在細節上。繼續努力,幾乎可以肯定,您將不會遵循該計劃。零件將比您想像的要難或容易,其他零件將變得毫無意義,而當您從事該項目時,您將在該項目中獲得專業知識。
A一周後,您將對計劃有個更好的了解,並進行很多調整。一個月後,您可能會認為您的計劃很愚蠢。
您的客戶/老闆對他們想要的東西有所了解。他們不是他們想要做的事情的專家:充其量是知道如何解決類似問題的通才,但是要成為創建軟件專家的唯一途徑是創建軟件。如果他們已經創建了該軟件,那麼他們將不需要您。
您的工作是成為創建軟件的專家。最初,該軟件的功能將變得模糊。他們並不真正知道,而您也不真正知道。因此,您需要進行迭代:確定您認為他們想要的東西,詢問他們是否認為合理,然後實施並儘快獲得幫助。根據他們是誰,您可以拋光不同的零件,而保留其他零件未加工。
然後您將獲得反饋。他們會喜歡某些部分,認為其他部分是垃圾,並認為其他部分會浪費時間。開始工作之後,您就更改了軟件-也許您甚至放棄了工作並重新開始(因為現在您在編寫第一部分方面的專業知識變得更好了-您剛剛做到了,並且您可能從中學到了一些東西)並得到了到同一點的速度更快-或者也許只是對其進行調整併添加他們喜歡的東西,然後更改他們想要的東西。
當他們獲得反饋時,讓他們說出他們想要的最重要的東西改善。把它寫下來。詢問更重要的內容(在有序列表中獲取)。假設您在一兩天內會收到原型估算值,並與他們聯繫。猜想將所需的前幾個功能原型化所需的時間,請問他們是否滿意,可以準備在X天內向其中一個頂級功能展示原型(不包括成品版)(包括錯誤緩衝)他們想要的兩件事。
然後向他們展示您的原型,詢問他們是否要完成或從解決方案中刪除。根據他們是誰,您可能希望通過應用程序的行為來明確說明它是原型。到這個時候,您應該已經知道拋光原型需要多長時間。他們可以在“完成”之前要求進行更多更改,或者可以要求對其進行拋光。如果他們要求更多更改,請回到之前的優先事項。
這基本上是開發人員驅動的敏捷,您可以在其中積極地與您的消費者/老闆進行交易。他們經常獲得原型,並被要求經常提供反饋。您必須確保如果他們不要求您拋光任何原型,並且他們知道您的原型離完成的功能還差的話。
這樣做,隨著您開發應用程序,您在編寫應用程序方面的專業知識將會增長,並且他們對真正想要的東西的理解也會增長。
如果您事先要求一個完整的規範,則在之前做出決定,然後知道什麼有效,什麼無效。