# 使用验收标准来进行高效学习




相信大家对验收标准不是很陌生。

我们在进行测试活动的时候一般会为我们的需求加上验收标准。比如某需求要求我们实现个缺陷管理系统，那么我们可能会为这个需求分解出若干个验证标准，如可以正确的创建缺陷并分配给开发人员之类的，验收标准可以作为我们测试用例的大纲，测试用例可以来围绕验收标准展开，关注正常和异常的多种情况，从而达到保障系统质量的目的。

回到我们今天的主题——高效学习上来。

最近我也在查缺补漏，补充自己的知识，完善一下总体的认知架构。在学习过程中我发现，如果只有学习目标的话，那么学习的效率可能是不够高，或者说是学习的过程是不够聚焦的。

举个例子，比如你在学习python，你给自己定了一个小目标，半年内学会python。这个目标看起来是没有问题的，有开始和结束时间，也有着强烈的目的性。

于是你开始学习，你去网上找到了学习资料，并且看完了语法，然后搭建了python开发环境，尽管在ide和编辑器上纠结了好久，尽管对命令行执行python命令从内心深处强烈的抵触，不够好歹你可以写个hello world，然后正确运行。后来应该做什么呢？如何在工作中将python运用起来呢？你没什么头绪。过了一段时间，你又鼓起勇气，重新捡起来python，但是语法和一切都是似曾相识，但hello world运行起来已经不是那么驾轻就熟了，然后又是不知道该如何继续，再搁浅，再捡起，无限循环。

这是初学者学python的一般轨迹，相信不出意外再学习其他技能时也会陷入这样的困境。经过思考以后，我发现其实我们可以简单调整一下我们的学习方法，也许会对学习过程有一定的改进。

我们分析一下上面的例子，再上例中，我们有目标，有过程，但是却缺少一个很重要的因素，那就是学习结果的度量，也就是我们在测试活动中所说的验收标准。没有验收标准的话我们就不知道自己的学习的结果是怎么样的。比如我学完了python语法，这是一个过程，我投入了时间，经历了这些过程，但是结果如何？我学会了python语法了么？我不知道，但我知道我真的花了很多时间，其间也非常努力，我对自己的努力很满意，至于结果，没学会可能是因为我不够聪明，或者不适合学习这个吧。

真的是这样么？如果我们给学习python这个目标增加一些验收标准呢？比如最简单的验收标准：可以使用python连接数据库并自动插入一些测试数据。好了，现在我们的学习目标和验收标准是这样的了

* 目标： 学会使用python
* 验收标准：可以使用python连接数据库并自动插入一些测试数据

根据目标和验收标准，我们可以重新规划学习过程

* 学习基本语法，先看熟，然后写一些小例子
* 学习python连接数据库的方法
* 学会python往数据库里插数据的方法
* 学会自动生成测试数据的方法
* 最后写一个脚本，完成最终功能

这样学习可能更有目的性，学习的效果也许会更好一些吧。

我们再看其他一些例子，看看如何为自己设置验收标准。

比如我要学会vuejs，那么

* 目标：学会vuejs
* 验收标准： 使用vuejs写1个简单的todo list
* 过程分解
    * 学习js语法
    * 学习html/css
    * 搭建vuejs开发环境
    * 了解vuejs原理
    * 学习vuejs的数据绑定
    * 学会使用vuejs进行页面的动态渲染
    * 学会使用vuejs处理相应用户输入...
    * ...
    * ... 
    * 最后写todo list，完成最终功能

其中上面的每个过程都可以给出更进一步的细分验收条件，比如学习html/css怎么样才算是学会呢？验收目标可以是写个简单的表单，看起来舒服就可以。

另外在这么多年的教学过程中，我发现只给学员布置作业其实是不够的。

作业可以看做是验收标准，但如果只是让同学们自己去做作业，而不去验收，或者说不去强制查看的话，那么很多人可能就因为各种原因不做作业了，没有作业的复习和巩固，很多需要大量练习的技能是很难掌握的。所以在最近的几期里，我们尝试在学院系统中为大家布置作业，然后老师批改作业，有了作业的加持，我发现一些同学的进步是非常明显的，这也验证了我的猜想，学习实际上是目标+过程+结果检查的过程。想想我们之前的学习经历，目标就是教学大纲，过程就是老师上课，结果检查和验证就是作业和考试。在我们工作之后，我们往往只注重前两点而忘记了结果的检查，这大概是导致我们自学效果不好的重要原因吧。

综上，希望对你有所帮助。







原始封面

![课程图片](https://images.unsplash.com/photo-1465188035480-cf3a60801ea5?w=300)


