程序员TDD(测试驱动开发)

第一次给大学生们上课

2018-05-31  本文已影响161人  心水
第一次给大学生们上课

3月中下旬的时候接到Hong老板的邀(Ming)请(Ling),让我到东华大学给大学生们上一堂关于TDD的课程,于是我欣(Mian)然(Qiang)地接受了。

很多人都说“教是最好的学”,这话一点都不假,领命之后我动力十足地做了下面事情:

  1. 重新练习了Bob大叔的分解质因数Kata
  2. 重读了一下Bob大叔总结的TPP
  3. 又练习了Bob大叔推荐的单词换行Kata
  4. 在公司内部做了一次TDD分享
  5. TDD遭到同事的质疑,以公司的一道笔试题为例又做了一次现场TDD演示
  6. 读了倍受Joseph同学推崇的GOOS这本书

做完上面这些事情之后,感觉对TDD的理解比以前更深了,所以如果你想学习一个新东西,最好的方法莫过于去给人家上课了。

离讲课的时间越来越近,我开始思考怎么样把自己学到的传授给学生们。要上好一堂课,老师首先要站在学生的立场上思考问题,我开始问自己学生们关心什么?学生们会对TDD感兴趣吗?想到学生们马上要毕业了,一定想找个好工作,我就从找到好工作切入激发大家学习TDD的兴趣。

学生们感兴趣之后,怎么才能让他们抓到TDD的重点?我想到了黄金思维圈,学习任何一样东西都要从Why开始思考,要从TDD到底可以解决什么问题开始思考

TDD黄金思维圈

一堂好课缺不了故事,讲为什么TDD的时候,我讲了一个关于白头发的故事:


第一次给大学生们上课

TDD的主要目的是为了持续地重构代码让代码一直保持在整洁的状态,让自己和别人少长几根白头发啊!

抓住TDD的重点之后,学生们怎么才能对TDD有更深的认识呢?纸上得来终觉浅,绝知此事要躬行。为了让学生们自己实践TDD的时候更加顺畅一些,我先现场演示了一把用TDD实现分解质因数算法的全过程,尤其是:

  1. 怎么选择下一个测试?
  2. 怎么以最少的代码让一个测试通过?
  3. 怎么重构代码让代码更简单更智能?

然后选了一道我司的笔试编程题,选这道题是因为很多同学已经做过,大家可以更专注于TDD的刻意练习上面。练习的形式是每次上来两个同学,一个同学写测试,另外一个同学写实现代码和重构,完成之后再由这对同学选择下一对同学上来,整个过程还是挺轻松有趣的,感觉大家真的“入戏”了。

最后总结了下TDD的目的是防止代码变得越来越烂,让读代码的人少长一些白头发,TDD的重点在于重构,要精通TDD很难,就像读书和健身一样,能成功做到的人少之又少,但是还是希望大家挑战自己,掌握TDD,顺利找到一份好工作。

上一篇下一篇

猜你喜欢

热点阅读