软件的生死
软件是有生命的,最终走向EOL。
那如何定义软件的“衰老”呢?
是功能不够用,满足不了需求?还是功能太多,架构太复杂,无法维护呢?
显然是“后者”,如果一个软件因为功能不够用,满足不了需求,那么它连“成长”的机会都没有。
所以我这里指的软件都是在市场成功后,快速下滑的。
这种经过“年富力强”,最后走向“衰老”,而且几乎是必然的。
软件产品经理的诞生是业界挽救“衰老”的已经验证的成功经验。
并不是产品经理有能耐,不然也不会说“人人都是产品经理”。
产品经理的角色设定,真正改变了软件需求的供需关系。
产品经理折射的玄学
没有产品经理的时候,程序员会根据自己的喜好开发软件系统,产生了大量“假设需求”,“万一需求”和“将来需求“,这些会使软件系统“衰老”加速。
为什么有独立产品经理时不同呢,因为产品经理要间接麻烦程序员开发需求,所以产品经理的大量“假设需求”,“万一需求”,“将来需求“没法都给到软件开发人员,只能低三下四次给几个,就在筛选这几个需求的过程中,“需求控制”的意义达到了。
没有哪个程序员愿意在高强度工作下,还能把产品经理的“假设需求”照单全收,都是推三阻四,提三个留一个,并不会都收下还连夜加班多送两个。
当然要达到这种控制的平衡,产品经理和程序员地位一定是一致的,虽然有“经理”二字,但一定是平级,否则悲剧还是会重演。
如果没有产品就没办法了么,有!
那就是程序员的“克制”,自己克制对技术完美,架构完美的追求,克制对假设需求,万一需求,将来需求的恐惧。敏捷理论的“拥抱变化“并不是鼓励“需求变更”,而是说“将来”真的到来时再考虑这个需求。
程序员的克制
除了产品经理,玄学,还有几个方法:
- 让程序员自己实现自己提出的需求
- 让程序员自己测试自己开发的系统
- 让程序员自己维护自己开发的系统
DevPM,DevOps,DevTest 这不容易实现,其实就是独立开发者。
所以也不难理解独立开发者的软件水平要高与团队系统一个等级,独立开发者的时间开销和收入也必然要求他做最有价值的需求。
比如张小龙当年的Foxmail,最后变成了PM头子还能把微信需求把持得这么好。
现实情况下一个大系统一般不可能一个人开发,除非克服人性,极度“克制”。
当然一个没有产品经理的团队也要学会“克制”,“克制”软件系统在当下的需求。
预言
最后预言一下Hadoop全家桶快走向“死亡”了。
不是因为它不支持什么功能,而是支持的功能太多,引入组件太多,架构复杂,依赖复杂,维护困难,性价比低。
一个刚过“年富力强”的软件系统,过于贪婪,膨胀太快,“死亡”只会来得更快,拭目以待。