葉丙成
日前有一位大二同學跟我約喝咖啡聊天。這位同學是位相當聰明優秀的學生。在臺大讀了一年半之后,對于學習,有些想法也有些疑問,所以找我聊。當中聊到了一個問題。他問我系上安排的這些課,以后到底有什么用?有些好像修了以后也不見得用到。如果是這樣,那何必要他們花時間修?
是啊,這似乎是很多同學在修課、念書時會產生的疑問:“我念這個到底有什么用?”特別是在期末考前熬夜念不完時,這謎之聲便不停地在腦海中反復出現,仿佛是“臺科兄弟”的旋律,久久揮之不去。
一個課有什么用,確實是很重要的問題。在我以前寫過的一篇故事中。我的教學啟蒙老師耶哥教授來臺演講時,便對大家耳提面命:“老師最重要的工作就是要讓學生知道修這個課有什么用。學生知道之后,才會有動機學習。”
所以讓學生知道修這個課有什么用,是老師們的義務。不過,這樣的問題,每個人都會有很主觀的看法。老師的看法并不見得是唯一的面相。特別是老師屬于專業的人士,他們的看法有時候會比較偏重在專業面而不夠全面。同學們除了聽老師的說法外,也還是應該要靠自己來發掘。在學習的過程中,慢慢體悟你學到了什么,并深入思考你學到的東西對你的未來究竟有何意義?
乍聽起來,好像摸不著頭緒,對吧?這邊我給大家一個例子。“計算器程序”,是許多系所的必修或選修課程。修“計算器程序”到底有什么用呢?直覺的答案是:“學了之后就會寫程序了”“會寫C/C++程序以后才能修下一個XX課”“學會了之后在業界比較好找工作”。這些答案對不對?都對。但是學寫程序的用處就僅僅是這樣嗎?
寫過程序的人都知道,寫程序最痛苦的,就是要抓蟲(debug)。所謂的“蟲”,指的就是自己寫的程序代碼中的錯誤。只要有蟲沒抓完,程序就無法正常運作。可是我們寫的程序,往往有成千、甚至上萬行的程序代碼。一旦程序無法運作,要如何知道蟲兒們到底躲在哪些地方呢?特別是程序寫得不好的人,程序代碼往往都是寫成一大沱,main() 函數總是寫的特別肥大。一旦程序出錯,實在很難抓到蟲。有道是:“只在此沱中,沱深不知處。”
程序課程最重要的訓練,就是要大家學會抓蟲的功夫。為了抓蟲,寫程序不能再寫成一大沱,而是要學著把程序的功能切割成一個個獨立的小模塊,分別寫出程序代碼。最后再把所有的小模塊串起來完成程序。由于這些獨立的小模塊的功能都被不是很復雜,程序代碼的行數也不是那么多,所以每個小模塊運作正常與否可以很容易的測試出來。相較于一大沱的程序來說,要抓蟲就容易多了。舉例來說,如果有幾只螞蟻跑到一個餅干甕中,要找到所有的螞蟻會很困難。但如果餅干當初是被分包成一小包一小包,那我們可以每包個別檢視。要抓到所有的螞蟻,就不是那么困難了!
講到這邊,修過程序課的人可能都覺得我在說廢話,這些大家早就知道了。不過,大家可不要輕忽了這程序課所訓練出來的抓蟲心法。這心法可不是只有寫程序或電路設計才有用的,到處都有用!舉例來說,如果你以后在職場上當了某個團隊的主管。這團隊每次執行項目都會失敗,可是老是找不到癥結出在哪個人身上。當一個工作有十個人一起合作時,誰擺爛導致工作失敗,實在很難看得出來。但是如果把工作切割成小塊,分別分配給不同人作。這時候誰擺爛,只要看各小塊的工作成果便一目了然。 你說抓蟲心法對你有沒有用?
所謂的抓蟲心法,其實就是訓練你在出狀況的時候,可以快速的區隔、進而找出所有出錯點的能力。這樣的功夫在你的未來,不管是管人、管事、管物,都非常有用。可是很多人并沒有這樣的體悟,只把程序課定位成純粹專業的課程,實在很可惜。
我另外還可以再舉一個例子。我在臺大所開的簡報課程,我們一直強調一個精神:“要了解你的觀眾,再從觀眾的角度出發去審視你的簡報”。這個精神,是只有作簡報有用嗎?不是的,這樣的精神在寫文章、寫論文,甚至開發產品上都是很有用的。
以開發產品為例,開發者一定要先做市場調查,了解消費者,接著再從使用者的角度出發去審視自己的產品功能。唯有這樣,才有可能做出消費者覺得很棒的產品。你看,這樣的精神,跟我們簡報課要傳達的精神,是不是完全符合呢?
所以同學們,當你們在修課的時候,除了問老師外,自己也可以多花點心思來思考究竟這課程對你的未來有什么用。老師的答案或許會比較局限在專業的思考之中,但是你們的思考可以更全面、更有突破性。不要只注重在修課所學到的“知識”有什么用,多花點時間思考你學到了什么樣的“心法”,而這個“心法”對你的未來人生有什么用?
一旦找到了屬于你自己的答案,恭喜你,你也晉升高手之列了!