精華區beta CareerPlan 關於我們 聯絡資訊
其實不管是自己看書學,或是去上課聽人教, 都是如何使用學習材料的主題。 沒有經驗的重點就是在開始的那幾步如何走下去, 即為怎麼樣才能順利入門的問題。 以版友分享的修課經驗來說, 上滿一學期的課,只是課程設計的需要。 即使有些主題不是在實務上需要使用的, 像一些歷史或相關的八卦。 但課程設計的目標是有系統的、全面性的介紹一群知識。 撇開師資的教學方式與特色, 若跟隨著課程進度學習, 那只是充當教導者職業生涯的道具罷了。 他扮演老師,你扮演學生。 他上課有鐘點,沒有曠職。 你上課有吸收,沒曠課。 他有出作業,能當作期末製作成績的材料。 你有教作業,至少能拿到學分。 問題是這樣的進行方式, 以學習知識的角度來說是極為緩慢且沒有效率的過程。 小學、國中、高中,多數的課都是這麼上的。 許多人也習慣了這樣, 以為只要上課去做著聽, 稍為弄懂老師說的重點就算得到需要的知識了。 若是要學習技術可就不行這般任制式的課程計劃擺佈。 情況得反過來, 教師與課程需要是你的道具。 有幾點必需掌握: 1. 入門該學些什麼。 2. 不掌握就無法進行下去的重要觀念 3. 有哪些實務見常的議題 入門其實是學習野外求生的技能:該如何建立好能夠開發出 hello world 的環境。 要生存下去,至少要準備哪些工具,要有識別環境是否安全的能力。 0. 最好要會 Java 跟安裝 JDK 1. 安裝開發工具 IDE or Ant tool 2. 建立虛擬裝置或使用手機或平板 (Windows 安裝 Driver/Linux udev rules) 3. 建立專案。專案的一些名稱規範 (Ex. package name 至少得有二節) 4. 熟悉自動產生的專案樣本,至少會有個 Activity 用來顯示 Hello World 5. 執行看看 hello world 顯示出來的樣子。 入門的第一個門檻就是這些: 確認自己是否有足夠的先備知識,並自有能力自進建構出開發環境。 無謂是利用書本,或透過老師教。你得充份掌握例外的情形。 自己或同學常會示範出不可思議的錯誤, 若能在[砍掉重練]之外,找出主因,那是對於錯誤排除經驗提昇的好機會。 主要是您得明白,在做每個動作前,必要的滿足條件是什麼。 準備好這些野外求生基本的器具後,課程的焦點大至會轉移到[概念]的建立。 但時間有時拖得太久,而遺忘了主軸是什麼。 學習者可以回饋課本或授課大綱,抓出一些重點。 以最常用的 Activity 來說,它的 lifecycle 理解由其重要: http://developer.android.com/reference/android/app/Activity.html 官方文件寫得過於詳細,可能一開始無法好好理解。 但許多書上有作者自行簡化版的,雖然有些不忠於原味,但卻容易吸收理解。 就像小學還未有小數點的知識前,圓週率是 3,這麼一回事。 當然還有許多重要的概念,另外一個例子是 UI Thread 與非 UI Thread 的合作方式。 這也是常被遺忘得區辨的事情。這也是為什麼需要有 AsyncTask 這些工具的理由。 您得走得比課程快,先試著理解。而在授課的那天,在自己腦中檢視教師說的是否正確。 因此,學習進度不比授課內容快,就少一次加深概念的機會。 甚至來不及聽懂就當作不重要。 而最後寫的實務議題,其實不是建議在最後才做。至少能跟概念建立同時進行。 這樣做出與重要概念相悖的實作時,衝擊來會巨大,印象就深刻了。 『我曾經犯下這樣的錯誤。。。』 直接寫點實用的東西,是老梗也無所謂。 像弄個正妹報時 AppWidget、或是寫個 twitter/plurk app。 實務的議題是驗證你學習概念是否正確的時候, 有時也是練習程式組態設定跟 debugger tool 使用是否適當的時刻。 從未寫過網路程式的人,怎麼會記得要開網路使用權限呢? 在課程結束前,只要能保持進度領先。 就能將授課教師當作解題的家教使用, 將同學犯錯的經驗當作自己的教訓。 而使用書本自學者,只要能寫出像樣的問題, 網路上永遠有發問的地方。 ptt 就有 java 版,android 版。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.52.13
jimlexus: 06/18 17:06
darptt:YA! 中肯! 06/19 01:26
tomap41017:這篇好棒!!學起來 06/19 01:32