我開始能從工作流程看見系統需要做什麼

從工作流程圖往下推導案件階段、狀態與系統需求,說明如何在實作前提早看見系統需要管理的事情。

Day 13 寫到,我把現場看到的一連串操作整理成工作階段,再把這些階段接成流程圖。

有了這張圖之後,我開始做下一件事:

如果這整條工作真的要進到系統裡,系統到底需要知道什麼?

這一次,我很明顯感覺到,第一個產品裡慢慢養成的思考方式已經跟著我過來了。

以前很多工程問題,是功能先做下去之後才慢慢出現。

這一次,還沒真正開始實作,我已經可以先沿著人的工作流程,整理出系統需要管理哪些事情。

先把整件工作看成一個案件怎麼往下走

準備提案時,我開始用「案件生命週期」的角度重新看前面的流程圖。

因為那些工作階段串起來,就是一個案件從進來、被處理,到最後完成的整個過程。

對現場的人來說,真正重要的不是:

「系統剛剛執行了哪一個動作?」

而是:

這個案件現在走到哪裡?

所以到了系統裡,原本整理出的工作階段,也開始變成系統需要掌握的案件狀態。

一個案件還在等待資料,和資料已經確認完成、可以進入下一段工作,就是不同的狀況。

系統需要知道這些差別,才有辦法正確呈現目前進度,也才知道哪些事情現在可以繼續。

但不是每做一個動作,案件就要換一個狀態

現場裡的一個工作階段,通常不只有一個動作。

同一段工作裡,可能要查資料、確認內容、整理文件、留下紀錄。

這些事情都做完之後,案件才真正進入下一個階段。

所以我開始分開看兩件事:

案件現在在哪一個工作階段。

以及:

這個階段裡還有哪些事情需要完成。

這個差別對我來說很重要。

如果每一個小動作都變成一個狀態,整套流程會變得很碎。

但如果系統只知道一個很大的階段名稱,又完全不知道這個階段裡還需要完成什麼,也很難真的支援工作。

所以我會先用工作階段掌握案件目前的位置,再往下看,這一段需要完成哪些事情,做到什麼程度才可以往前。

流程一清楚,系統需求也開始跟著出現

當工作流程被整理成這樣之後,原本很抽象的「做一套案件進度管理工具」,開始變成比較具體的問題。

某個階段需要確認資料。

那系統就需要把使用者現在需要看的資訊整理出來。

某個階段需要留下處理結果。

那系統就要能保存這些結果。

有些條件完成之後,案件才能進到下一步。

那系統就要知道什麼情況下可以往前推進。

有些工作還沒完成。

那系統就不能只因為有人按了一個按鈕,就把案件當成已經進入下一個階段。

原本流程圖上只是「一格接一格」。

開始從系統角度看之後,每一格都會繼續長出:

要知道哪些資料?

要留下什麼?

什麼條件成立才可以繼續?

案件現在應該被理解成什麼狀態?

我開始比較早看見系統需要做什麼

第一個產品時,我常常是先想到功能,再一路往下做。

做到越來越複雜之後,才發現系統還需要記住流程進度、處理不同條件和例外。

到了這個委託專案,我的起點已經不太一樣。

我可以先從整條人的工作流程,看見系統至少需要掌握:

案件現在在哪裡。

這個階段還有哪些事情沒完成。

哪些資訊需要被留下來。

什麼情況下才可以繼續往下走。

這還不是完整的系統設計。

但原本很模糊的需求,已經開始從工作流程裡長出比較具體的系統責任。

我開始能從「人怎麼工作」,比較快看見「系統需要知道什麼、管理什麼」。

而再往下一步,問題就不只是:

系統知道案件在哪裡了嗎?

還包括:

真正每天處理很多案件的人,打開產品之後,要怎麼知道自己現在該做什麼?