在这几年推广《构建之法》软件工程教学的过程中,我看到很多老师在讲软件工程的时候,虽然讲了很多年,但是手头没有任何项目,学生或者现想(得到一些大而无当,无法在一学期内完成一个可用版本的项目), 或者抄袭一些经典模板题目(图书馆管理...) 。没有好的实践素材,教学质量也不能提高。
为何不能从身边获取需求,解决自身的痛点呢?我们举一个例子:
对于大学生来说, 英语学习,通过考试是一个刚需。 一个人的英语词汇量有多少,是一个很多大学生都关心的问题。
现在的英语学习App 都很完美了么? 未必,我们的学生做过多次调查,发现各种App 都有很多提高空间。
这个“软件” 做出来,很容易鉴别质量么?当然,所有大学生都能判断这个App 的好坏; 有实际用户么?有。 作为对比,同学们做的 “图书馆管理系统” 有人能实地使用呢? 能借书出来么?
这个“软件” 的可行性如何? 能做出来么? 网上有一些数据:
①大部分单词的出现频率;
②公开的英语词汇解释。
利用这些数据,就可以做一个小的词典App。基本功能有:查词,显示词汇的解释。
扩展功能:
- 各种专业词汇、特别词汇表 (四级、六级)的支持
- 服务器/客户端的扩展,支持动态下载文件
- 可以做简单的“单词本”, “背单词” 功能。
- 可以考虑在不同设备同步单词本,这就要考虑用户的管理,网络模块
- 再深入下去, 就可以做 “词汇量” 功能。 如果我们让一个用户回答单词单词的释义, 大约20 个左右, 根据用户回答的正误和所选单词的频率数据, 就能大概推算出这个用户的词汇量是多少。 如果算法好了, 就可以和UI结合, 我们可以给用户多次测试 (每次 20 个单词), 测得越多,算法就越准。
- “词汇量” 算法还可以让学不断改进。
我们可以展现他在所有用户中的排名。
用户不会的单词就可以放到用户的单词本中。
做到这个程度, 这样的App 就会有一些用户了, 那么下面就可以根据用户的反馈,考虑进一步的功能/服务。 例如,用户学习单词是一个手段,他们的目的是什么呢?是阅读高质量的英语文章,还是通过某种考试? 还是别的? 这就开始了下一轮的用户调查和开发流程。