almost 9 years ago

程式初學者的失落之鑰 – “Computational Thinking”

在閱讀正文前,我希望大家先讀一篇: 程式初學者的失落之鑰 – “Computational Thinking”,了解什麼是 Computation Thinking。

新手大門檻:從來沒有拆解過東西

很多 Ruby on Rails 新手在終於掌握 Ruby on Rails 的基礎瞬間會很開心,但是在過後的兩個禮拜會陷入極度沮喪。

因為大家都發現,來來去去大家還只是會書上的那幾個功能,要寫出自己想要的功能或網站還是趨近於不可能。原因就在剛剛講的,初心者缺乏「Computational Thinking」(用電腦解決問題的思維)(也就是拆解與實做,並在實作的過程中找到資源)

我在去年的 Ruby on Rails 實戰班 裡面有教這個能力。這次在這篇文章內我試著再重新寫一次這樣的教學。

(1) 了解什麼是 User Story,學會把故事寫出來。

如果你要開發一個產品,試著不要以我要有 AA, BB, CC, DD 功能的這樣的想法去做產品。

而是以 這上面會有哪些操作的人,會在哪些場景,進行哪些操作。

用我要有「這一些」「功能」去開發的思維,在開始開發後的一天就會踢到大鐵板。在寫 Spec 時沒感覺,動工之後,新手才會瞬間意識到簡單功能背後是「一大堆小功能」,然後就絕望癱瘓了。

我以 66 k 高薪網(因為有開放程式碼)舉例來說。

怎麼做出這個產品?兩句話形容他

1) 想徵才的人可以在這個網站上張貼工作
2) 想應徵的人可以在這個網站上瀏覽有哪些工作,並點進去瀏覽。

這是這網站最關鍵要做的事。

你可以用白話寫下來所有你想要做的事,然後除了核心以外的故事通通都刪掉。

(2) 聚焦

這個網站上的重點就是「工作」這個 model。你可以開始想「應徵者」要貼工作,那它需要填寫哪些欄位,把資料庫設計出來。

(3) 展開第一個簡單的 Story 「想徵才的人可以在這個網站上張貼工作」

「想徵才的人可以在這個網站上張貼工作」可以拆成

1) 「想徵才的人可以在這個網站上進入張貼界面填寫資料」
2) 「想徵才的人可以在這個網站上填寫資料後,在張貼之前先預覽內容」
3) 「想徵才的人可以在這個網站上填寫資料後,在張貼之後可以收到一封張貼確認信」
然後再重複 (2)「聚焦」動作,把這個 Story 最重要的事情完成,比如

  1. 製作表單
  2. 儲存到資料庫,但把資料設成作者自己能看到而已。(什麼?你說還沒有使用者設計,那這時候再加一條設計:網站上面要有使用者能夠登入的功能)
  3. 張貼之後,把工作設為大家都能看。
  4. 張貼之後,寄一封信給張貼者

一次只做一件事。做最重要的那件事。

你千萬不能做的事

  1. 直接寫我要 AA, BB , CC 功能。(動工之後會嚇死你)
  2. 在寫 Story 時,把未來「可能也可以有」的功能通通都一口氣加進去。(寫著寫著就迷路了)
  3. 懶得寫 Story 時,直接註明 抄 XXX 網站即可。(你會在抄襲時發現抄不完感到挫折)
  4. 覺得 Rails 很簡單,做某功能時想一口氣把相關的功能都做完。(千萬不要!)
  5. 覺得以後還要改很麻煩,乾脆先把擴充可能性都設計出來。(千萬不要!)

上面所強調的三個步驟,是讓開發者,專注只把眼前最重要的事情做完。而且你已經想過「眼前正在做的事是這個網站最重要的事」。

中間冒出來的都是魔鬼。

一旦你聚焦,Google 關鍵字就會變得很好下。

因為網路上絕對不可能有「How to build a e-commerce shop」的 stackoverflow step by step 教學。

但是如果你用 "credit card payment processing", "stripe integration", "shopping cart design", "checkout design" 這些關鍵字就一堆文章。

← 談外國設計公司怎麼 scalable 接案 [Rails 答客問] Rails 功力要怎樣才能進步 →
 
comments powered by Disqus