jim yeh on 七月 6th, 2007

Brecht 對石頭成的〈非資訊科班的程序員?〉的迴響中提到:

一般自修出師的程式設計師,容易出現的通病是學技巧而不學基礎,往往以致用為目標。尤其是 .NET 派的程式設計師,只要拉拉元件就可以完成工作,對於資料結構、演算法知之甚少也無所謂。

往基礎鑽進是費力而收效不見得明顯的 effort,我常以為這就是科班與否的差別所在,科班出身的人,通常這部份會較為紮實(當然也會有人混水摸魚啦,不過我們還是要對教育 or 考試抱持一定的信心)。

同人不知道 Brecht 此言是因為看過非資訊科班出身的編程者之基礎較科班出身者的來得薄弱,還是他「想當然耳」的臆測。不過,這倒和同人所觀察到的現象有所不同,我較認同石頭成文章中的結論中所提到的:

我一向不認為性別、科系,與程式設計能力有關。因為程式設計是種容易接觸與實證的知識。只要有一顆能思考的頭腦,加上一隻筆和一張紙,就可以寫程式。只要有台電腦,就可以實證。日起有功,不必妄自菲薄。

軟體開發的知識是築基於實務中的理論,在學校中所能夠學到的,總是比產業的腳步慢上許多。所以有志於程式設計工作的人,從學校畢業以後,他還是必須從實際的軟體開發過程中不斷地磨鍊其編程基礎及技巧。依同人實務所見,程式設計基礎與開發者是否科班出身沒有關係,但卻與開發者對程式設計的興趣及熱忱有關。

話說當年,當 PC 還在 MS DOS 年代末期時,同人曾參與開發會計、進銷存套裝軟體的開發,那時,我們採用的程式語言是 C 語言,資料存取部分方面則是採用 Btrieve 技術。當時參與程式設計的夢幻三人組,卻沒有一個是資訊科班出身的,我們一個是學航海的、一個是學機械的、另一個則是學商科會計的。然而,卻沒人敢說我們程式設計基礎不夠紮實,在會計發展基金會制訂會計自動化規格才剛訂出來之際,我們卻是開發進度超前的開發者,雖然,我們三個人各有所長,但其開發經驗與技術,卻是從業界中所磨鍊出來的。

同人並非科班出身,在初投身就業市場時,雖然對程式設計充滿了興趣與熱忱,但因為我的科系常引起業者之疑惑,其實是費盡千辛萬苦才找到程式設計的工作。而在我的工作經驗中,曾經訓練過新同事,讓她從對程式設計毫無概念到可以自行獨力設計程式(當時還是 Apple II 的開發環境呢),還有一位是從只從她只懂一點在 MS DOS 環境下的 Quick Basic,到讓他可以獨挑多媒體互動查詢機系統的大樑,而我在輔導他們的過程中,卻是很重視基本觀念的,程式設計的結果不重要,重點是學習過程的領悟。

如果對程式設計沒有興趣與熱忱,在學習過程中,就不會有意願往基礎裡面鑽。當初在初學 C 時,就算明明知道有現成的庫存函式可以用,我仍然會去試著自己去寫出相同功能的函式,雖然這樣做很辛苦,但由於興趣及熱忱使然,反而會樂在其中而不深以為苦,結果愈向困難挑戰則愈使個人的編程能力與日俱增,也為今日軟體開發建立基礎。

資訊技術是一門新興的學科,因此我們在程式設計過程中,所用的觀念與技術,其實有很多是向其它領域借用過來的。程式設計,只要您想學就能學得好,事在人為,並不是資訊科班生的專利。同人並不是否定學校的資訊教育,學校的課程所教的通常只是一個初略的介紹,告訴我們程式在觀念上是什麼(know what)?但如果我們對程式設計有興趣,想知道原理(know why)或怎麼做(know how)的話,則必須自己在這方面下功夫。所以程式設計的基礎,並不在學校的課程,而在程式設計者的實際體悟,要培養紮實的程式寫作基礎,不論你是不是科班生都一樣,除了由招熟而漸悟懂勁的道理外,請再切記:練拳不練功,到老一場空

Powered by ScribeFire.



     

2 Responses to “程式設計的基礎”

  1. Jasmine 說道:

    您好,我的小孩現在是國一生,對電腦程式很有興趣,從小就對電腦展現天份,請問他若要學基礎程式應該從哪種程式開始學起? 謝謝

  2. jim yeh 說道:

    我是從 BASIC 開始學起的,不過我覺得學什麼語言都 OK,重要的是他要有興趣。

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">