學習寫程式為何容易半途而廢?

林宜儒 Lawrence
5 min readSep 27, 2019

--

談從「學寫程式」轉化為「從案例學做產品」的學習模式。

Photo by Christopher Gower on Unsplash

人們買電鑽,為的不是電鑽本身,而是為了牆上的洞。

學寫程式也一樣,很多時候學寫程式或是學某個軟體,通常是為了讓生活更輕鬆好玩,或是讓人生擁有更多可能性,甚至是為了創業、轉職,而不僅是為了學會一個語言。

語言本身是工具,可以讓你跟外國人對話、可以幫你跟電腦溝通,但我們的目的不僅如此。

然而,我卻經常聽到身邊的朋友學習寫程式半途而廢,包括我自己也曾經學過很多程式語言、工具也都是半途而廢。

因此,如何解決「很多人學了程式卻沒學成」的問題,我認為關鍵是「想學寫程式」這個目標,需要定義得更清楚一些

我發現沒能學成的問題不外乎是幾種類型:

1. 程式語言真的好難,電腦的運作邏輯難以理解
-> 打基本功的過程就失敗了。

2. 學了之後不知道怎麼變成自己想要的東西
-> 理論與實務運用無法融會貫通。

3. 就算變出想要的東西了,也不知道下一步、之後的細節
-> 需要實務上更多細節、經驗累積。

解決這些問題的關鍵,要從根本的學習模式調整,套用適當的案例題目、輔以容易理解的解釋,讓沒寫過程式的人練習,整個學習體驗以情境式的案例為主、增加樂趣跟學習成就感。

課程一開始減少艱澀的技術用語跟原理解釋,取而代之的是滑順的學習體驗,學生看到自己一步一步做出會動的產品,累積小成就感,也累積自信,並透過老師的解說,理解在真實世界的場景與電腦世界的邏輯是如何交互、連動的。

秉持著 #敏捷寫作 的精神,把目前尚未完全成形的想法寫出來跟各位分享分享。

情境式教學的想法,數位思維飲料店:『朕喝的茶』

一開始先不談歷史淵源典故、程式語言特性或原理,而是設計一個情境,給大家一種沈浸感,一起解決情境中所遇到的各種問題,從教學理論來說是以問題為基礎的學習模式(PBL,Problem-based learning),會讓學習更加有效、更能融會貫通。

例如:

【情境】

康先生決定開一家手搖飲料店叫「朕喝的茶」,「朕喝的茶就是好」,喝好茶,就喝朕喝的茶。

但因為現在已經 2019 年了,報紙上都說要數位轉型,康先生覺得如果店先開了,才開始轉型,競爭力不足,不如從第一天就有數位化思維與營運模式。

因此,康先生找了一批熱血青年開始建立數位版圖,大家必須先替康先生決定數位版圖的大致樣貌,設計出飲料店日常營運的關鍵流程,將流程逐一拆解成使用者故事(user story),分析現實生活中的各種場景如何轉化到數位世界裡的流程與細節,是數位化的重要環節。

【分析】

一家飲料店常見的場景,有不同的使用者觀點:

1. 老闆:康先生每天都想知道今天賣了幾杯、什麼賣得最好?

2. 店員:店員的數學老師時常請假,怎麼樣才不會算錯錢、點錯飲料?

3. 消費者到店消費,消費者喜好多元且枯燥,怎樣點飲料、付錢才有效率?

4. 消費者在辦公室預購、團購怎麼更有效率,店員不想再接電話了,能不能網路下單?

建構這些場景,接著將個別場景的關鍵流程整理出來,逐一形成課堂上的講解、示範,並且讓學生實際動手練習。

像是飲料店老闆一開始必須要決定賣哪些飲料、有沒有冷熱飲、客製化選項有哪些、價格是多少,如此便可以將資料庫概念以及後台表單操作轉化為課堂上的練習,與此同時,開始解釋資料在網站後台、資料庫以及使用者的瀏覽器之間是怎麼流動的、使用者的互動(User interaction)是怎麼發生、又是如何操控的。

分析、拆解一個場景中的各種可能問題,並且以網路產品思維的模式解決之,其實涵蓋的也不僅是「程式設計」的問題,透過數位思維解決問題,還涵蓋了以下幾個不同領域的專業與見解:

  1. 介面與互動設計
    常聽到的 UI/UX 設計,包括看得到的與看不到的介面,像是聲控;而且一個完整的流程,通常是一連串的操作與互動,要考慮的還包括各種規則、流程、限制、回應等
  2. 數據分析
    數據如何搜集、流動、匯集、整理、分析、呈現
  3. 系統營運
    廣義的 DevOps,包括系統的負載量、穩定度、反應速度、備份備援等也都要考慮
  4. 協作模式規劃
    一個人做產品,跟一群人做產品,考驗的不只是一個人寫程式的功力,而是協作的藝術

一開始提到的,倘若你是因為有了某個點子,而起心動念想要學寫程式,那麼「寫程式」可能也僅是「電鑽」的一小部分,後面還有一連串要面對的事情。我的建議是重新定義目標,以終為始,分析需要的技能組合及最小可行性方案,如此人生會輕鬆快活許多。

除了飲料店,有很多生活中常見的場景、應用,也都滿適合教學:

案例題目

  1. 訂便當、訂下午茶、團購單;
  2. 電商網站(購物車、金流、電子發票);
  3. 無名小站、YouTube(上傳照片、影片)。

其他還有一些比較老的題目像是

  1. 留言板、部落格,可練習資料庫操作、動線、版面構成;
  2. 討論區,練習資料分類與關聯、註冊登入機制;
  3. 做一個 Twitter,練習建立訂閱功能、newsfeed。

最後想請教曾經想學習程式語言的朋友。

我知道有些朋友想學寫程式,有人為了轉職、為了創業、為了成為更好的 PM 或更好的設計師,也有人是想要更理解工程師,增加跟工程師溝通的效率,但也聽過某些朋友總不得其門而入,想請教有經驗的朋友以下幾個問題:

  1. (動機)過去是否曾經想要學習寫程式但卻不得其門而入,一開始是為什麼想學寫程式?
  2. (遇到的困難)學到一半遇到什麼困難才沒能學成?
  3. (想要怎麼學)如果調整為情境個案式的教學,會不會增加學習動力?
  4. 或是直接跟我說想做的題目,我來練習寫教材 🐯

#朕喝的茶
#朕喝了茶不尖叫
#我沒有要開飲料店
#清朝康熙雍正乾隆都愛喝茶
#像是碧螺春就是康熙喝了喜歡特別取的名字
#敏捷寫作

--

--