規劃、規劃再規劃-如何避免過度設計的系統?

馬在飛科技
Oct 26, 2020

大家好,我是馬在飛的馬。

軟體開發總是希望解決某項問題或是創造新的體驗,也就是說,每次新的開發專案都是一種新的嘗試、新的冒險,我們無法百分之百的去預料開發出來的產品會是什麼樣子,或是真的能達到想要的結果。

為了避免發生這種情況,人們通常會選擇「預先做好詳盡的規劃」,這是很合理的想法,預先設想所有可能的使用情境、例外狀況,都先把這些規劃進系統中,但這樣就解決了問題了嗎?嗯,其實最大的變數永遠在「人」身上。真實的使用情境往往超出預想,再厲害的專案經理或系統規劃師,也無法設想到全部的使用情境,他們也無法完全了解客戶領域的Domain know how,若試圖只透過「更詳盡的規劃」來解決這個問題,有時候反而會陷入過於鑽牛角尖情緒,花了大量的時間去規劃系統、涵蓋各種例外狀況,卻反而讓邏輯衝突,並且系統過於龐大、錯綜複雜,真正上線使用後,造成使用者的困惑,也讓後續的維護的成本提高。

疊床架屋的系統
過度設計的系統,發生問題或要新增功能時,為了要能包含下原本的邏輯,可能無法用正規的方式處理,卻因此讓系統更加複雜,疊床架屋的架構因此誕生

案例一

A要開發一個線上教學系統,透過線上課程,讓分散在世界各地的學員都可以上到專業的課程,學員可以觀看直播課程,直播結束後,課程也會繼續在平台上供學員觀看。A針對直播課程,設置了一些限制:如果遲到15分鐘,或是在上課中離開直播超過20分鐘,則不可繼續觀看直播。系統上線後,A發現大牌的專業教師常常難以控管,教師遲到超過表定時間才開始直播,導致有準時進入直播間的學員,因為看到課程尚未開始而跳出,卻無法再次進入,或是老師都還未開始上課,學員就被判定遲到了,因為這個問題A收到大量客訴,讓A困擾不已。

案例二

B花了大量的資金,高薪聘請各路高手組成開發團隊,開發一個企業用的產品,各路高手為了證明自己的價值,使出渾身解術、卯足全力規劃設計產品,使用各種新穎的技術或是複雜的架構,認為這樣才能突顯自己的專業價值。B為了希望能打造出「完美」的產品,持續投注大量的開發資金在產品上,直到三年後才將產品推到市場上,但此時團隊發現,他們只專注於開發,並未去了解使用者的需求,許多競業產品具有的功能並未被規劃在他們的產品上,而產品也因為過度複雜的架構,讓產品在實際被使用時,發生許多效能問題 ; 當客戶想要開發客製化功能時,因為複雜的架構讓新增功能的成本大大的提升。當初的過度設計,也讓B難以用較低的成本重組維護團隊。

看了以上案例,你是否發現,若只專注於規劃反而造成對產品的傷害。但難道說為了避免這個問題,我們就不做規劃了嗎?並不是的,而是在規劃與執行的過程中,我們可以用一些不一樣的心法去進行,接下來就讓我來和你分享在專案規劃與管理上,我們怎麼去避免不必要的浪費,產出精準但有效的系統。

這個功能的目標是什麼?

作為專案經理,常常會收到客戶要求要有某些功能,如果這個功能並不是當前系統必須的,通常我會多詢問「您希望這個功能幫您解決什麼問題/達到什麼效果?」常常客戶提出的功能,並不能有效地達成他的目標,要能判斷什麼是客戶真正的需求,而不是他以為的解決方案,才能避免開發出不必要的功能。

以案例一為例,其實A只是希望學員可以嚴肅的看待上課這件事,但若採用遠端線上課程,就是希望能突破時間與空間的限制,讓更多學員能上到優質的課程,所以反而不應在直播課程時,施加太多限制造成學員上課的困擾。若希望學員能嚴肅看到課程,有其他更有效的方法,比如透過考試去鑑別學習效果、要求學生要有參與課程的活動才能進入下一課程等,來加深學員對課程的參與與重視。

一個專業的專案管理者,了解客戶想要/需要什麼,遠比做出客戶「認為」自己需要的功能更重要。

善用「開發-測試-認知」反饋流程

前幾篇文章曾提到,馬在飛我們通常建議客戶將專案拆解成多個小階段,每個階段最好1–2個月即可完成,為的就是避免對於系統設計過於鑽牛角尖,再不知道實際使用的情況下,用想像力去設計。當你有一個新穎的想法,你認為這個想法可以幫你賺大錢,開發團隊評估後告訴你大約需要1年的時間去實現,所以現在你只需要湊夠足夠的開發費用,然後等1年後就可以過上爽爽數錢的日子了嗎?案例二就是一個血淋淋的反證。

當你有一個新穎的想法(假設)時,你的當務之急,應該是去驗證這個假設是否為真,透過小階段的產出,優先開發核心功能,讓你可以先去測試驗證想法的可行性,並依據結果去調整自己的認知,並定義下一階段要優先執行的項目,就算發現原本的假設並不可行,你損失的也只是1–2個月的成本,而不是1年後得到一個失敗的產品。

佐以流程改善

這一項有時候是專案能否成功最重要的因素之一。說起來,軟體系統再如何的複雜,都不如「人」的難預料性,如果期待系統幫你解決掉所有的問題,是不可能的,有時候人也必須做出流程的改變,才能與系統相輔相成,達到最大的效用。

這種特性在企業導入數位化時特別明顯,企業若不願意在既有流程上作出調整,只要求修改系統,第一,這個系統可能永遠難滿足所有人的工作習慣與需求,第二,在不停的修改疊加的過程中,系統會變得越來愈沈重、複雜,效能受到影響,維護修改的成本也越來越高。歷史告訴我們「唯一不變的事情就是變」,人一直在進步,生活習慣、思想的翻新每天都在發生,所以不要害怕去改變,讓新系統的導入成為改變進步的助力而非阻力。

軟體是為「人」服務
軟體再怎麼複雜,其複雜度與多樣性也超不過「人」,回歸以人為本,才能讓軟體成為有效的輔助

結尾

沒有一個產品可以一步登天,成功的專案是要在預算-時間-功能範疇達到一個三角平衡,如果只專注於規劃預想的功能,反而可能會忽略其他更重要的面向,產出沈重、難用、使用者體驗差而且難維護的產品。如果你有相關經驗可以分享,歡迎留言並分享我們的文章,我們也很希望和更多人討論軟體專案開發和管理的經驗、想法!讓我們一起為了更好的未來努力!

若你有軟體開發或專案管理的需求,請點擊此並留下你的需求,我們會盡快與你聯繫

前往馬在飛科技官網

--

--

馬在飛科技

不要浪費錢買 Output(產出),你要的是 Outcom(結果)! 客製軟體要花不少錢,但你知道你買的是什麼嗎? 你以為就是 APP/網站?其實不然,你真正需要的是達成目標,目標可能是:增加收入/提高回客率/降低成本...等等,APP/網站只工具,目標才是你真正花錢買的東西。立即洽詢馬在飛科技,找到產品成功的秘訣。