l

2016年8月24日 星期三

地圖和景點介紹

August 21 11:36~12:33

擷取

 

小處著手

年輕的時候用VB開發了不少系統,在學習VB之前最熟的語言是Pascal和C/C++,和VB差異有點大。剛接觸VB從熟悉語法和IDE開始,學習它的開發思維。後來語法熟了,也把VB使用手冊讀過一遍,但覺得做起案子還是卡卡的。後來發現Windows API知道的不夠多,雖然VB有大量內建與第三方廠商提供的元件可以使用,但很多「特殊功能」還是需要直接呼叫Windows API才可以做到。

VB程式越寫越多,發現系統越來越難維護與測試。大部分的程式碼都是直接寫在UI元件上頭,只能透過UI元件用手動的方式測試。後來讀了GoF《Design Patterns》,學到更多的物件導向設計技巧,運用到VB專案沒想到居然可以讓系統開發、測試與維護工作簡化不少。

後來公司工程師人數變多,開始遇到團隊合作的問題。當時學了RUP(Rational Unified Process),提供開發流程參考模型,讓團隊成員可以彼此分工合作。

以上所說,是一種「由下而上」的學習模式,從程式語言開始,一層、一層往上拓展。「往上拓展」這一點很重要,因為很多時候問題解決不了不是因為你對程式語言不夠熟悉,而是你需要「更大的概念」,例如資料結構演算法,或是設計模式、架構模式,亦或是開發流程這個層次的知識。如果一直困在同一個層次上,試圖藉由更加熟悉這個層次的技能而解決問題,很可能事倍功半,甚至徒勞無功。

***

大處著眼

「軟體工程」課程,就好像「計算機概論」一樣,包山包海,什麼都講但又好像什麼都沒講。有些人覺得上這種課只是聽老師在「打嘴砲」,又不能解決實際的問題。但這種課程的目的應該是提供學習者一個「整體的感覺」,當你實際動手做專案遭遇問題的時候,知道如何往上拓展,避免陷在同一層爬不出來的困境。

就好像到一個陌生城市旅遊,地圖提供我們地理位置大方向,但地圖不會有每一個景點的詳細介紹。要知道景點的歷史文化和景觀特色,必須要細看個別景點的介紹。拿著地圖抱怨沒有詳細景點介紹,或是拿著各別景點介紹抱怨沒有大方向的地理資訊,只能怪自己搞錯重點。

***

先大後小,迭代學習

學習應該是迭代過程,先從大處著眼知道大致的地形地物以及相對位置,然後透過小處著手將這些大概念的形像具體化。見林識樹,識樹見林,應該可以少走一些冤枉路。

***

友藏內心獨白:欲窮千里目,更上一層樓。

沒有留言:

張貼留言