2011年1月19日

系統路歹行

近來被手上的案子搞得團團轉,讓我也心生許多感慨,想要趁空檔整理一下這些日子以來的心得,只是這個空檔一等就是大半年呀…

我們現在所稱的系統,多指在電腦上運行的系統,其實只要有人、有資料、有流程,就足以稱為一個系統,這個在大學的中階課程「系統分析」中就有明白的訓示,那堆曾經折磨眾多資訊科系學生到三更半夜的圖表,不都是在描述人、資料、流程這三件事的關係嗎?

現在俗稱的「導系統」,嚴格說起來,不過就是把現有的工作改到電腦(或者再加上網路)上作業,或是把本來就在電腦上的作業(通常只是Word或Excel等泛用工具),變得更簡單更聰明更自動。

對於這樣的需求,我們先以「電腦化」來稱呼吧。

在電動化之前,使用者(或稱客戶)應該要先把自己的需求定義清楚,當然需求有千千百百款,我暫且簡單分成三類吧:

一、沒有什麼複雜的工作流程或作業習慣的問題,只是想要找個軟體來使用,讓電腦幫忙輸出漂漂亮亮的報表,讓長官看了心情好-請找坊間通用套裝軟體。

二、對現有的工作流程很滿意也不想更動,只是想要把工作移到電腦上,讓電腦幫忙輸出漂漂亮亮的報表,讓長官看了心情好-請找程式設計師(可找學生比較便宜)。

三、現有流程的問題太多,需要徹底分析檢討並且能接受任何作業習慣改變的衝擊,以期達到作業自動化及增進工作效率的目標-請找SI公司。

因為自己一直以SI工作者自居(雖然只是被當作程式工看待),所以交到我手上的案子,都會從根本去分析需求、資料、流程之類的,但是每當提出一個看似很偉大的架構時,往往就會被打槍了,因為大部分需求其實是屬於第二類的。

他們習慣於現有的流程及工具,不想做任何改變,電腦化只是上級的要求,所以他們希望有一套完全以他們現在的作業流程來打造的電腦軟體,最好連報表都跟他們自己用EXCEL做的長得一模一樣。

恕我直說,如果只是要達到這樣的目標,去找個會寫程式的學生來寫寫就好了,而且如果本來的流程完美到無法挑剔,那麼這樣做沒什麼不好。

其實所謂的「導系統」,最重要的部分應該是「解決問題」,去找出現行作業上的問題,可能是前人偷懶而生的積習,或是為因應工具及環境限制,而衍生出的作業方式;然後設計新的流程來解決這個問題,也可以應用新的工具及方法(像是電腦與網路)。

因為電腦化可以解決太多往日的舊問題,所以很多人會把「導系統」跟「電腦化」畫上等號也是有原因的吧

舉個最簡單的例子,做簡單的收入支出帳時,用筆寫在紙本帳冊上,難免會字跡遼草、辨識不易、保存困難、調閱不易,數字的加加減減也容易算錯,改成用Lotus 123來製作帳本,一次解決以上各種問題,雖然也產生了新問題-要去哪裡找可以開啟這些檔案的環境。

系統分析課教我們的第一步就是要列出問題啊,那些煩死人的分析工具是後面的事,如果真的沒有問題,那延用就好了,不要硬是為了導系統而導,浪費錢又煩死人,更何況電腦化真的沒有比較好(心虛)。

只是遺憾的是,許多公司機關團體,想要導系統,是因為上面長官的指示,或是公司政策,但是很多時候上面的決定只是為了趕流行,什麼流程改善或是增進績效之類的似乎不在他們的考量,承辦人也多是接命令做事,對於系統要達到什麼目標也不太清楚。

於是常會聽到這樣的需求:「這裡可不可以改成這樣做(比照過去做法)」「你這樣設計我們根本就沒辦法用啊」之類的。

我在這個業界的經歷算很嫩很嫩,尤其承接的系統幾乎是在完全沒慨念的基礎下從頭學起的,當然不敢拍胸脯保證說我做的系統有多完美,所以一定有可以改進的地方。

只是,在接到一個需求時,我還是會先分析這樣做到底對不對,有時候只為了符合現在的作業習慣,不想做改變,就硬要用明顯有問題的作業流程,這可是會讓寫系統的人生氣的啊!(好啦,只有我會生氣)

就我自己而言,我的盲點在於沒有實際的操作經驗,而使用者的盲點在於,流於習慣而忽視了存在的問題,所以導系統為什麼要兩邊人馬出面橋個半天,就是這個原因啦。

不過相較於客戶不想改變的習慣,SI這一端的也不見得有多好啦,可能是因為看到太多客戶一句話,工程師就埋頭猛改,都忘了先分析這個變更合不合理了,常常改完這個問題又會冒出另一個問題,永遠都在需求變更的地獄裡痛苦輪迴呀!

至於這個輪迴的起點,有一種是因為「客戶永遠是對的」這樣的信仰,還有另一種常見的是「客戶趕著要這個功能」,在這個輪迴中或許有些有著祟高理想的人,會堅持要先完整分析需求再來動手做的王道,只是個人的堅持往往敵不過老闆的堅持…(很高興現在的公司讓我有很多堅持的空間,所以這一段不是在講我們公司啦)

而不管導入什麼系統,人都佔了很重要的因素,只要是由人來操作,操作的人就必需接受相當程度的訓練。在視窗環境剛興起的那幾年,看過一部戲劇,一個不懂電腦的媽媽熱心地幫忙整理電腦桌面,把看起來很醜的圖示都丟到垃圾筒裡…

有時候我會聽到這樣的意見:「你這樣設計我們的使用者一定會做錯。」這時候我都很想回嘴說:「做錯關我什麼事啊。」好佳在我都只是想想,沒有真的回話,否則現在也不可能安然地坐著這裡打文章了。

一個電腦系統,在面對使用者有可能出錯的狀況,可以設計各式各樣的防呆,像是在要填入數字的欄位不允許打入非數字的字元,但是再怎麼防也沒辦法百分之百防止出錯,本來應該填入100,000你硬要給我打入10,000,少打一個0我是能拿你怎麼辦,電腦沒有聰明到可以發現這種錯誤啊,一直拿一定會有人做錯的理由要我更改設計,這簡直是強人所難啊。

就系統面可以做到的,或許就是增加一些在資料出錯時,可以用來補救的措施,並且紀錄出錯的原因,更可以做些簡單的統計,看看哪個人的錯誤率異常地高,但根本上來說,應該要從嚴格的人員訓練做起,一天到晚出錯的人考慮懲處或調離現職,如果是因為制度或流程設計不良,而造成錯誤率居高不下,就應該檢討並修改現行的作法。總之這類的問題,應該是從管理面來改進,要求系統來處理這個問題,實在是捨本逐末。

以上是這幾個月的小小心得,或許對於在這個領域中努力十幾年的前輩而言,根本就是常遇到的小狀況,但每次碰到這些問題,都讓我有滿腹的情緒沒地方發洩,又不能在會議上跟客戶對嗆(雖然真的曾經失控過),只好到自己的小天地來抒發一下,只求上帝保佑我的客戶們不要無聊閒逛看到這篇,就算看到了也不要對號入座放在心上了。

1 意見:

Jamie :

我的想法是
反正只要不要讓我忙到翻
就算客戶要垃圾
我就生垃圾出來並打包得漂漂亮亮給他
反正東西不是我在用
他高興就好..