从老蒋越级指挥说起
蒋介石喜欢越级指挥是出了名的,常常在战斗中绕过各战区司令,直接打电话到前线,给前线的师长、团长下命令,常常搞得前线指挥官一脸蒙蔽,屡战屡败,后来他被赶出了大陆。
有人说蒋介石越级指挥是他玩谋弄权的体现:各个司令都是我老蒋重金养起来的,你要听我的,你手下的兵也都是我的,我让你当司令你才当司令的,你不能拥兵自重。有人说蒋介石越级指挥是因为他过于自负,总认为自己是当世张良,能定胜负于千里之外,他认为前线将领能力太差,于是忍不住上线微操一把,过个当指挥官的瘾。当然要我说嘛,蒋介石也许就是为了防止各个统兵大员尾大不掉,毕竟就算他再怎么瞎指挥、再怎么失败,他至少牢牢把握着党国的中央大权呀,还是有本事的。
不说老蒋了,就说我们自己的事,我们一线程序员,分明就是老蒋手下的兵,那些市场、销售、客服部老蒋们天天把电话往我们前线打,小兵们眼花缭乱,不知所措。如果不做好需求管理,项目能一两个版本保持健康就不错了,往后就直奔着失控去了。
我因为年纪略大,经验稍多点儿,被任命为程序员兼需求分析、架构师、项目负责人、产品负责人。。。人少,title想加哪个加哪个,反正除了程序员其他都是“兼职”,反正是个活儿都得干,要干什么活儿就是什么角色。我时常安慰自己,既然领导说这是我负责的,那我就放手去做,有点困难啥的努力克服,实在克服不了忍忍也就过去了。辛辛苦苦顶着内外压力终于快要做出来了。每逢发版事特多,越到节骨眼上,就越是折腾,尤其是你正在改bug的时候,另一个开发来找你确认需求,测试还来调侃你的bug,领导来找你说数据库初始化的数据不对,市场还来跟你吐槽刚上线的功能不好。。。此情此景,华佗再世也没有回天之力呀。
开发问我,交互设计刚刚定下的功能做不做。我说他们没跟我商量呀?难道他们每次说话我都得竖着耳朵聆听,当个书记员,把他们说的话当中涉及到我的有关事项主动记下来?这有点强人所难吧。我顶着XX负责人的“称号”,你可以对我视而不见,虚职而已,光责任,没权利,深究起来什么都不是的,我有自知之名。但需求管理我是实实在在在做的,做的成效乍样另说,谁看不惯谁上就是了,不是个好差事。结果到好,几个人一商量,就把结果结扔过来,说商量一下这功能做不做。你们都把结果定下了,那还有什么好商量的?我做的是需求分析,不是书记员,我就算“兼”得再多,也不是什么活儿都干的。
要知道并不是我想做需求,更不是占着做需求分析的坑拒绝接受别人的决定,我写需求也是由领导委任的,领导随时可以重新指定他人做需求的。就这件事,领导确实是在试图说服我,让我接受他们的决定,但这决定很明显是不对的,稍一点拨就恍然大悟了。要知道做软件我们才是专业的,怎么经不住忽悠,被外行带沟里去了呢?不经过需求分析过的需求,都不能算需求,市场、销售、客服的意见顶多算“用例”。
这不是第一次了,上一次她们一拍板就把视觉图画出来了,标注也出了,我一心软,毕竟你们讨论也花了不少时间,那就这么做呗。开发人员吐槽不断,我也忍一忍,安慰一下,大家都不容易。结果我准备把新的设计补充到需求文档上去时,惊讶的发现我居然无法写出这个需求?!我对照着交互图写需求都写不出来,跟本就没考虑清楚的东西,实现人员能做出什么东西来,怎么能叫人不吐槽?这根本就是个不清晰的需求,你们讨论了半天就讨论出了这么个结果,这不是在应付嘛。
结果果然,那个功能上线不久,市场果然又来缠着我们改功能了,然后又讨论了个结果,二话不说要我加到需求文档上。感情只要和我商量一下要不要接受他们的决定,至于他们的决定是啥 ,这个不需要和我商量。我凭什么接受?我这要再心软接受了,我还有没有良心了?我这要再接受,开发人员要怎么看我,他们还能不能相信我了。
作为产品经理(大言不惭了,我不是),我不接受某个功能,不需要理由;我接受才需要理由呢。我做这个功能,那就意味着要投入,要多少研发人员的工时,多少测试工时,会不会增加工期、增加管理成本,研发预算够不够,做出来有没有效益,这都是需要考虑的问题。我做的产品好不好,效果乍样,自有我的KPI,有我的绩效考核去评定。优秀的产品经理不会来者不拒,不会承受不住外界压力,更不会成为传话筒,书记员。优秀的产品经理知道哪些功能该做哪些不该做,优秀的产品经理要懂得取舍,而且会为自己放弃了的东西和接受的东西感到同样骄傲。
作为项目负责人也好,需求人员也好,开发人员也好,我可以不在乎需求来源,可以不在乎谁提的,甚至可以不在乎它是否合理,不在乎它是对是错。我只关心能不能把这些需求管理好,所以我很在乎谁来写这个文档,并不是拿写文档这事儿来设障碍拒绝别人的决定。你都没和我商量,就给我一结果,三两句话,我显然无法充分理解你的需求,那我写出来的会不会有问题,我难道就把你这三两句话复制到需求文档里去就叫需求了?那我还有没有点良心了。事实上,我要想偷懒,我完全可以敷衍一下开发人员:你就照着他们的要求做吧!完了如果只为这一个修改发版本还好,要是还包含了其他好多功能的版本,测试人员很容易漏测这个功能。不要指望开发人员每个版本都能说清楚改了啥,那么多功能呢,万一开发人员觉得这个功能大家都知道呢?万一开发人员认为这个功能太小不值得提呢?测试就算看见了也可以装作看不见,既然需求文档没有,多一事不如少一事,反正大家都不按规矩来。不做好需求管理,这么下去搞个两三次这个功能就变成黑洞了,谁都不知道怎么回事了。久而久之,项目怎么可能不失控呢?
越级指挥,兵家大忌。因为将帅坐在后方,看到的战报是滞后的,可以做战略决策,不宜插手前线的战术行动。软件项目也一样,不能从表面去考虑功能,各有各的想法,要有取舍。当然凡事也有例外,林彪也特别喜欢越级指挥,但实话实说他打的仗都很漂亮,这是因为林彪经常深入一线,时刻处在前线指挥,本身就在一线。人家指挥官下命令是大项目经理管小项目经理,小项目经理管小组长。。。一层层管下来。林彪是一下子把下面的大小项目经理和士兵统统管理的井井有条,他那是正二八经的扁平化管理。这是真本事,需要对整个项目有深入的了解,如果是这样的同事来越级指挥,我们都是很欢迎的。