架构重构内功心法第二式:合纵连横

合纵

架构重构是大动作,持续时间比较长,而且会占用一定的研发资源,包括开发和测试,因此不可避免地会影响业务功能的开发。因此,想要真正推动一个架构重构项目启动,需要花费大量的精力进行游说和沟通。注意这里不是指办公室政治,而是指要和利益相关方沟通好,让大家对于重构能够达成一致共识,避免重构过程中不必要的反复和争执。

一般的技术人员谈到架构重构时,就会搬出一大堆技术术语:可扩展性、可用性、耦合、代码很乱…但从过往的实际经验来看,如果和非技术人员这样沟通,效果如同鸡同鸭讲,例如:

技术人员说:我们系统现在的可扩展性太差了,改都改不动

产品人员想:可扩展性,扩展什么都东西?不就是找个地方写代码么。

技术人员说:我们的可用性太差,现在才3个9,业界都是4个9

项目经理想:什么是3个9,什么是4个9,不就是多个9么。

技术人员说:我们系统设计不合理,A业务和B业务耦合!

运营人员向:A业务和B业务本来就是相互依赖的啊,耦合有什么不对么?

除此之外,在沟通时还经常遇到的一个问题就是凭感觉而不是凭数据说话。比如结束人员说“系统耦合导致我们的开发效率很低”,但是没有数据,也没有样例,单纯这样说,其他人员很难有直观的印象。

所以在沟通协调时,讲技术语言转换成通俗语言,以数据说话,以业务说话,是沟通的关键!

上篇博文的M系统为例,我们把“可扩展性"转为“版本开发速度很慢,每次开发都需要考虑是否对门户有影响,是否要考虑对其他业务有影响”,然后我们还收集了一个月里的版本情况,发现有几个版本设计阶段讨论1周甚至2周,而开发才有2天时间,一个月里面才做了4个版本,最极端的一个版本开发两周,讨论两天,然后等了一个月才和门户系统一起上线,产品和项目一听都呆了。

连横

有的系统还需要和其他相关或者配合的系统协调。由于大家都是做技术的,有比较多的共同语言,所以这部分的沟通协调相对来说容易一些,但也不是说想推动就能推动的,主要的阻力来自“这对我有什么好处”和“这部分我这边现在不需要改动”。

对于“这对我有什么好处的”问题,有的人会简单理解为这是自私的表现,认为对方不顾大局,于是沟通的时候将问题人为拔高。例如“你应该站在部门的角度来考虑这个问题”“这对公司整体利益有帮助”等。这种沟通效果其实很差,首先是这种拔高一般都比较虚,无法明确,不同的人理解也不一样,无法达成共识;其次如果对公司或者部门有利,但对某个小组没用甚至不利,那么可能是因为目前的方案不够好,还可以考虑另外的方案。
那么如何才能有效的推动呢?有效的策略是“换位思考、合作共赢、长期关注”。简单来说就是站在对方的角度思考,重构对他有什么好处、能够帮他解决什么问题、带来什么收益。

上篇博文的M系统为例,当时有另外一个C系统和M系统通过数据库直连共用数据库,我们的重构方案是要去掉两个系统同时在底层操作数据库,改为C系统调用M系统来写入数据库。这个方案对C系统来说,很明显的一点是C系统短期的改动比较大,很明显的一点是C系统短期的改动比较大,要将十几个功能都从直接读写数据库改为跨系统调用接口。刚开始C系统也觉得重构对他们没有什么作用,后来我们经过分析和沟通,了解到C系统目前也深受这种架构之苦,主要体现在“数据经常出错要排查”(因为C系统和M系统数据都写在同一个数据库,逻辑很难保证完全一致)、“要跟着M系统同步开发”(因为M系统从数据增加表或者字段,C系统就要从数据库自己读取出来,还要理解逻辑)、“C系统要连两个数据库,出问题不好查”(因为C系统自己还有数据库)…这些问题其实在M系统重构后都可以解决,虽然短期内C系统有一定的开发工作量,但从中长期来看,C系统可以省很多事情,例如:数据排查主要是M系统的开发人员来做,通过M系统获取数据,无需再关心业务逻辑。通过这种方式沟通协调,C系统很乐意跟我们一起重构,而且事实也证明重构后对C系统和M系统都有很大好处。

当然如果真的出现了,对公司或者部门有利,但对某个小组不利的情况,那可能需要协调更高层级的管理者才能推动,平级推动是比较难的。

对于“这部分我们现在不急”的问题,有的人可能会认为这是在找借口,我也不排除这种可能性。但就算真的是找借口,那也是因为大家没有达成一致意见,可能对方不好意思直接拒绝。所以这种情况可以参考“这对我有什么好处”的处理方案。

如果对方真的有更重要的业务需要处理,此时还是要学会“换位思考”,大部分重构系统不是到了火烧眉毛的时候才进行的,而是有一定的前瞻性的举动。如果对方真的有更重要事情,要明确重构启动的时间,如“下周一”、“三个月后”等,但一定要是一个明确的时间,不能是“有空了”,“以后”,“过段时间”等。

除了计划上灵活一点,方案上也可以灵活一点:我们可以先不做这个系统的重构,先把其他需要重构的做完。系统重构是一个庞大的工作,需要改动的地方较多,分阶段处理,在风险规避,计划安排方面更加灵活可控。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值