在从事个人中型项目时,在开始编码之前您会指定什么?
我指定了功能规范:
- 我担心如果我刚开始编码(这是“如何”),可能太容易忘记我想要编码的“为什么”和“什么”(对于“相当复杂”的软件,经过几个月或几年可能需要开发)。
- 我也想或多或少地了解我将要开发的“范围”:为了大致评估(到一个数量级):
- 会有多大
- 能不能完成
- 是否值得入手
- 可以先开发它的哪个子集
为了风险管理,我要补充一点,我想要开发的一些东西意味着使用一些我不熟悉的软件;为了尽量减少与此相关的风险,我还做了一些一次性原型设计。
如何?
我用笔和纸概述了一个功能规范。我写的一些是高层次的(业务级别的“愿景”文档),还有一些是低层次的,更像是设计(一些 UI 细节)。有时我停下来想知道如何组织它,但接着又继续说,推理每个页面或多或少地与每个主题相关,我可以稍后再思考如何组织页面(很像你的维基,也许)。
我事先做了也没有指定软件架构:
- 我从一个基本架构(一些小组件)开始开发,然后添加代码;而且,当我添加代码时,如果任何组件变得太大和太复杂,那么我将它细分为几个更小的组件......这是一个进化过程......正如 Systemantics 中所说,一个可以工作的复杂系统总是会进化来自一个有效的简单系统。
- 我没有记录架构;或者更确切地说,体系结构的唯一文档是代码本身:例如,源代码被安排到源目录、命名空间和 DLL 中的方式。
我确实对现在的架构有理论依据,但我没有记录这些原因:
- 我是唯一的开发者
- 实际架构由代码记录
- 架构的原因在我的脑海中,并且可以通过诸如源代码中的命名约定以及各种组件的依赖关系之类的东西[重新]发现
如果(仅当)我不是唯一的开发人员,那么我可能认为值得记录架构及其基本原理。
我上面所说的关于软件架构的内容也适用于软件处理的数据。
至于测试,我写了一点代码,然后测试;或编写一个测试,然后编写将通过该测试的功能。我不是在做“大爆炸集成”,即几个月的写作没有任何测试。
我的流程中最大的弱点之一(或缺少的东西)是提前估算工作量,然后根据估算跟踪实施......这是这个“个人”项目流程与我的付费项目之间的区别之一d 在商业上为别人做。不过,我怀疑这是否好:如果估算是商业上的最佳实践,那么也许我“应该”在个人项目中也这样做。