2000/09/03

系統架構的構思過程
分類:創新、系統


創意的構思過程可以分為感覺構思→邏輯構思→多面構思→靈感構思 這四個過程,而我們往往在一個系統的構思階段便想了很久,做不出來,只要善用這些構思的方法,你很快可以把一個系統的架構畫出來,以便快速的完成一個雛形。

一般的軟體工程師往往會不滿現狀,想設計出一套完美的系統,我們在之前討論用最笨的方法來思考的時候,就是避免大家想的太多非必要性的功能,造成後續維護與發展的困擾,試著想想看當我們早上起床刷牙洗臉吃早餐一直到搭車上班,我們需要用很多的腦力去構思嗎?這就是反射動作,我們在做一項思考的時候,往往就是用感覺構思就已經完成了大部分的事情,可以說是反射動作的思考。

當我們找不到一項東西,譬如說是一本書好了,便要冷靜的回想,什麼時候用過這本書,書本可能放置的位置,從主題意義來想,用各方面的判斷與分析,是不是上大號的時候放在廁所,或是放在公司放在朋友家裡忘記拿回來了,這個構思的階段就是邏輯的構思。

如果找不到我們通常就開始全面的搜索,地毯式的找尋,把全家每一個地方翻過來找,我們在創意會議的時候也常常如此,把所有現有品牌或是競爭對手,把字典的字全部翻出來,一項一項檢討比較,這個就是多面的構思。

至於靈感的構思方法,是我們比較少用的,用不同的角度,在一個突發的狀況下想出一個靈感,好像寫文章文思泉湧,創意猛然向你撲來,這個就是靈感的構思,一般寫程式的時候也就是為什麼有時候去上上廁所休息一下,就會把Bug臭蟲抓出來的原因。

而據我個人觀察發現一般工程師在邏輯構思的階段就往往無法決定是要往哪個方向,無法決定用哪個方法來實作,這個當然是要問問別人的意見,如果無法很快的做決策的時候,一般來講都是先做了再說,當然不要做完了再來測試,要做到一半的時候就要想辦法測試,來看看自己當初想的方向有沒有錯誤。

再來工程師常常犯的毛病就是想的太多,設計一些很少會用到的功能,雖然是多面的思考,但是很少會用的上的,這一點需要做一些測試,來測試我們的程式碼,這一點也是我們目前為止很少做的品質管理工作,來評定我們的程式設計師。

當然撰寫新系統需要一些經驗,看看前人的程式碼是最快的學習方式,用上述構思的方法或許可以讓您更快的了解你的思考架構。

延伸閱讀:【創新】先把自己變笨,歸零的思考

2000/08/27

軟體的技術累積性
分類:系統


世界上所有的品牌產品一定有累積性的用戶,無論是日常的生活用品或者是工業性的產品,而這一點在軟體系統上更有說不出的使用習慣,無論是網頁的編排或者是產品的功能表設計,很少有第一版與第二版的軟體系統會變成完全不同的。

我們在系統創新的過程經常會忽略的就是舊有使用者的操作習慣或者是資料的相容性,一套產品除了不斷地創新改版之外,還要考慮之前的操作介面,還要在舊有的習慣下建立累積性,增加競爭者進入的難度,但是在增加功能與使用操作的安排上面,絕對要考慮的就是簡單性與合理性。

我們經常做的事情就是為了創新而創新,為了與別人有差異而創造出不需要的需求,陷入盲目的產品競爭,要跳脫這一類發展的盲點除了上一次所提的歸零的思考之外,就是累積自己的優點,所以我們在軟體系統的開發上面,除了要了解舊有的程式碼之外,還要知道哪些程式碼是我們的競爭優勢,是必須要被模組化重用的,這樣在未來的發展上我們才可以累積我們的優勢,而一般的程式設計師剛接到一個新的產品或是專案的時候,剛開始非常的痛苦,一個大系統不知道從何下手,要增加心的功能加了老半天,錯誤也一大堆,這時候應該適時的跳出來了解一下產品的特色與競爭優勢,進而分析哪些是我們累積的核心程式。

了解了這些舊有的習慣以後,要新增一個功能的時候第二個要考慮的簡單性與合理性,操作過與複雜的子功能,我們寧願把他放棄,因為不會有太多人會去使用它,除非是非常專業的需求,而這時候應該想到的是簡化操作與一些預設值的設立,幫使用者想好操作的參數,以前操作軟體系統的時候很害怕系統問我一大堆數字,結果光填完這些數字天就亮了,還不知道填的對不對。

每一個軟體系統累積技術的方式不一樣,如果是一般的網頁,除了連結的網頁樹狀結構不要亂掉之外,編排的方式也非常的重要,不要新增了一個連結結果一按了之後就回不來了﹔另外使用者的資料庫的維護也非常重要,不要一直讓客戶重複填寫註冊的資料......如果是一般的Windows程式,新增加的功能表的分類要與原來的操作習慣相仿,不要以前用滑鼠的功能,現在只能用鍵盤的鍵來操作之類的......

產品的累積性非常重要,如果您是做專案,要累積專案經驗的方式不一定適用,所以一個公司商業運作的模式一開始就一定要決定是要走產品化路線,或者是專案性路線,雖然其中有一些模糊的中間路線,確認您的目標才不會白做工。

2000/08/12

先把自己變笨,歸零的思考
分類:創新


所有的人類一定會有先入為主的觀念,如果要想出好的點子,好的系統架構,好的可行方案,除了團隊集思廣義之外,就是簡單歸零的思考,您會得到一個很簡單的結論,會設計出可用的系統,這就是先把自己變笨。

一般人經常犯的兩個毛病就是眼高手低與先入為主,總覺得一個市場已經有人先進去了,就看不到未來而想要避開他,或者是做一件事情如果先前已經有做過的經驗,就不會想回頭去做。

舉例來說,一個軟體系統的開發,如果一個資深的軟體工程師開發過了,他可能很少有機會去繼續維護或是加強的機會,因為他覺得他已經做過了而不會想花心思在上面,大部分的人會繼續追求更新的技術,更快速的開發工具,這一點屢試不爽,如果一段程式碼被同一個人看過三次以後,他就一定不會是這段程式碼的主人了!

也因為如此,程式設計的世界品質的掌握需要大量的人力,我們會利用一些檢查表格,一些流程來保證他的品質,而這一點剛好跟速度是剛剛好相反的,而這些流程剛剛好都讓大家覺得自己很笨,為什麼要做這一堆無聊的事情呢?除了與團隊溝通的功能之外,也是一個很好的歸零的思考!

設計一套系統的時候會想的很多,想要給操作人員使用者非常簡便的操作,但是只要利用很簡單的邏輯,拋開以前的包袱,有時候一套一天寫好的簡單工具程式,也可以讓使用者感覺到非常的貼心的。

當我們回頭不斷地review您以前的程式與當時的想法,試著把缺點一項一項的列出來,挑戰自己的主觀,有時候真的很難,放的下是唯一的解法,變笨,試試看!