通用建议的局限性

2004年5月12日

作为软件开发领域的作家和演讲者,我发布了大量关于我们行业的通用建议。无论是像解释DecoratedCommand的工作原理那样具体,还是像思考你的SoftwareDevelopmentAttitude那样哲学化,我一直在不停地发表意见。此外,我仅仅是众多通用建议提供者中的一员:作者、分析公司、记者,他们提供的建议比任何人都能阅读的还要多。

尽管有大量的通用建议被发表,但它们在价值上存在着显著的局限性。

  • 通用建议与它在特定环境中的应用之间总是存在着巨大的差距(这就是为什么顾问会因为说“视情况而定”而被嘲笑)。我无法了解你项目中的所有特定问题和约束,因此你必须接受我半生不熟的评论,并通过决定它们如何适用于你的情况来完成它们。我倾向于非常谨慎地对待任何听起来像“总是这样做”的东西,并投入大量精力来思考导致一种或另一种选择因素(“视情况而定”是一个好的答案,如果你随后说它取决于什么)。但是,无论我多么出色地描述了备选方案之间的驱动因素,最终都是读者必须根据自己的情况来判断这些因素的权重。
  • 每个人,包括我,都会受到其经验的限制。而每个人在软件开发方面的经验都非常有限。一个人在职业生涯中所能做的事情是有限的,而且肯定不足以说出确定的结论——尤其是在行业变化如此迅速的情况下。我通过从我的联系人网络中获取大量专业知识来缓解这种情况,但这在整体范围内仍然是一个很小的数字。(我越来越依赖我的网络汇总的信息,而不是我自己的直接经验。部分原因是我现在做更少的实际开发,部分原因是网络比我有限的经验更能提供信息。)
  • 许多人质疑作者的动机。我读过最有趣的事情之一是人们为我主张某种观点而编造出复杂的别有用心。对此我无能为力,我知道我尽力不让金钱影响我的言论,但这并非我能证明的事情。像许多人一样,我担心分析公司与他们撰写报告的供应商之间尴尬的财务互动。试图不受金钱的影响是微妙的,需要集中精力。

因此,在存在所有这些局限性的情况下,值得问一下通用建议是否有任何价值?我认为通用建议是有价值的,因为它为特定决策提供了一个起点。通用建议会提出你必须在特定情况下考虑的问题,从而减少因你没有想到而遗漏某些东西的可能性。为了发现尽可能多的这些问题,有必要尽可能多地寻求你所能吸收的通用建议。

但真正重要的是那些潜在的问题,而不是我的结论,这就是为什么我认为我的价值在于解释决策的驱动因素,而不是提供最终的决策供你遵循。我更希望读者理解导致我得出结论的原则,但采取与我的结论不同的行动,而不是读者在不理解这些原则的情况下遵循我的结论。