根据项目的不同,如果您一个人在一个小项目上工作,那么在开发过程中进行技术研究和调查可能很有意义。尽管不是敏捷的一部分,但是当然可以使用敏捷方法来对此进行一些控制。但是,这使得该过程非常难以预测/或时间框。如果一个人从事一个完全属于您的小项目,可能会更好,甚至更快,让您的需求在学习的过程中得以展现。在此过程中使用良好的原则,并保持一致,您无需进行太多重构。
在工作中,我们使用看板,Scrum和更传统的瀑布方法。根据项目的不同,我发现具有明确定义的前期要求的复杂开发并非最适合敏捷,但很多人会不同意。
在我们甚至在一个敏捷项目(除了最简单的项目)上开始工作之前,我们都会创建一些文档。我们有一个模型(如果以ui为重点),一组需求和一个功能规范。
将要求开发人员从功能规范中创建技术规范,在此过程中,我们将指定技术并进行所需的任何前期研究。这个过程对我来说似乎非常重要,因为它使您有机会查看需求/功能规范中的差距-并向具有经验和系统知识的人员做出重大技术决策,以做出此类决策。
不过,重要的是,功能规范可能是项目符号列表,而技术规范通常是模型,其中包含一些项目符号和技术指导,在某些情况下可能只有3或4页。
即使在运行敏捷项目时,我们也会创建文档:
- 所有文档都有费用。
- 反对不断变化和定义不明确的高层次需求是有代价的。
- 以上各项之间的正确平衡取决于您的项目,文化和人员。
- 我们记录文件及时,文件过时了。
- 我们的文件勉强够用。
- 我们不维护或更新这些文档,我们也没有付出太多努力。他们很小。我们希望将它们扔掉。
- 我们消除了诸如技术决策,朦胧的需求和预先架构等重大未知因素。
- 在开始之前,我们知道我们正在开发什么。
- 我们信任开发人员围绕文档做出明智的决定并讨论任何问题。
- 我们重视沟通而不是文档,因此我们希望所有参与者都经常进行沟通。
- 我们在开发后,而不是在开发中,而不是之前记录系统(概述)。
您会看到我们的敏捷过程中有一个小瀑布。
如果您是一个人工作,请创建一个前期模型(图表!)并进行试验并选择技术,然后在具有高层需求的概念时,继续前进并以敏捷的迭代方式进行开发,但要考虑好的原则和原则。保持一致,您将需要减少重构,而在重构时需要更多重构。
但是总的来说,如果涉及到实际成本(不是业余爱好),则在编写代码之前先知道自己在开发什么,但不要浪费太多时间来编写文档,因为随着您改变主意,文档将很快变得多余,并且应该当您变得更加了解情况时,请在开发过程中改变主意。您的项目可能会发生很大的变化,但是要从一个良好且定义明确的基础开始。