午休的时候,在一个DBA群里,大家聊起了DBA转产品经理的一些困难。勾起了我对过去两年工作的一些回忆。当然,这中间既有痛苦的也有开心的。可是如果真让我现在建议DBA们去转产品经理,我更想聊聊我自己曾经被劝退的瞬间,转型之前,请仔细斟酌。
不会写代码
不是开玩笑,真的写不出来。从毕业开始做运维的我,开发能力已经比自己读大学的时候退步到忽略不计,毕竟大学时候还要自己编译C程序往板子里烧。工作之后只剩下复制脚本内容,做点简单的修改。
所以在转产品经理之后,虽然不用我review代码,可是在各类功能设计的讨论会上,都是两眼一抹黑。对于没学过的语言,到底是一个什么逻辑,全靠自己猜,实在读不懂就去问研发同事。有时候一大段代码很多人来回改,很可能出现的结果是一个大模块要问好几个同事。
一些核心功能模块到底是什么样实现逻辑,客户前线的同事可以不了解,但是我必须要明白。代码能力几乎0的时候,真的就是只能靠问靠猜,严重制约了我对产品内在逻辑的了解。
如果你和我一样,代码能力接近于0甚至干脆都不是计算机专业出身,作为一个DBA,请慎重选择转数据库产品经理。
前线乱提需求
前线的客户经理或者售前通常都会带回来各类客户需求,既有功能的又有性能的甚至稳定性的。对于产品经理来说,一个很麻烦的事情,就是要把这些琐碎又不确定的东西和当下的产品关联起来。
数据库作为基础软件,和应用软件不同的是,很多功能之间具有着极强的依赖关系。前线看到的是功能A,产品经理看到的可能是C推导出B,B关联出A。比如客户要一个增量备份,那我得先有全量备份。增量备份得能恢复到任意时间点,那就要考虑要不要用归档日志来控制时间戳。
很多时候,前线的同事见完客户,只言片语几十个字,并且告诉我,这个一定要尽早做,然而我得先去准备沥青水泥还有其他建材,再把它们铺到泥土路上,等道路铺好了稳定了,才能用大卡车跑在上面拉货。强行用野路跑几十吨的大卡车,这车一定跑不起来。
这时候就要做减法,哪些能做哪些做不了。然而有时候,产品经理恰恰又是没有决策权的,往往费了半天口舌,就是说不通。面临这种尴尬境地时,我总想告诉周围朋友,别轻易往产品经理转。
工时超期
大家都知道,数据库软件和业务软件的开发难度不在一个维度。业务软件是很多确定内容,业务逻辑是确定的,业务结果是确定的。但是数据库不同,大家都知道从A到B点,但是我时走路过去还是骑车过去还是开车过去,这些都要自己去探索。有时候一个功能好几种模式来回尝试,最终找到最适合的那个。
这就注定了,数据库开发的工时往往估算就不能非常精准。哪怕是资深的程序员,也会经常出现误判。一个功能影响另一个,一环扣一环,最终导致整个项目开发进度。周一得到的答案是周末提交PR,到周五告诉我,周末指的是下下下周末。这些事都是再平常不过了。往往到这时候,是砍掉部分功能还是分配更多时间资源甚至这个延后发布,都是困难的抉择。
《孤注一掷》里有两句话,人有两心,贪心和不甘心。自己在提需求的时候有多贪心,这会就有多不甘心。明明自以为算无遗策,却总是在不经意间翻车,这种极致的挫败感会把我经常一个迭代周期内的工作成就感全部抵消。
也许做DBA,这个月你实现了0事故,让你很开心,也许完成了一个重大项目的支持,让你获得业务部门的感谢。但是做数据库产品经理,可能更多的是这种无力感。
无迹可寻
作为DBA,我们都会去维护一些很成熟稳定的系统,功能和使用往往已经很完备。
但是从头设计一个数据库功能,就需要产品经理去自己调研,自己思考,自己设计。设计的好不好,只有放到客户的生产环境验证。甚至有时候,一些功能是你的知识盲区。
这时候会有一种深深的孤独感,一个功能实现了什么是表象,里面还有实现方式、人手分配以及和整个数据库设计思路要保持一致的内在要求。往往一个新功能,要来回拉锯好几个版本才算成熟。
随着开发进度的推进,这种孤独感会越来越深,甚至倍感无力。无所适从的时候,我甚至会去问:为什么是我要决定这些?如果我做错了该怎么办?
每当这时候,我又很怀念DBA时候的自己。虽然也会遇到各种难题,但是总有文档可以参考,总有经验比我更丰富的人去请教,总有可能绕开这里用其他方式解决。但是当你直面一个全新的功能时,这些都是绕不开的事情。
劝退,太劝退了,我一天总是在问自己好几次,为什么要选择做这个。
奇葩队友
虽然总说产品和研发相爱相杀,但是那是建立在两者话语权没有较大差异的时候。
如果你要面对的是一个话语权比你大得多的研发时,就只能单方面祈祷对方不要出什么奇葩决策,不要和你在数据库的认知和理念上有什么太大的分歧。否则真的会每天都是屋漏偏逢连夜雨。(具体有多坑,可参考我之前在墨天轮写的文章)
当你提出一个基于自己长年在生产环境总结的东西,对方却拿他的理由反驳的时候,有一种鸡同鸭讲的感觉。做过DBA的朋友相信都知道,即便是同一个功能,POC测试和长期在生产环境跑,终归是两件事。而且在成规模地使用的时候,有些东西又成了另一个概念。
和队友们的思维差异太大,谁也不服谁就会成为注定的结果。对方比你话语权大,大概率是最后按照对方意思来。你会内心很憋屈:这里明明是个坑,我都遇到过无数次了,怎么他们就是不信。
折腾到最后,我心里只有一个想法:惹不起我还躲不起吗,不干了。
背锅时刻
都当产品经理的人了,那自然就是产品的第一责任人。遇到事情自己负责,在正常不过。
没错,我入职的时候也是这么想的。但是经历了前面5个时刻之后,其中一部分锅甩给我的时候,多少心里还是会有些不服气。“让我接这口锅,给我这么高权限了吗”,“定方案的时候你们可不是这么说的”,“需求本来就不合理,能做出来就见鬼了”。
诸如此类情绪总会油然而生。这一口口锅,仿佛是一张张催命符,告诉我在这时日不多了。
拿千里之堤溃于蚁穴当长堤崩溃的借口,终究不能让人信服。同样,压垮骆驼的,也不是最后一根稻草,而是每一根稻草。
除非你有把这些稻草一根根扔掉的本事,否则我劝你三思,别轻易放下你的DBA工作,来做数据库产品经理。
尾声
正文到此。仿佛又让我重新经历了一遍这几个瞬间。如果你已经做好了这些准备,那么数据库产品经理确实是一个可以挑战的岗位。如果你觉得自己不是很想去面对,那么不妨三思而后行。




