2015年1月31日 星期六

能力 v.s. 熱情:寫程式要有滿腔熱血,但是我們要怎麼把程式學好? Ability v.s. Passion: Being enthusiastic is the essence in programming, while learning skill counts.

最近在學ios objective c開發,突然有些感觸。自己學寫程式兩三年了,早就知道程式是我這輩子最想做的事情。但是有時候熱情並不會讓自己突然變成程式高手,也不會一夕之間變成比爾蓋茲。你可能聽過身邊的人說他覺得寫程式很有趣,但是到後來能變成程式高手的又有幾個呢?他們會持續做這份工作嗎?

對於非英語系國家的人來說,在英文環境下寫程式同時也變成一種障礙。

你看出來了嗎?有時候固有滿腔熱血很重要,但是一股腦兒地往前衝只會讓自己跌個狗吃屎。

我之前寫程式就是一直往前衝,我看到什麼文章就看,別人推薦的也看。雖然說多多益善,但是卻沒有深刻理解,就像過往雲煙一下子消散而去。我一直以為多看、多寫、多想就可把程式學好,但是顯然地我想得不夠深。而且我看來,學習能力也是很重要的一環,孔子說:「學而不思則殆。」真有他幾分道理。好比說學習函數我就會注意:

  1. What(追本溯源):函數的作用是什麼?語法是什麼?為什麼要有這個函數?設計理念是?如果有類似函數,他可帶來哪些效益?如果不使用它我還有哪些函數可用?
  2. How(運籌帷幄):這函數要怎麼用?放在哪個區塊?他有哪些parameters?他和其他元件可以怎麼互動?我怎麼發揮它的最大效益?
  3. When(抓住時機):什麼時候要用這個函數?為什麼有些programmer在這裡要用這個,原因是?
只要想要把這三個東西抓住,我就會一直查很多資料,同時間我也學會了。而這也是為何給同一份程式作業,有些人會腦袋一片空白,有些人很快就知道如何下手。差別很可能就在這裡。

整體來說熱情是幫助自己在遇到障礙時不會退縮,但是寫得好不好就很攸關學習能力和思考能力了。以學習能力來說,一定要不斷地問自己為什麼,讓你的思考得到極大化。

而在學習一個新語言時,因為程式語言的基礎理念大同小異,有先學過c其實就很夠用。使用高中的讀書技巧也很有用:
  1. 掌握程式整體脈絡、語法特色、函數寫法、資料型態等
  2. 把握來龍去脈:寫程式就像蓋房子,基底(使用何種程式)怎麼建?建材(資料型態、函數)選擇?
  3. 上機實作、多看別人的程式碼,還有Don't reinvent the wheels!
相關自學能力可看這篇:自學能力 - MBAlib

最後著看到這篇文章的人都能變得愈來愈強!