淺聊項目交付過程中的風險因素
任何事情都有風險,就是看如何避免和控制風險。在項目交付過程中,其實有很多都是可以避免的。比如正文進行分析的這些,很具有普適性。
近期我們在信息化建設項目過程中,遇到了一個比較神奇的問題:原本計劃二周可以完成交付的功能,延遲至二個月才能完成。這個過程暴露了很多問題,而這些問題往往有很多都是中小型軟件開發企業存在的普遍問題。我想通過本次的文章,將我所思考和分析的問題分享給各位讀者,希望各位即將或已經在建設信息化系統項目的過程中能有所幫助與收獲。
一、交付過程概述
從10月16日開始收到現場實施人員提出的需求,至12月15日完成功能交付,歷時兩個月。
- 10月17日至19日:產品設計人員完成原型設計并經過評審確認。
- 10月20日:研發負責人指派研發任務。
- 10月25日:研發人員開始執需求開發,至10月30日完成開發,并提交測試人員驗證;測試人員提出Bug,設計人員進行設計優化,開發人員進行Bug修復。
- 11月3日:研發人員完成功能開發,并交付現場實施人員。
- 11月6日至17日:由于網絡故障或其他原因,項目經理和現場實施人員未能推進該功能的用戶現場測試和試用。
- 11月20日:產品設計人員收到現場實施人員再次反饋的擴展需求。
- 11月21日:產品設計人員完成擴展需求的原型設計并經過評審確認。
- 11月22日至27日:研發人員進行擴展需求功能開發。
- 11月28日至29日:測試人員完成功能驗證并交付功能給現場實施人員。
- 11月30日:現場人員進行功能驗證收并反饋修復意見。
- 12月1日至14日:產品設計人員針對反饋修復意見進行優化設計,研發人員進行Bug修復。
- 12月15日,簡化版報告最終完成交付現場實施人員。
二、存在的問題和原因
由于項目建設涉及設計、產品開發、測試、實施和項目管理等環節。
下面我們將分析一下存在的問題:
1. 需求分析
- 由于需求收集不夠完整,需求分析不夠深入,導致同一需求的功能段段續續的提出,從而影響項目的開發周期。例如,10月中旬第一次提出的需求,到11月中旬又提出擴展需求。主要原因是產品人員無法親臨現場進行調研,用戶需求由現場人員代為收集,而產品人員也沒有重視并及時對現場人員收集回來的需求進行認真分析。
- 由于用戶單據資料變更沒有及時同步和確認,導致開發完成后還要對功能進行修改。例如,報告文件原先是5月份提供的,而10月份我們使用時,文件已經進行了更新。主要原因是文件使用的時間跨度太長,而且使用時也沒有再跟客戶做進行一步的資料確認。
2. 產品設計
- 在功能規劃時,由于沒有分析需求的應用背景,也沒有從開發團隊實際情況出發,導致開發和實施難度變大。比如:設計這個臨時功能時,關聯了其它的設備、人員、報告等各個功能模塊,使得原本只要上線一個模塊的功能,現在還要關聯其它模塊一起上線,延長了開發和實施的周期。這是因為功能規劃時,沒有考慮到快速推廣應用的目的,而是忽略了實際情況。
- 在功能設計時,也沒有充分考慮客戶的應用場景,比如:在設計用戶編制報告功能時,除了考慮常規的新增報告,還應當考慮編制同類報告時,可以進行快速復制的功能,以及對于一段時間內需要集中編制大量報告時,可以考慮導入報告的功能。完善這些功能的設計,除了依賴前期的需求收集外,也需要設計人員充分的分析和思考。
- 控件定義時,也沒有從數據實際應用角度考慮,導致開發完成后還要對控件進行修改。比如:涉及到客戶保密和安全的字段的展示方式,原先我們定義為下拉選擇的方式(暴露所有的數據信息),后面我們又調整成文件輸入的方式,這是因為設計時不僅要考慮到用戶使用與操作的便捷性,也需要考慮客戶所屬行業關聯的數據安全性。
3. 系統開發
- 由于開發團隊負責人在分配完研發任務后沒有及時跟進和推動任務的執行,以及沒有明確任務的優先級和完成日期,導致任務執行的時間滯后,比如20號指派的任務,25號才開始接收執行,這主要是由于開發人員存在并行處理的任務。
- 由于開發團隊內部按模塊對應固定人員分工,以及開發的資源不足,內部分工機制不夠完善,導致一個模塊新需求和bug過多或著對應模塊的開發人員請假時,無法按時完成任務,比如報告管理由一個人開發人員開發,由于前面的需求和設計的變動,以及開發人員的請假,導致任務一直在延期。
- 開發與產品團隊人員之間缺少必要的溝通,導致開發完成后的功能與實際設計的功能有偏差,比如報告管理原先設計是放在一個租戶下,而實際開發出來的是放在另一個租戶下,這主要是由于前期沒有需求詳講,開發過程中遇到疑問沒有保持溝通。
- 開發完成后,由于沒有進行單元測試和集成測試,因此在測試階段出現了大量的Bug,其中有很多是比較低級和明顯的錯誤,比如:填寫的時間格式不正確,展示信息的取值不準確。這主要是因為前期需求和Bug的工作量很大,以至于精力不足以進行自測,就提交測試了。
- 在功能部署升級時,由于沒有將生產環境和測試環境做好同步,導致出現了在測試環境中沒有出現的問題,比如:生產環境首次新建報告時,模板是空的;報告內容中的基礎數據為空等。這主要是因為沒有實施測試與生產環境同步的要求和機制,同時也缺少對生產環境的驗證要求。
4. 系統測試
測試對提測版本沒有要求,導致交付測試版本質量較低,發現的 Bug 數量較多,需要測試人員與開發人員之間反復溝通,影響項目交付的周期。比如:目前測試人員測試的時間都是由開發負責人通知的,通知開始測試就直接上測試環境測試。
測試發現問題后,目前僅提交 Bug 到禪道,缺乏后續的問題跟進處理,導致 Bug 量較多,但驗證和解決的少,影響項目交付的質量。比如:每日僅統計 Bug 的發現量,但沒有統計 Bug 的驗證情況和未解決的 Bug 目前處理情況,延期的 Bug 依然延期,而且越積越多。主要原因除了測試人員跟進不及時外,開發人員解決效率也是一方面的主要因素。
5. 實施
實施人員沒有制定詳細且可落地執行的實施計劃,導致在現場發現問題時,對設計、開發和測試團隊沒有時間上的要求,從而使項目的實施工作變得不可控。比如,沒有對客戶提出的報告需求進行任務分解,也沒有明確要求任務的執行人、執行時間和相應的配合資源。
實施人員對分配的實施任務沒有按要求執行到位,也導致了項目周期的延長。比如,基礎數據配置的工作原計劃一周完成,但拖拖拉拉延遲了兩周,客戶使用發現問題后,又需要調整配置一周。這主要是因為對實施人員的崗位職責和管理要求沒有明確。
6. 項目管理
項目管理人員未能將該功能列入項目計劃,也沒有及時跟進并發現該功能執行過程中的問題,從而導致功能的進度被不斷拖延,從10月16至12月15整個功能開發歷時2個月,而回頭看再排期時,本可以只要1個月左右時間便可完成。這其中,主要原因是項目管理人員沒有足夠的管理意識,沒有給予該功能足夠的重視,比如:站會跟進、人員協調等,計劃也未能及時發現問題并及時跟進。
此外,項目管理人員身兼數職,需要配合項目售前相關工作,還要需求調研設計等工作,沒有更多時間投入到項目管理工作,比如:在11月份,項目管理人員被抽調進行二期項目的招投標工作一周,這主要是因為公司資源有限,往往一人多崗,在多項目并行時,管理人員就力不從心。因此,公司應當集中一人,專崗從事項目管理工作,以提高效率。
三、問題分析與改進措失
1. 需求分析
對于安裝部署后的項目,進入系統功能優化迭代階段后,出于成本等各原因的考慮,用戶的需求往往由現場實施人員收集。此時,產品設計人員更多的是通過現場人員收集和反饋的信息進行系統的設計,也因為產品設計人員沒有第一手的溝通信息,會導致設計上存在偏差和缺陷。要避免存在這種情況,個人覺的要注意做到以下三點:
- 將需要現場人員收集的用戶需求制定成模板,讓現場人員按模板要求填寫用戶需求。這樣就可以將設計所需要了解的客戶需求要素收集完整。當然前提是產品人員清楚自己設計時需要涉及到哪些要素。比如:現在我們制定了用戶需求反饋跟蹤記錄表,將用戶需求完整記錄到清單中,同時也利用現場人員跟用戶進行反饋。
- 對于反饋記錄單表中的需求描述不明確或不完整時,要及時跟現場人員或需求提出用戶及時進行溝通確認,避免需求出現偏差。比如:現在我們逐條對用戶需求進行分析并描述需求的系統實現方式,有不明確的地方會及時進行溝通。
- 對于用戶提供的單據資料要及時做確認,特別是提供較長時間(比如1~3個月及以上)的資料要明確是否有最新版本。
2. 系統設計
設計人員進行功能規劃時,要先明確本次項目(功能)的建設目標,建設周期,再結合前面收集的需求進行功能規劃。設計產品時,需要根據用戶的實際場景出發,功能能夠滿足和覆蓋各種應用場景,當然從功能規劃角度要定義好功能的優先級。定義產品控件時,需要考慮每個數據實際應用的情況,再進行控件的定義,以避免實施過程中遇到問題再去調整。
3. 系統開發
- 通過管理工具進行任務分配管理時,開發管理人員要利用工具做好及時任務提醒,同時也需要開發管理人員養成每日定時任務分配的習慣,避免任務未能及時安排導致任務延遲。另外,盡量避免開發管理人員既要管理開發團隊又要進行項目開發,兩頭都要顧及時,往往開發與管理工作都不能做好。
- 應保障項目開發團隊的人員有一定的冗余度。在項目開發過程中,若有人員因故無法完成任務時,可以有資源能夠調配,保障項目的進度。
- 設計與開發人員應保持溝通。從設計交付至開發人員的需求詳講,開發過程中的問題澄清,再到最后的開發功能交付產品驗證。開發人員與產品應保持溝通,有疑問就要即時的提出和解決。過程中的溝通與人員的主動極積性密切相關。
- 開發人員應當做好自測工作,避免交付的功能存在重大、明顯的缺陷。同時,開發管理人員也根據項目的進度安排好開發任務的優先級,避免任務的過渡集中導致任務過多而導致開發人員無法自測或自測效果不理想的情況。
- 利用和做好開發外的基礎性工作,提高開發的效率和質量。比如通過代碼走查工具提升代碼質量;通過同步測試和生產環境的基礎數據,提高功能測試和驗證的準確性。
4. 測試
建立起測試流程規范,通過學習與培訓提高測試人員的能力。同時,也要建設好測試管理制度,對測試的結果進行考評。
5. 實施
實施人員需要根據現場的實際情況制定好實施計劃,并與客戶及研發團隊達成一致,保障實施計劃能夠逐項落實到位。
6. 項目管理
項目管理人員需要將每項工作列入項目計劃,通過站會跟進項目的進度與質量,在項目出現問題時,需要及時的調配資源保障項目完成。若存在管理人員身兼數職情況下,可以增加項目助理,輔助完成日常操作性工作,讓項目管理人員集中精力完成重要的工作事項。
四、總結
以上問題可見,需要完成一個項目,先依據實際情況制定好項目計劃,計劃中涉及的人力資源要有保障,同時項目過程中的各個環節要有規范和制度,對于項目過程中的存在的風險要提前做好防范措施,才能保證項目保質保量的完成。
作者:refurbish ; 公眾號:Bruce林奮進頻道
本文由 @refurbish 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!