在這幾年推廣《構建之法》軟件工程教學的過程中,我看到很多老師在講軟件工程的時候,雖然講了很多年,但是手頭沒有任何項目,學生或者現想(得到一些大而無當,無法在一學期內完成一個可用版本的項目), 或者抄襲一些經典模板題目(圖書館管理...) 。沒有好的實踐素材,教學質量也不能提高。
為何不能從身邊獲取需求,解決自身的痛點呢?我們舉一個例子:
對於大學生來說, 英語學習,通過考試是一個剛需。 一個人的英語詞匯量有多少,是一個很多大學生都關心的問題。
現在的英語學習App 都很完美了么? 未必,我們的學生做過多次調查,發現各種App 都有很多提高空間。
這個“軟件” 做出來,很容易鑒別質量么?當然,所有大學生都能判斷這個App 的好壞; 有實際用戶么?有。 作為對比,同學們做的 “圖書館管理系統” 有人能實地使用呢? 能借書出來么?
這個“軟件” 的可行性如何? 能做出來么? 網上有一些數據:
①大部分單詞的出現頻率;
②公開的英語詞匯解釋。
利用這些數據,就可以做一個小的詞典App。基本功能有:查詞,顯示詞匯的解釋。
擴展功能:
- 各種專業詞匯、特別詞匯表 (四級、六級)的支持
- 服務器/客戶端的擴展,支持動態下載文件
- 可以做簡單的“單詞本”, “背單詞” 功能。
- 可以考慮在不同設備同步單詞本,這就要考慮用戶的管理,網絡模塊
- 再深入下去, 就可以做 “詞匯量” 功能。 如果我們讓一個用戶回答單詞單詞的釋義, 大約20 個左右, 根據用戶回答的正誤和所選單詞的頻率數據, 就能大概推算出這個用戶的詞匯量是多少。 如果算法好了, 就可以和UI結合, 我們可以給用戶多次測試 (每次 20 個單詞), 測得越多,算法就越准。
- “詞匯量” 算法還可以讓學不斷改進。
我們可以展現他在所有用戶中的排名。
用戶不會的單詞就可以放到用戶的單詞本中。
做到這個程度, 這樣的App 就會有一些用戶了, 那么下面就可以根據用戶的反饋,考慮進一步的功能/服務。 例如,用戶學習單詞是一個手段,他們的目的是什么呢?是閱讀高質量的英語文章,還是通過某種考試? 還是別的? 這就開始了下一輪的用戶調查和開發流程。