因為我自己喜歡去書局、看網路的教學,發現很多都是「塞技術和觀念」,缺少「技術與目的的連結性」,所以我就自己的學習經驗,整理出關於「實作UI程式」的五個共同核心。
不管是「網頁」、「視窗程式」、「行動應用」等不同領域,都可以試著從「畫面」、「功能」、「資料與環境」、「參數」、「專案管理項目」五個角度,找到「什麼問題」在「什麼領域」該用「什麼技術或觀念」實現
1.教學者:用範例帶出程式設計流程和技術觀念。
2.學習者:將課堂的範例所學的觀念,套用在往後的程式專案、解題練習上。
以下是我在會後整理之前在Sitcon議程,觀眾提出來的QA問答
很多其實也蠻符合我之前沒有教學經驗的疑惑
這也是我從小到大,從許多的程式教學和書籍上,看到的盲點
站在一個初學者,他最想知道的是,我學會這些可以讓我透過程式解決什麼問題
以「自我介紹」專案為例,你可以做的變化包括:
(1) 衍伸成一個簡易的管理系統,例如員工管理系統、學生管理系統、物料管理系統
(2) 衍伸成一個「以圖認人」的小遊戲
(3) 中英打文章練習程式
(4) 經典小遊戲:猜數字→1A2B→2048→貪吃蛇→俄羅斯方塊→飛機射擊遊戲
以需求的角度,找到你可以往下衍伸的語法。以教學者的角度,丟出適當的衍伸的變化和問題,讓學生了解自己的學習狀況
數學是其中一個用來解決問題的領域,不過對於程式初學的影響不大。
舉例來說,一個數學很好的人,但是他在程式語言的特性、切分問題的分析能力、作業系統的基本熟悉、資料庫、網路等等不熟,在初學程式設計的過程也會遭遇許多的瓶頸和困難。
但是對於有一個程式基礎能力的人,不同的數學能力,在面對演算法的設計和優化問題,就會有明顯的差距。
「平常心」學習程式語言。每個領域有每個領域的門檻,演算法、資料結構、設計模式、資料庫等等,這些硬底子功夫在學習其他的語言、領域都會需要。有了一定的資料結構和演算法的基礎,至少抓到學習的方向後,在上大學之後朝解題外的技術方向持續努力即可。
還記得小嬰兒時期的你,會在意學什麼母語比較好嗎?你比較在意的其實是:「我想讓我父母趕快明白我想表達什麼」
比起在意語言的好壞優劣,一開始建議花多點時間摸索,大多數人都拿語言來寫什麼應用程式,來分析學這個語言能不能滿足你的需求。
例如:
1.你想寫網頁,就可以學Javascript、PHP
2.如果你想寫視窗程式.就可以學C#
3.如果你想寫硬體控制的程式,可以學C
4.如果你想寫資料分析的程式,可以學Python、R語言
5.如果你想寫行動應用的程式,你可以學Android Kotlin、iOS Objective C 或 Swift
這種狀況以我當家教的作法,通常我會選擇讓他過一段時間回去看自己的Code,讓自己意識到Coding Style沒寫好連自己都看不懂
在出考題的時候,我會將作業所有出現過的觀念整合在一起,除非學生本身有底子或基礎,否則依照家教的例子,沒做作業看到考題後半個小時就會開始後悔當初沒有好好做作業。
讓學生學會自己面對沒做作業的後果,是最有效的辦法。
如果學生自己沒興趣學程式,我會希望學生把時間花在自己更擅長、更適合的事情上面。
在沒有教學程式之前,希望一個教學讓學生學會所有的內容
結果發現,時間有限,學生的吸收能力也有限
而且,其實學生真正跨過初學門檻,是從自己開始學會找方向、找方式練習的時候
所以我慢慢地意識到,方向對於初學者的重要性和影響力。
最後,我本身也是一個持續從實務當中磨練和學習的人
內容有不足或疏漏的地方,歡迎前輩們運用和改善,幫助更多的程式學習者。
可惜斷了QQ
文章好豐富的呢!!!
寫到後面工作忙不過來,只好果斷選擇斷賽
不過發現當初分享這個議程和寫完這個系列後
還是要讓初入程式領域的人經歷過才會體會