好几天没看书了,今天打开kindle,擦,竟然没电了,只好转战朋友圈,看看有没有啥素材可写。
正好看到熊节老师的一篇文章,可以谈一谈表面敏捷,顾名思义,表面敏捷的意思是表面上是敏捷的,但是本质还不是。熊老师说:
敏捷讲“我们要更快的速度迭代,我们要更频繁的生产出可工作的软件”,敏捷宣言讲“可工作的软件重于面面俱到的文档”。那我怎么不断地基于可工作的软件去交流呢?肯定我需要更频繁的发布,更频繁的交付。这带来一个问题就是你要怎么做软件质量的保证。
以前我们软件质量保障是靠测试人员手工去点,手工回归。三个月发布一次你可以手工测试,如果你每周发布一次,让测试人员跟在后面手工回归那是不可能的。要么把测试人员累死,要么软件质量一团糟,也有可能两件事情同时发生。
要快速发布又不产生TT的唯一办法就是自动化测试,是更可靠和更快速的自动化测试,要写出更可靠和更快速的测试,单元测试是少不了的,单元测试分先写和后写两种,如果是后写,基本上等于不写,因为开发很可能没有时间和心情来写单元测试,所以只剩下一条路:先写。
那怎么才能让开发先写单元测试?需要两种手段相结合,缺一不可,一是制度,二是能力建设,制度是指开发的规则和规范就是这样,你在实现一个功能之前,必须想好这个功能的验收测试有哪些,就像Hong老板前几天说的,他儿子辅修了软件工程,老师给他们布置的回家作业都是网上提交的,必须通过网上的测试才算完成作业。
能力建设是指开发要会写而且能写好单元测试,如果开发没有这个能力,有制度也没用,那要如何培养出开发这个能力呢?熊老师说:
一切的能力都是靠练出来的。很多人没有明白这个事情。公司也好,程序员也好都没有明白这个问题。找个人给你上一天课,听老师讲课听的很开心,没有任何用。唯一有用的就是练习。要想长本事,要想提高能力,微信群里面聊天没用的,参加培训没用的,听网课没用的,看书也不怎么有用,只有练。非常艰苦的练习。
我经常引用的就是《灌篮高手》安西教练的话:“投2万个球吧。”你没有投2万个球,学多少招式都没有用。
这就是为什么非表面敏捷很难的原因了,可以想一想,除去日复一日的工作,我们花在练习上的时间到底有多少?