不要依赖“魔法出现”

Don’t Rely on “Magic Happens Here”

如果你看过足够多的任何活动、流程、或纪律,它们都看起来很简单。一个没有开发经验的经理会认为程序员做的事情很简单,同样的,一个没有管理经验的程序员也会这么看待经理所做的事情。

编程是一些人在一些时候做的事情。其中困难的部分——思考——是最不容易被外行看到和赞赏的。几十年来,已经有许多尝试想要移除这些熟练思维的需求。最近的也是最难忘的一个是格蕾丝·赫柏(Grace Hopper)致力于使编程语言不那么神秘——一些人语言这将消除对专业程序员的需求。结果(COBOL语言)在随后的几十年中为大量的专业程序员的收入作出了贡献。

消除编程以简化软件开发是个长久的愿景,对于熟知其(内部的)复杂程序的程序员而言,显然很天真。但是导致这些错误的心理过程是人性的一部分,程序员也会想他人一样容易出现。

在任何项目中,有很多潜在的事情是个别程序员没有积极参与的:从用户中引出需求,获得预算审批,设置构建服务器,部署应用到质量保证和生产环境,从旧的流程或程序中迁移业务,等等。

当你无法积极参与到某件事中时,就会无意识地趋于假设它们都很简单或着会有“魔法”出现。尽管魔法持续出现让一切安稳。但是——它们通常是“何时”而不是“如果”——魔法的停止了,该项目就会陷入困境。

我知道项目于会消耗掉数周开发者的时间,因为没有一个人了解该怎样加载它们依赖的“正确”版本的dll。当事情开始断断续续地出错时,在有人注意到正在加载“一个错误”版本的dll之前,团队成员还在任何地方查找。

其它部门运转平稳——项目准时交付,没有推迟夜间调试会议,没有紧急修复。如此平稳,事实上,高级经理都觉得这事能“自己运转”,它们都不需要管理者了。然而6个月内,该部门的项目看起来就像组织的多余部分一样——太迟了,疯狂连续的打补丁。

你不需要理解所有的让你项目工作的魔法,但理解它的一部分也没坏处——或者感激那些懂得你未知领域的人。

最重要的是,确保当魔法停止的时候,它可能再次启动。

0%