在《你是实干家还是理论家?》一文中,Coding Horror 的 Jeff Atwood 对敏捷宣言中的“可以工作的软件胜于面面俱到的文档”产生了共鸣。他通过引用 John Taber 的一篇文章,对交通运输学科研究和交通运输建设工程进行了对比。正像交通运输学科研究的产出是文档,而不是交通运输一样,软件中的计划、设计和讨论阻碍了软件构建的工作:
从建筑桥梁到构建软件是很简单的概念切换。在软件领域,有一些开发人员流连于空泛的架构层面,在这个超凡脱俗的层面上,计划和讨论是软件永恒的主题,而且从来不会付诸实际构建。在会议室或者邮件列表中对软件进行反复无尽的讨论,看起来像是有用的工作——但真的是这样吗?在你拿出可运行的东西给世人体验之前,你真的干什么事情了吗?
在文章评论中,Mike 指出了对立看问题的危害。有些人可能会想象着敏捷宣言强调一些要素就意味着其它要素没有了价值,但事实绝非如此。并不是说软件构建 中的文档、架构、设计和讨论都没有价值,而只是说可工作的软件是其目标,如果在构建中产出的过多文档妨碍了这个目标的实现,那就应该调整工作优先级。就像 Jeff Atwood 总结的那样:
所以,你应该扪心自问:你是实干家还是理论家?理想情况下,二者的特性你应该或多或少兼而有之,正如我在这里多次提到的那样。在你的团队中多少有点讨论和计划的确是有价值的。但是,如果你非要对某一个青眼有加,对另一个弃若敝履,在产出有用、可工作的代码时就会犯错误。
虽然如此,但围绕这个话题越来越多的讨论暗示着找到说和做之间正确的平衡是一门艺术,它仍需要开发人员在生活中不断的碰壁摸索。
查看英文原文: Doer vs. Talker: Working Software over Comprehensive Documentation
评论