在開始寫實戰系列之前,先說明一下主要用到的參考書籍:
- 如何用物件導向實作複雜的業務需求
- C++ API 設計
- 自行編寫的講義
一、現況
我們常常使用別人設計好的 API 來使用,這符合現代軟體設計的概念,利用軟體元件拼湊組合出新的功能,不做重覆的事。
在實務上,為了求快,工程師們常知其然不知所以然,反正呼叫 API 能動或能給出想要的結果就好。但這樣的想法到底是讓軟體設計變的更輕鬆,還是入門容易熟練難呢?
我游走教育的第一線時,其實也碰到類似的問題,當學校在教理論課程時,實作部份是直接呼叫別人已經設計好的函式庫,這中間會有個很大的學用落差,那就是學這麼多幹嘛?會呼叫函式庫就好。
二、隱憂
但真的這樣就夠了嗎?中間跳過了甚麼?那就是這個軟體元件為何要這樣設計,它隱含的分析及設計流程全部跳過,如果一昧地只會用別人設計好的東西,那當遇到的非典型情況時,自己又該怎麼處理呢?等待別人出手救援?
倒也不是說甚麼東西都要自己重新設計,這樣太沒效率也不符合現代軟體設計原則,但最起碼還有機會當學生上課或自己下班進修時,能多一點耐心去了解常用到的工具軟體從何而來。
三、動機
當你邊上理論課程,然後自己又有能力設計出基於理論的實用軟體工具,並分享給其他人使用時,豈不是更滿足也更有成就感!
上面講的扯遠了,很像老學究在講的話,事實上以我的話來說,撇開實用性的問題,能自己設計軟體就是爽。
人在兩種情況下會特別開心,一是自己在創造東西、二是自己有在成長進步。
當我在設計軟體,學習新技術時,特別開心,因為同時滿足前面說的兩種情況,所以就是爽。
話說回來,如果又爽又能夠幫到別人的忙,然後自己也能有正向回饋,那就是爽上加爽,這種事為何不做?
四、主動學習
所以呢? 開這個實戰系列,或許短期看起來是有點浪費自己的時間,然後壓力大又累,但長遠來看絕對是利大於弊。
如果有聽過費曼學習法的人,一定對我現在的所做所為不陌生,要怎麼自主學習,設定目標並想辦法提升自己的能力到可以教人為止。
但自主學習難就難在怎麼幫自己設定目標,跟工作或唸書不同,不管是工作或唸書都是在別人設定的框架下被動學習,但要主動去學習就得有很強烈的動機,我寫實戰系列就是希望幫自己創造動機,讓我有機會能夠主動學習。
對我來說是如此,希望對在讀這些文章的同學們,也能有一樣的感受。
一起加油!