这段时间我有这样的一些感觉和疑惑:
- 我之前在做IdeaRemotePair插件的时候,其中有一些关于交互协议的部分是用TDD的方法来做的,有一些很好的感觉
- 我最近在做一些复杂的卡时(多项目,多语言),使用TDD的过程中,遇到了很多麻烦
- 我感觉大家在做卡的时候,经常以“项目时间紧”为理由,而采用“先把功能完成再补测试”或者“先做完功能,有空再做重构”的方式,这跟我司倡导的“TDD”等实践是违背的
我在回顾会议上提到了这些,大家让我准备一个session讲讲。但我在准备的过程中,觉得自己在这方面的知识和经验都不够,讲不出来什么,所以把它弄成了一个讨论会。于是预设了以下主题让大家投票:
主题 票数
- 如何看待“补测试”与"TDD"的关系与区别? 6
- 常用测试框架你熟练掌握了吗? 6
- “测试覆盖率”重要,还是“TDD”重要? 5
- 测试的取舍:哪些测?哪些不测? 5
- 如何看待“加班”,“课外学习”,是个人私事吗? 4
- 做卡中,时间花在哪里了?有哪些可以改进? 4
- 你做过国内项目,在国内出过差吗?跟办公室项目相比有哪些不同的感受? 4
- 什么情况下,你认为可以不用,或者不应该使用TDD? 4
- 你是否愿意因为一些技术问题与同事争吵?值得吗?如果吵,该怎么吵? 4
- 你怎样看待当前的结对?你认为它最重要的地方是什么?是否觉得流于形式,应该取消? 3
- 当你不想TDD时,你会有哪些理由? 3
- 你觉得现在的thoughtworks还是你理想中的thoughtworks吗(P2软件卓越)? 3
- 如何维护写完的测试代码,让它们依然容易阅读? 3
- 你曾经有没有经历过“没有TDD,甚至没有测试”的开发?有什么感触比较深的? 2
- 什么情况下,你认为可以不写,或者不应该写测试? 2
- TDD让你感受到哪些独特的好处?哪些是你认为最重要的? 2
- 是否会因为做卡时间过长或者客户压力,而放弃TDD或者故意跳过一些测试? 2
- 你对同事提供的session, workshop有什么看法?觉得有帮助吗?有改进吗?想吐槽吗? 2
- 你考虑过讲session,或者举行一些workshop吗?有哪些担心的事情? 2
- 结合当前项目情况,你是否经常Spike?如何看待Spike?如何正确的做? 1
- 当你不想写测试时,你会有哪些理由? 1
- 如何看待小组一起CodeReview?最重要的地方是什么?是否值得? 0
- 你觉得TDD有哪些缺点? 有哪些重要问题它解决不了? 0
按投票人数从上到下讨论,大约进行了2小时。
讨论很充分也很激烈,但是大家并没有得出很好的结论。大概总结起来:
- 大家对TDD的好处并明确,觉得只要想清楚了,先写还是后写都一样
- 大家觉得对常用测试框架的掌握,还不是特别熟练
- 如果是强制进行的workshop,应该放在工作时间;而由兴趣形成的,可以放在下班后,号召是你的事,参不参加是别人的事
- 下班后不应该加班,因为一你做的事情你的pair不知道,二会给客户错误的进度信息
- 下班后自己学习是自己的事,提倡但不强制
- 做卡时经常会浪费很多的时间在找人,以及反复确认需求上
后来问了一些同事,得到了一些反馈。比如:
我感觉大家讨论的时候都在想办法说服别人,没有真正在讨论同一件事。大家都在不同的项目,遇到的情况也不一样,讨论不到一起。如果这个讨论会的主题是,大家结合自己的项目情况介绍一下自己的做法、遇到的问题等,让别人帮忙分析,给出意见,可能更有用一些。在搞讨论会以前,最好多问问大家到底想讨论什么,有什么好建议
我觉得这些主题有点深,而参加讨论的人,很多对一些基本的概念都不清楚,大家都靠着自己想像中的理解在争论。比如关于TDD,大家平时都没有认真系统的看过这方面的书,在实践过程中也没有真正去思考,但现在却坐在一起讨论一些高层的问题,根本没法进行有效讨论。以前我们曾经有过这样的讨论,徐大师在旁边听了,只说“你们真正去做做TDD再过来讨论”
我觉得这种讨论会的形式还是不错的。觉得有些可惜的就是,没有及时要求给出"Action”。比如讨论到“测试框架不熟悉”的时候,大家觉得搞个workshop是有益的时候,我们应该提出做一个什么样的workshop,谁愿意来负责等等。不然讨论完了就完了,问题没有解决。