作为一名狂热的摄影师,我’ve learned a lesson that sometimes a well composed photo depends more on what is left out of the photo. More is not always better and can sometimes ruin what could have been a good composition.
例如,这张照片是照的。我意识到其中有分散注意力的元素(房屋,枯树),而且构图并不是创造出引人注目的照片的一种。突出显示的部分是最终作物的种植地。我遗忘的东西比遗留的更多,我相信最终的结果是更令人愉悦的构图。您可以看到最终图像 这里 但这与本文无关。
我相信这个概念可以应用于软件开发。我们谈论确定最小的可销售功能,这些功能是产品满足用户需求所必需的。这要求我们对遗漏的内容非常有意识。 Standish Group指出,从未使用过45%的软件功能,而始终或经常使用的仅20%。这些惊人的数字说明了在软件开发项目中浪费工作和时间的巨大潜力。我们必须成为一个更好的构图框架,该构图仅包含满足客户需求并保留其他所有要素所需的那些功能。
这些未使用的功能来自许多来源:产品所有者,客户,甚至软件开发团队。我们陷入了捕获所有东西,提供所有可能的功能或说服自己的陷阱,即在我们处理代码的某些部分时,只需增加一些新功能就不会花费多少成本。正如我们所相信的那样,这些不必要的功能会带来持续的成本。必须继续测试的未使用功能的成本,增加新功能的难度增加以及技术债务增加。
最近,我与一个客户合作,讨论是否要添加一项功能以允许选择多个项目,然后使用相同的信息进行更新,或者一次仅提供一项功能。从客户的角度来看,真正的要求是能够选择一个项目并进行更新。对多个项目执行此操作会很高兴,但是没有必要。经过大量辩论,产品所有者决定不添加多选功能。这不是一个最低限度的适销对路功能,应该忽略掉。这是一件美丽的事。
始终牢记必要的条件,并非常意识到添加功能的真正成本,这些功能看起来很容易交付,但对最终的构架没有帮助。残酷地裁掉不必要的元素,并专注于那些组成良好构图的项目。