软件开发态度

2004年3月8日

软件开发中的许多争论都基于说话者是拥有指导态度还是赋能态度。这些不同的态度会影响对语言、设计、工具、流程以及更多方面的选择。

以下是一些这种二分法的例子

  • 几年前,Joel Spolsky 关于异常的帖子引发了一场辩论。他不喜欢异常,因为它们可能被滥用,导致代码混乱(指导)。Bill Caputo 指出,异常在使用得当的情况下,可以使生活更轻松(赋能)。
  • 静态/动态类型化辩论中的一些论点也提到了这些观点。一些支持静态类型化的论点谈论了它们如何防止人们犯某些错误(指导),而动态类型化支持者则指出静态类型化限制了一些有用的习惯用法(赋能)。
  • 敏捷流程是以人为本的(赋能),而计划驱动的方法则力求确保即使是糟糕的团队也能完成可接受的工作(指导)。

这些并不是固定的态度。人们在某些情况下是指导性的,而在其他情况下是赋能性的。但我认为这里存在着一种深层的趋势,通常是性格问题,它贯穿了我们如何进行软件开发的许多讨论。(我非常赞成赋能,如果你还没有看出来的话。)

你可能会认为,对开发人员行为的所有限制都意味着指导态度,但情况并非如此简单。例如,考虑内存管理。你可以把它看作是一个指导功能:程序员不能被信任正确地管理内存,所以剥夺他们分配内存的能力。但我认为内存管理是一种赋能技术——它消除了我不愿担心的事情,这样我就可以更好地专注于我关心的事情。Steve 很好地将这种想法与问题和困难之间的区别联系起来

2014年3月11日重新发布