敏捷问题:敏捷是否相信以“快速而肮脏的方式”启动并运行事物?还是敏捷更喜欢从头开始进行牢固构建?还是这不是方法论问题,而是您逐案评估的问题?
从技术上说,我是在“重造”系统的基础之后,我已经构建了很多结构本身……这不是一项艰巨的工作……会敏捷地希望我首先确定整个流程,对其进行分析,进行调整,然后构建?我觉得从某种意义上说这是更好的方法……一旦建立了一个凌乱的系统,我就会更好地了解它是如何完成的……另一方面,它并没有那么有条理……只是好奇什么才是最好的发展实践就是在这方面。
敏捷问题:敏捷是否相信以“快速而肮脏的方式”启动并运行事物?还是敏捷更喜欢从头开始进行牢固构建?还是这不是方法论问题,而是您逐案评估的问题?
从技术上说,我是在“重造”系统的基础之后,我已经构建了很多结构本身……这不是一项艰巨的工作……会敏捷地希望我首先确定整个流程,对其进行分析,进行调整,然后构建?我觉得从某种意义上说这是更好的方法……一旦建立了一个凌乱的系统,我就会更好地了解它是如何完成的……另一方面,它并没有那么有条理……只是好奇什么才是最好的发展实践就是在这方面。
Answers:
敏捷方法是首先计划的。只是没有先计划好一切。实际上,您可以收集需求,设计,代码,测试,部署和演示。您只需花不到两周的时间就可以部署和获取反馈的最微小的功能就完成了所有这些操作。然后,您再次添加所有功能或调整旧功能。
关键是编写接受更改的代码,以便当您最终看到“整个流程应该如何进行”时,可以更改代码来做到这一点。这样,当“流量的流向”(或其他任何方式)再次改变时,就不会造成创伤。
你不能写得又快又脏。快速又肮脏为您提供ridgid代码。努力工作,快一点。通过不传播知识来保持灵活性。理想情况下,任何单个功能更改都应只影响代码中的一个位置。
您也不能花费大量的时间做任何事情,而只能进行计划。您可以计划,但是您需要能够更改计划。您需要快速发现更改计划的原因。当计划进行顺利时,没有什么可学的东西,那就是计划进行了太长时间。规划和编码必须彼此接近。如果您正在学习,则计划越旧,计划就越愚蠢。
从长远来看,您应该计划变得更聪明。编写灵活的代码。然后变得更聪明不会导致后悔。
我不喜欢大多数人的“快速而肮脏的”或“预先的大设计”。他们甚至不考虑还有其他选择。
敏捷就是要建立一个系统,在该系统中,即使是在开发的后期,变更都是微不足道的。这是通过以较小的增量块构建软件,并使用强大的自动化测试锁定这些块的行为来完成的。并在生产中使用频繁的自动化部署来验证这些变更的价值。
通过进行可靠的自动化测试,通过在更长的时间内进行增量重构,甚至更改架构中最难的部分也变得很简单。因此,即使您意识到可以在项目的中途完成更好的体系结构,实际上也可以相对快速地进行更改。
有人说,“预先设计”对敏捷性很好。但是,如果您打算以后迭代该设计,则仍然需要确保您的开发文化产生易于更改的系统。因此,“ SDUF”不会使对健壮的测试,先进的重构和连续部署的需求无效。
通过在系统中构建“易于更改”,您无需费心考虑项目的初始设计,因为以后可以进行更改。大多数人都将“快速而肮脏”的方法称为“尖峰”,仅当您稳定发现有价值的功能时才可用。但是,您不要将被黑客入侵的代码片段留在代码库中的时间过长,因为它们会使更改变慢。