寫程式的第 “零” 步 — 先學會問問題!

有機會跟一些資訊老師或民間的電腦老師討論,其實很常發現在資訊教學的過程中,很多人都遺漏了一點:「如何引導孩子開始一個專案」

很多人常常誤會一件事情,認為學習程式設計是一件可以一步步照「SOP」進行的過程。
但是一個真正「夠格」的程式設計師,是具備「找出問題」並「解決問題」的能力,而不是只會死背活記SOP的。

台灣孩子的問題是什麼?不會定義問題!

如果你是父母或老師,你一定很常聽到:

「我不知道作文要怎麼寫!」
「我不知道這個報告要怎麼寫!」

而當你進一步問他:「是哪邊有問題呢?」

他們往往回答:

「全部!」「不知道!」

你可以發現,在台灣到處都有「標準答案」的教育環境下,學生已經習慣了等待「最佳解法」,當面對一個比較發散、需要創造的任務時,往往只能楞在一邊。

Top-Down 思維 — 分析問題、拆解問題、解決問題

依照我們過去的經驗,台灣的孩子的確常有以上提到的情形,而引導孩子突破這個僵局,就是我們老師的價值所在。

以最近開發的「APP創造營」為例,當我們在課程中指派學生一個計算BMI的小程式時,首先面對的就是學生不知道該如何從頭開始的問題。

第一次思考:「如何使用?」

一開始,我們會帶學生從使用者的觀點出發:

「如果你希望用APP算出自己的BMI指數,在你的想像中會是怎樣的操作方式呢?」

此時或許會有很多答案:
「我希望念出我的身高和體重,螢幕就會出現我的BMI指數」
「我想用打字的方式,先輸入體重、再輸入身高,按下確定後螢幕就會出現我的BMI指數」

這個階段會讓學生盡情的「發散」,試圖想像自己使用這個「還沒被開發出來」的APP的情境。

第二次思考:「長什麼樣子?」

接下來,我們會請學生思考:

「根據你提出的使用情境,你覺得這個APP會長什麼樣子?」

到了這個階段,整個APP的外觀(wireframe)已經有了草案。每個介面元件(component)對使用者的作用為何,也有了定義。

「拆解」&「實作」

最後,我們會發現每個元件(component)都應有各自己的行為(behavior),每個行為其實就是一個小小的功能。接下來學生要做的就是:

  1. 實作介面 & 布局元件
  2. 實作A元件的功能
  3. 實作B元件的功能
  4. 實作C元件的功能
  5. ….
  6. 測試 & 修改
  7. 驗收

小結

當然,在業界的開發流程更加複雜,但是不代表這些設計哲學不能被簡化、調適為適合孩子的思考高度。

在橘子蘋果的課程中,我們信奉著一句話:

「當問題被清楚陳述時,它已經被解決了一半」
John Dewey, 美國哲學家和教育家

學習其實很簡單,先讓你的孩子從問對問題開始吧!

--

--

Kevin Shu / 束凱文
橘子蘋果兒童程式學苑 官方部落格

Coder / Teacher / Student for life. Love analyzing and solving problems. Running the leading coding school in Taiwan for children and teenagers.