本末倒置
和大多数开发人员一样,我偶尔也会对一些项目管理策略感到困惑;本末倒置也不例外。
本末倒置是一种反模式,在这种模式下,根本不需要构建的功能也会被设计出来,从而浪费时间。在讨论长期技术计划的技术会议上,项目经理会讨论某个功能,并立即要求提供如何实现该功能的技术细节,这种情况尤其令我恼火。
首先,必须指出的是,优秀的开发人员应该离开,并有研究时间来提出解决方案。开发人员只有能够研究自己想要的解决方案,与开发团队一起外出,在网上寻找面临类似问题的其他人,然后带着统一的、架构良好的解决方案回来,才能变得更加强大。
我在伦敦举行的首届领先开发者大会上发表了演讲,在聆听其他人的发言时,有一句话让我印象深刻。这句话出自非洲的一句谚语,但在软件工程领域尤其适用:
“如果你想走得快,就一个人走。 如果你想走得更远,就一起走”。
在与多家公司的总经理和首席执行官交谈后发现,他们都希望董事会成员的个性能够得到广泛的平衡。首席财务官(CFO)可能是一个冷酷无情的完美主义者,只有在所有数据都完美无缺时才会感到满意,而首席运营官在按时完成任务方面可能是一个严谨的实用主义者。在开发团队中也是如此;让不同专业和个性的人广泛参与,提出各种想法,经过激烈角逐,最终形成一个全面的解决方案,这对大型决策非常有益,因为在这种情况下,不能指望开发人员一个人做出决定。是的,你可能需要一个过滤器,甚至说开发团队中只有一小部分人可能与某个特定决策相关,但总的来说,你的开发人员需要资源和时间来做出架构决策。
此外,做出此类架构决策的最佳时机是最相关的时候,也就是有必要做出决策的时候。
扁平地球人是指相信地球是一个扁平圆盘的人。当面对重力概念时,他们反而声称重力并不存在,并说这个平地只是以每秒 9.8 米的速度在太空中向上运动。面对更多的科学理论,他们反而创造出自己不合逻辑地拼凑起来的宇宙物理存在方式。当然,这种理论是荒谬的。我在这里想说的是,你应该根据合理的计算机科学(如已发布的 RFC)来做出决定,而不是临时创造自己的计算机科学。