救援队长!
我将在这里担任Obvious队长,并说有一些中间立场。
您确实希望为将来而建造,并避免陷入技术选择或设计错误的境地。但是,您不想花3个月的时间设计应该简单的东西,也不希望为一个快速且肮脏的应用程序添加扩展点,该应用程序的使用寿命为2年,不太可能有后续项目。
很难找到区别,因为您不能总是预测产品的成功以及是否需要在以后扩展它。
立即构建,如果...
- 该项目将被废弃
- 该项目寿命短
- 该项目不应具有扩展名
- 该项目没有风险影响值(主要是图像)
通常,现在应该开发内部项目或为客户构建的项目。确保有明确的要求,并根据需要与之联系,以了解需要什么和不需要什么。不想花太多时间在“好东西”上。但是也不要像猪一样编码。
如果可能有必要并且值得努力,则将“一般问题”留待以后处理:
为未来而建
- 该项目将是公开的
- 该项目是要重用的组件
- 该项目是其他项目的垫脚石
- 该项目将包含后续项目或具有增强功能的服务版本
如果您正在为公共事物进行构建,或者将其在其他项目中重复使用,那么错误设计会再次困扰您的可能性更高,因此您应该更加注意这一点。但这并不总是可以保证的。
指导方针
我想说的是,尽可能地遵守以下原则,并且应该让自己处于设计高效,适应性强的产品的位置:
- 知道YAGNI,
- KISS,
- 每当您想挠痒痒并想想其他的东西时,请写下来。回头看看您的项目要求,并问自己是否添加优先级。询问他们是否增加了主要业务价值。
我知道我个人倾向于过度思考和过度设计。将想法写下来确实很有帮助,如果我需要其他功能,经常会重新考虑。通常,答案是否定的,或者“以后会很酷”。那些最后的想法很危险,因为它们停留在我的脑海中,我需要强迫自己不要为它们计划。
编写代码时最好不要过度工程,也不要束手无策,这是最好的设计方法。很好地打破东西下来,以后可以延长,但没有已经开始考虑他们如何部件可以在以后扩展。您无法预测未来。
只需构建简单的东西。
Dilemmata
过度工程
程序员在进行这样的项目时通常会遵循这种趋势吗?
真是的 这是一个已知的难题,仅表明您在乎产品。如果您不这样做,那就更令人担忧了。关于少是否总是真正地多,如果差总是真正地多是分歧。您可能是麻省理工学院或新泽西州的那种人。这里没有简单的答案。
原型制作/快速除尘/少即是多
尽快将可行的例子拼凑成一个典型的趋势吗?
这是一种普遍的做法,但是并不是如何处理绝大多数项目。尽管如此,在我看来,进行原型设计是一种好趋势,但存在不利的一面。在管理压力或时间限制下,将快速而肮脏的原型推广到实际产品中,或将它们用作实际产品的基础可能很诱人。那时原型可以再次困扰您。
原型制造有明显的优势,但也存在大量滥用和滥用的可能性(许多与先前列出的优势完全相反的结果)。
何时使用原型?
有一些关于使用原型的最佳项目类型的提示:
在与用户进行许多交互的系统中,原型制作是最有益的。
原型在在线系统的分析和设计中非常有效,尤其是对于交易处理,其中使用屏幕对话框的证据更为明显。电脑和用户之间的互动越多,收益就越大。
“到目前为止,快速原型的最有生产力的用途之一是作为迭代用户需求工程和人机界面设计的工具。”
另一方面:
用户交互很少的系统(例如批处理或主要执行计算的系统)几乎不会从原型开发中受益。有时,执行系统功能所需的编码可能过于密集,而原型可能提供的潜在收益却太小。
如果周围有绿色怪物,请确保将原型保持在预算之内...