[讀書心得] 程式之路

關於寫程式這檔事,自己起初是為了個不服輸,寫到現在似乎是興趣?!
人家都說要當一個好的程式設計師至少要花1萬個小時或十年,這可真是慢慢磨。

今天大大推薦一篇文章

【程式設計】十年自學程式設計


其中有幾點我想要記錄下來:

十年自學程式設計
  研究學者(海斯布盧姆)的研究說明,在許多領域,大約十年才能培養出專業技能
;包括下西洋棋、作曲、繪畫、鋼琴演奏、游泳、網球,及神經心理學和數學拓撲的研究
。似乎沒有真正的捷徑;即便是莫扎特在四歲就展露出音樂天才,在他寫出世界級的音樂
之前仍然用了超過十三年的時間。
  再看另一種類型的代表,披頭四樂團,他們似乎是在1964年的艾德˙蘇利文劇場
表演,突然地成為熱門樂團首席。其實他們從1957年開始,就在利物浦、漢堡等地的
小型俱樂部表演了。雖然他們很早就顯現強大的吸引力,但他們具決定性的成功作品《胡
椒中士》也要到1967年才首次發行。山姆爾˙強森則認為十年根本不夠:「任何領域
的卓越成就,只能用一生的努力才能取得;稍微低一點的代價是換不到的。」喬瑟抱怨說
:「生命如此短促,學習技藝卻要這麼地長。」

  以下是我在程式設計這個領域獲致成功的秘訣:

˙對程式設計感興趣,因為樂趣而寫程式。確信你自始至終都能樂在其中,這樣你才願意
將十年光陰投入。

◎與其他程式師交流;閱讀其他人的程式。這比任何書、任何訓練課程都來得重要。

◎不斷地寫程式。最好的學習方式是做中學。更專業地說,「在特定領域的個人最高績效
,並不是經驗夠久就會從天下掉下來;但若個人極具經驗,那麼可以透過有計劃的努力來
改進並提昇這種層次的績效。」(第366頁
  而「最有效的學習需要,定義明確的任務,特定人則有其相應難度,能增進知識的回
饋,還有重複及修正錯誤的機會。」(第20~21頁)《實踐中認知:心智、數學與日
常生活的文化
》是這個觀點的一本有趣參考書籍。

◎如果你想,你可以去讀四年大學(或再讀研究所)。這是你找工作時所需的資格,同時
也可讓你對這個領域有更深的認識。但如你不喜歡學校,你還是可以(得有犧牲)透過工
作獲得類似的經驗。就任何情況來說,只從書本上學是不夠的。「電腦科學的教育無法讓
人成為程式設計的專家,正如研究畫筆跟顏料,也不會讓人成為專業畫家。」艾瑞克˙雷
蒙,《新駭客辭典》的作者這麼說。
  我曾聘請最優秀的程式師之一,他只有高中畢業;但他寫出一堆很棒軟體,還有他
自己的新聞群組。毫無疑問的,股票選擇權讓他變得富有,他的財力令我難以企及。

◎跟其他的程式師一起完成專案。在某些專案成為最佳的程式師;在某些專案中則變成最
差的一個。當你是最佳的,你要測試自己領導專案的能力,並以你的真知灼見鼓勵他人。
當你是最差的,你要學的是,高手做些什麼,還有他們不喜歡做什麼。(因為他們會叫你
去幫他們做。)

◎接手別的程式師完成專案。全心投入並理解別人所寫的程式。當原作者已不在,看看在
理解與修改時有什麼要注意的。想想如何設計程式,能讓後來維護的人容易上手。

◎至少學會五、六種程式語言。其中一種要支援類別抽象的語言(如Java或C++)
,一種支援函數抽象(如Lisp或ML),一種支援語法抽象(如Lisp),一種支
援宣告規格(如Prolog或C++樣板),一種支援並行常式(如Icon或
Scheme),還有一種支援並行處理(如Sisal)。

◎記住在『電腦科學』中包括電腦這個詞。要知道你的電腦執行一條指令需時多久,到記
憶體中取一個字組需時多久(快取內有無資料的情形),到磁碟機讀取邏輯相連的字組需
時多久,而磁碟的定位又需要多久。解答在此

◎參加語言標準化的工作。可以像是ANSI C++委員會,或由你自己的團隊,來決
定你們的編碼風格,譬如說縮排是2或4個空格。兩者選一,你都能學到別人到底喜歡什
麼,感受有多深,又或許只是稍微瞭解到他們為什麼有這樣的感覺。

◎儘快從語言標準化工作中抽離,並具備良好的判斷力。

  自從有了這些想法,我不禁要問究竟能從書上學到多少。在第一個孩子出生前,我讀
完了所有的『怎樣…』的書,仍覺得自己是個一無所知的生手。30個月後,第二個孩子
出世,我要重回這些書當個好的複習生嗎?不!相反的,我憑著自己的經驗,重拾自信;
這些個人難得的經驗,比專家寫的幾千頁手冊還要有用。
  佛雷德瑞克˙布魯克在他的論說文《沒有銀子彈》中指出,發掘卓越軟體設計者的三
部曲:
  1.儘早儘可能地,以系統化的方式,發掘最佳設計人員。
  2.指派生涯規劃師負責有潛力者的發展,並謹慎地維繫他的生涯規劃。
  3.提供機會,讓設計者能相互影響,彼此激勵,藉以成長。

  這是假定某些人已具備成為卓越設計師的必要潛能;要做的工作只是誘導他們前進。
艾倫˙柏立士說得更簡潔了。「你可以教任何人學雕塑,但對米開朗基羅而言,要教他的
反倒是有那些事不要做。卓越的程式師也一樣。」

  Java那些書儘管買吧!你或許能從中找到點兒用處。在未來可預見的日子裏,或
許是24小時,幾天,甚至是幾個月吧!你都毋需改變你的生活,或做為一個真正的程式
師應該具備的全能本領。




漫漫長路...

Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML