Project management 扔掉你的初稿-有兼容的方法吗?

Project management 扔掉你的初稿-有兼容的方法吗?,project-management,process,methodology,Project Management,Process,Methodology,是否有任何编程方法考虑到第一轮编写的代码可能不是您想要使用的代码这一概念?在项目结束时,我从开发人员那里听到的最常见的一句话是“如果我能再做一次,我会做得很不一样。”这几乎完全反映了作者在写初稿后所经历的过程。不同之处似乎在于,编写人员随后会不断重写,直到他们准备进入编辑阶段,而开发人员似乎会编写初稿,然后通过测试和重构来完善初稿 我当然不喜欢尝试使用替代类比来定义开发过程,但我确实认为,认识到你的初稿只是为了把想法写下来是有价值的,你需要进一步重写以产生有价值的东西。我只是觉得我从来没有遇到过

是否有任何编程方法考虑到第一轮编写的代码可能不是您想要使用的代码这一概念?在项目结束时,我从开发人员那里听到的最常见的一句话是“如果我能再做一次,我会做得很不一样。”这几乎完全反映了作者在写初稿后所经历的过程。不同之处似乎在于,编写人员随后会不断重写,直到他们准备进入编辑阶段,而开发人员似乎会编写初稿,然后通过测试和重构来完善初稿


我当然不喜欢尝试使用替代类比来定义开发过程,但我确实认为,认识到你的初稿只是为了把想法写下来是有价值的,你需要进一步重写以产生有价值的东西。我只是觉得我从来没有遇到过一个编程过程或项目方法学能够认识到这一点,所以我希望Stackoverflow的广大集体意识可能知道我可以从哪里开始探索这一可能性?

原型设计似乎在某种程度上解决了这个问题。这个名称是一种叫做“一次性原型”的方法,它似乎与您的思维方式一致。

这正是Bruce Eckel提出的论点。

您所描述的被称为。这个想法是,一旦你有了初步的需求,你就可以创建一个系统的基本模型,向用户和/或客户展示最终的系统可能是什么样子,以及它可能如何工作(尽管没有真正的功能)。用户对此原型提供反馈


如果您想利用一次性原型,我的第一个建议是开始研究螺旋过程模型。然而,我不熟悉很多明确利用一次性原型的方法。更“敏捷”的方法论倾向于进化原型或增量原型。我个人使用一次性原型的唯一一次是仅对用户界面进行原型设计,因为底层系统已经在开发中,我使用白板、笔和纸进行原型设计。

我认为最好的方法是很好地进行模块化。例如,如果您正在编写内核,“获取下一个可用的空闲内存帧”函数应该驻留在它自己的函数中。这样,当你发现它是用一种非常糟糕的方式写的,你只需要简单的擦除(当然你使用的是版本控制),然后从头开始。这样,现有模块就可以作为测试新代码的一种方式存在


从头到尾再从头到尾是一种很好的方法,可以再次处理大部分相同的错误。

此外,这是布鲁克斯的想法之一,他自己在经过一些修改后发现不是最有效的:你可能听说过“在计划只扔掉一个系统之后扔掉两个系统”。幸运的是,多亏了敏捷方法论,现在很多这样的问题都可以克服。

你有没有任何链接可以通过布鲁克斯的过程得出结论?我在那里找不到任何详细的信息。似乎是随着螺旋模型的出现,然后定义了一个过程来重申你所做的事情,所以结论非常明显。这里有一个c2.com维基页面:/Here/is(一篇文章)“计算思维:编写软件就像……写作”。它试图向非程序员解释为什么不同的程序员产生不同质量的代码。读起来很有趣。这是我刚才的引文。