當程式設計成為必修,你會說程式語言嗎?
你的孩子會說程式語言(Coding)嗎?近年來,全球掀起一股程式設計的教育浪潮,愛沙尼亞、英國、法國、奧地利、丹麥、波蘭、台灣等,均將程式設計納入課綱,不單單是為了未來大量需求的軟體人才,更為培養孩子解決問題、創造、勇於嘗試錯誤等能力,以及做好掌握數位生活的準備。
由國家教育研究院規劃的107課綱草案,預計等到新政府上路後,教育部將會重組「課審會」進行審議。根據既定草案內容,程式設計屬於科技領域的一部分,國中、高中階段列為必修課程,但在國小階段,則可依照學校資源條件與學生特性,進行融入性的教學規劃,也可成立社團提供學生學習。《中央通訊社》2016-3-30
最熱門的專業
未來的社會幾乎是軟體的天下,什麼東西都是由軟體來控制。生產製造由軟體控制、財務金融由軟體控制、購買消費由軟體控制、各類溝通管道通通是透過軟體控制,就連智慧都人工化,也被軟體給控制了。基本上來講,現代人幾乎是活在軟體的世界中,只差那麼一步,就要進入電影《駭客任務》的世界中了,所以各行各業都需要軟體人才,那麼你還能不學程式開發嗎?
資管系畢業不大會寫程式
既然軟體專長這麼熱門,而且市場上是奇貨可居,各大學應該廣設電腦相關科系吧!沒錯,資工系與資管系是與軟體最直接相關的兩個科系,而且資管系的數量簡直到了氾濫的地步。只是有不小比例的資管系畢業生,其實並不會寫程式。這可奇怪了,如果在大學中學了四年都不會寫程式,又怎能期待國、高中生能學好程式設計呢?
根據多年面試軟體工程師的經驗,資管系畢業生會寫程式的比例,幾乎就像是打怪掉寶一樣的稀少,可能面試了十個資管系畢業生,都還遇不到一個真能寫程式的人,有時候甚至都會懷疑資管系的教授、講師們,到底會不會寫程式,要不然怎會教不出會寫程式的學生。
成績好未必程式寫得好
記得念大學的時候,班上第一名的同學,還是建中畢業的喔!各科成績都非常好,就唯獨程式設計這門課,不管他是多麼的努力,成績都差強人意。而我們這群不愛念書、整天在玩的同學,程式卻隨便寫寫,成績都名列前茅,顯然老天是公平的。
說起當初學習程式設計的過程可有趣了,其實上課也沒多認真聽老師講課,書本拿起來看看,就會寫程式了,接著再買幾本其它程式語言的書自己練習,沒多久,就會寫好幾種程式語言,還包括低階的組合語言,一下子就對程式設計有了極大的興趣。於是大一下就跳修大三的電腦課程,大二跳修外系大四的電腦課程,從程式設計、資料結構、硬體控制一路到系統設計、系統分析一口氣全部修完。
同學們幾乎都是上大學後才開始接觸程式設計,有一票人對此特別有興趣,覺得系上的課程不足,大家就一同跳修大三、大四的課程。且,只是學寫程式未免太無聊了些,系上就辦了個程式設計大賽,要寫一個完整的電腦擇友系統,大家報名踴躍,沒想到一不小心,就拿了比賽的冠軍,更是增強了不少的信心。後來這群同學中的許多人都當上了軟體公司的總經理、高階主管,或是企業的CIO(資訊長),自己雖然畢業後並未踏上資訊這條路,但百轉千折,還是曾經做過上市公司整個集團的CIO。
程式語言大同小異
在面試軟體工程師時,首先會先了解求職者最熟悉哪種程式語言,然後接下來幾乎每次都會問的問題是:「你已經學會了一種程式語言,那如果現在去學另外一種你沒學過的程式語言,你需要多久時間才能上手。」
有不少人的回答是一個月,也有些人苦思了半天,最後勉強說出三個月,還一副很沒有把握的表情,但我個人認為的標準答案是:「一星期」。
這會不會太嚴苛了啊!
其實不會!這是對專業軟體工程師的基本要求,也同時說明了學習程式語言其實並不困難。事實上,各種程式語言都大同小異,且語法簡單,常用的指令就那幾個,只要懂得方法,幾天之內就可以掌握。當然要熟練還是需要點時間,但如果相關資訊充分,速度也是可以很快的。
那為什麼有些人卻需要三個月以上的時間呢?簡單講,認為要三個月才能學會新程式語言的人,幾乎都不適合往程式開發的領域發展,他們不是不夠努力,而是天生的條件就不適合。
蛤!那馬上大家從國中就要開始學寫程式了,如果天分不夠該怎麼辦?
要寫好程式,最重要的是邏輯能力。
各種程式語言不但大同小異、簡單易懂,而且開發時,幾乎都會使用好用易學的開發工具,寫起程式來簡直就像是玩樂高,把各種組件組合起來,再做些設定就成了,一點都不困難。可是,若是如此,那為什麼許多資管系畢業生學了四年都還學不會呢?
照著範本組樂高,沒人不會,了不起多花點時間而已,但要做一個沒人做過的東西,可就困難了。有時候雖然組出來了,但一碰就垮,或是轉個面就不像了,尤其是碰到原本的組件不符需求時,要自己開發組件,這才真是困難。
邏輯不好的人寫的程式,雖然程式一樣可以寫得出來,但往往情境稍有改變程式就掛了,或是碰到稍為複雜一點的程式,可能就會寫很久、很久,就像組一個複雜的模型,就連要從何處下手都很難搞定。
一個邏輯不好的程式,最令人困擾的是不知道它何時會出錯、何時會當掉。這不是說程式的語法錯誤,而是程式跑出來的結果會時對、時錯;有時表現正常,有時運轉遲緩,而且還很難預料,更糟糕的是,要修改這種程式,簡直就是一場災難,對修改的人來講,根本就是一種痛苦的折磨,不如整個打掉重練,還輕鬆快活些。
邏輯好是一種天分,就像學音樂的人有絕對音感一樣。雖然音感還是可以訓練的,但成效有限,尤其是遇到音癡,恐怕就只有放棄一途了。程式寫得好的人,跟寫得不好的人的差距可以是天壤之別。會寫的三天就夠,不會寫的給他三個星期也未必寫得出來。
經常一個簡單的工作交辦下去,以為隔天就應該會回報成果,但等了三天卻仍毫無音訊,把部屬叫來詢問,才發現原來程式設計一直卡住寫不出來,愈解愈複雜。其實只要換個方法,當場花個三分鐘,問題就解決了。
舉一個智商比柯P還要高3分的翟本喬的誇張例子。這是翟本喬在紐約大學念博士班時,標準普爾請顧問花了一年時間都寫不出來的金融產品分析系統,因為這群顧問設計的系統,運算的速度總是太慢,沒辦法在股市開盤前把前一天的結果算完,最後時間快來不及了,才緊急請翟本喬協助。結果他只花了三週的時間便完成了,速度比原來快了三百倍,讓標準普爾免去賠償百萬美金的違約金。
程式的好壞經常不是技術的問題
程式寫得很艱深,未必是好程式,通常愈好的系統,其程式愈簡單。程式語言只是工具,好的想法與作法才是關鍵,這尤其依賴有好的邏輯。就好像高速公路改成ETC收費,如何計算一輛車在高速公路上開了幾公里,最直覺的想法就是在所有上、下交流道口都裝設感應器,只要在上交流道時感應一次,下交流道時也感應一次,將兩個交流道的公里數相減,就知道開了多少公里。這是最直覺的作法,但卻並不是最簡單、最省錢的作法。
實際上的作法是,只要在任兩個交流道中間的任何位置裝設感應器就好了,車輛只要被這個感應器感應到,就必定會開這兩個交流道間的距離,這樣系統就簡單多了,而且可以大幅減少感應器的裝設數量,有效降低成本,所以好的作法才是設計一個好系統的關鍵。
應用軟體和專業開發不同
學習程式設計,不一定要成為軟體工程師,程式設計是一個很好的訓練,更是一個對工作非常有幫助的工具。專業的程式設計師需要很好的邏輯以及很好的程式開發訓練,但並非每個人都要成為程式設計師,也不是人人都能成為程式設計師。
即使是邏輯能力較差的人,擁有程式設計的概念,學會程式開發相關工具,都能有效大幅提升工作效率。不管在哪個領域,懂得程式設計的人,做事的效率就會比不懂的人強,在這個年代,會不會應用電腦工具,成了領先同儕的重要手段。許多你原本認為做不到的事情,透過簡單的程式設計或應用,就有可能化腐朽為神奇。其實,善用大家最熟悉的Excel就能非常有效的提升工作效率,只要懂得在Excle上設定些函數或是錄一段巨集,工作的效率馬上就像從騎50cc的小綿羊,搖身一變而成野狼125,更何況,還有其他不知多少的工具可以使用。
過去要與外國人溝通最重要的是要學會英語,而今日要與各種事物溝通,要學的卻是程式語言。(ChristiaanColen@flickr,CC BY SA-2.0)
學習簡單的程式開發,只需要簡單拖拉設定就能完成龐大的功能,這是這一代的工作者必須具備的基本能力。當懂得愈多、愈會運用電腦相關工具,就愈能夠協助個人在專業領域中發揮更大能力與效率。
程式語言就像一般口說的語言一樣,只是協助溝通的工具,其中一個是跟機器設備溝通,另一個則是跟人溝通。而無論是哪種語言,要真正能發揮效用,還需擁有對事情本質的專業才行,這點可是千萬不能輕忽了。
(本文經作者授權轉載)
──原文網址