敏捷和软件技艺是我们努力改进和推动软件行业向前的两个非常好的例子。我们花了很多时间谈论编写代码、自动化测试、自动化部署、工具、各种技术,以及所有相关的流程。这很有意义,因为最终目标是通过软件让人们获益,而可用的软件是关键。但我们不应该忘记,在软件开发的流程中某些层面是很少有人真正有经验的。想想你将如何回答下列问题。
1.你上次写代码是什么时候?
- 今天早些时候就写过,我是软件开发者,所以这是我工作的一部分。
2.你上次重构是什么时候?
- 我一直注意让自己的代码尽可能好,这包括必要的重构。提取方法、重命名、上升、下降……这些我都知道。
3.你上次测试你的代码是什么时候?
- 过去,我们会在编写产品代码的过程当中或之后编写自动化测试,来进行持续的测试。单元测试、集成测试和验收测试我们都会用到。
4.你上次设计东西是什么时候?
- 我一直在做,作为软件开发者,这是我工作的一部分。在编码之前,我需要思考它会如何工作,不管是画草图还是使用TDD。
5.你上次从零开始设计一个软件系统是什么时候?我的意思是,承接一系列明确的需求,真正从无到有的创建?
- 好吧,在我目前的项目没有太多机会,但在业余时间我会为开源项目工作。只是我自己用的。
6.你上次从零开始设计一个会由一个团队来实现的软件系统是什么时候?
- 嗯,那不是我做的。
面对现实吧,无论预先设计还是演化设计,也不管是单打独斗还是集团作战,大多数软件开发者都不会频繁地在一张白纸上从无到有地设计软件。