先學Java後再學Android嗎?
接觸許多軟體公司與各類開發人員的過程中,有很多人問,需要先學Java後再學Android嗎?Java是一個程式語言,Android是以Java語言為基礎的軟體開發平台,我的回答是,如果要能寫出個初級Android APP的話,可以不用那麼完整的Java語言能力,很快就能寫出個有點樣子的APP。
但如果遇到功能比較豐富,較複雜的要求符合業主的需求時,此時未具有完整Java知識去開發這個Android app時,風險度就會增高不少,因為使用者所提出的需求常是客製化的功能,有些還需要先設計出custom view元件後,好讓整個專案都能重複使用它。這時候若仍以找範例、修改來讓專案符合需求,常會導致專案程式碼日後擴充、維護困難的問題,這是軟體開發中最頭痛的問題,也是一個企業主最不樂見的結果。
能夠同步進行嗎?
一個具備其他程式經驗與能力的開發人,能直接在Android學習過程中,一面補充Java知識嗎?不容易,但並不是不可能的任務,這幾年來,許多參與我Android課程的學員,原本是開發.NET、C、PHP等,也能得到不錯的成果,但重點在學習的過程中能否分配應具備的知識與方法。
在許多Android的知識學習中,都需要先具有相關的Java知識後,再去學習Android知識會讓學習成果更完備。例如學AlertDialog對話框之前,先瞭解Java的this關鍵字、先懂Builder設計模式、Interface介面與匿名類別後,再認識Android的android.app.AlertDialog與AlertDialog.Builder類別後,就能建立完整的知識與能力。在未來可能要學習具輸入的對話框,或是需要自己設計客製化對話框類別時,再加點final關鍵字、方法覆寫的學習後,就更能接近企業所需要的開發能力標準了。
由坊間的書籍是不容易得到這樣的效果的,光是要介紹AlertDialog、一堆方法的規格、用法的程式碼,一個章的篇幅都不夠了,很難再用一兩章去做前導介紹相關的Java知識。而且純文章、圖例的學習非常耗費時間,效果非常有限,當然,如果進公司後,有前輩帶領,由專案中學習,是不錯的方式,但原本的舊專案也不一定是好的設計,前輩也不一定有時間或方法好好帶領,通常叫你看著一堆程式碼自我學習,不懂的,最後還是不懂。
除錯能力
除錯能力是一翻兩瞪眼與開發實力最簡單的檢驗方法,對於程式邏輯bug,求的是對Android各元件間的溝通、關係與觀念的清楚,如無法全面掌握這些要素與知識,光是找問題都是難題了,更不用說對bug提出合適的解決方法。
而最常遇到的執行錯誤(Runtime Exception, app crash等),更是基礎能力的確認與展現,對於有名的萬年NullPointerException(NPE)的分析與確認,都需要Java中對物件、類別、static、產生(initialization)等的知識組成後的能力。如看到NPE後不能會心一笑,那應該檢視對整個Java與Android知識所缺乏的部份,找到它們後補足。
有好方法嗎?
打好穩固基礎吧,這是唯一最重要的事,只有如此,才能讓未來開發之路更順利。擁有決心後,難的反而是找到對的學習內容與方法了,我每年會安排一段時間讓開課單位安排一個Android基礎培養課程,目的是希望能用業界需求為目的,培養出具有未來發展性的開發人員。
這也是近年來問自己?如何在現今如此繁雜工作中,以更有效率的學習方式,取得企業重視與有價值的能力。從去年開辦的AAD認證課程,歸納學習要件、設計學習路徑並以難度合適的實例,能夠在短期間透過密集學習得到最高效益,並以實際考照驗證能力與成效。雖然考題多元,經過課程學習後的學員,也證明他們取得了國際級的開發能力標準。