文章首发于公众号:松花皮蛋的黑板报
作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解
我们在开发过程中面临的最大挑战是什么?或许你之前没有认真思考过,那最好把目光转移一下,然后想一下,再回来阅读这篇文章。
一百个读者心中有一百个哈姆雷特,你可能认为最大的挑战是部门协作墙,或者是产品的需求规划不清晰。这些答案都有一定的置信度,但是我想说的是,我们正处在一个快速变化的互联网时代,新想法比别人验证慢一步,可能你就是那个出局者,所以需求方迫切希望能在高速公路上换轮胎。但是,请记住,我们处在一个充满不确定的世界,需求是不完全确定的,研发对接是不确定的,很多因素都是不确定的,导致梦想是美好的,现实是残酷的。
不确定性意味着我们以为这座山的山顶是终点,可偏偏相邻的那座才是。我们以一个探路者的身份在未知的道路上前行,为了不偏离航向,我们应该保持小步快跑,当获得足够反馈信息后发现需要做出变化时还能够调整。也就是说,我们应该为改变做好准备,以一种增量的方式完成目标,这是一个自适应的反馈控制过程,好比平时使用的洗澡水,我们无法第一时间保证出水的温度,需要时不时用手感触温度进行调节,直到能满足需求。
那我们应该做哪些努力才能拥抱变化还能掌握变化呢?秘决就是打破确定性思维。
确认性思维容易让我们不愿意轻易尝试,极力在避免失败,害怕不确定的后果,固步自封。打破确定性思维需要我们以最小成本快速试错。确定性思绪也容易让我们以为那片产业蓝海中目前没有强有力的竞争者,我们只要制定好大而详尽的计划,制定繁复的流程和检查机制,对进度进行精确的把控,对任何偏离的追究,只要这样做,最后一定能成功。打破确定性思绪需要我们抛弃这些思想,我们应该制定周期性的计划,保证是以小粒度演进化的,并且能接受意外变化并以最小的代价快速响应。最后还有一点,抛弃繁复的流程和检查机制,把掌握权归还给团队,让其基于简单规则自我管理。
打破不确定性思维并不意味着我们要在看不见的地方进行妥协,当意外变化来临时,对代码质量进行妥协会导致后续难以维护,另外能接收意外变化并不意味着放弃对时间要求的坚守,那毕竟是我们的立足之道。
打破不确定性思维的方法描述都非常抽象,我们应该如何理解呢?接下来我将举例说明。
第一个游戏的规则是是这样的,四个客户代表和其他开发者分别分组坐落在一个圆桌上,最旁边的开发者使用扑克牌进行发牌,并依次传递到其他开发者手中,每经过一个开发者都需要将扑克牌进行翻转,其中每个客户代表只关注一种花色的扑克牌,当客户看到第一个开发者抽牌花色为他所需时开始计数,集齐时计数结束。正常的洗牌发牌,所有客户代表集齐扑克牌大概需要四分钟。如果我们对扑克牌按一定规则的花色进行叠放,也就是客户一所需的花色所有扑克牌在最上面,接着就是客户二所需的,仔细在脑中回放一下整个流程。如果这样做时间可以缩短到四十秒,是不是很神奇,为什么会这样呢?你得到什么样的启发呢?
在第一个游戏中,后者对任务进行了拆解和优先级调整,保证了客户代表依次快速集齐扑克牌,虽然推迟了其他客户代表开始计数的时间,但是缩短了每个客户代表完成需求的时间周期,也就是说更加关注价值流动,对资源流动关注度下降了。
第二个游戏的规则是这样的,从参与者中选出一名协调者,然后让其他参与者任意选择两名小伙伴,并当众告诉协调者,然后协调者去协调每个人的站位保证参与者和选择的伙伴之间的距离是两两相等的,因为可以有交集,所以这个小游戏看着挺复杂的。可能你会这样想,我都知道我应该站在哪了,当协调者在调整其他人位置时,我只能干着急,当协调者出错了,也只能默默抓狂,那如果去掉协调者这个角色,通关时间是增加了还是缩短了呢?你可以在脑中模拟一下整个流程。实际上,这个时间会大大缩短,是不是很神奇,为什么会这样呢?你得到什么样的启发呢?
在第二个游戏流程中,协调者充当一个中心化的角色,而我们是被控制的,并且协调者是单点地受苦受难,当去掉协调者后,我们都非常了解游戏规则和通关要求,有着共同目标,有很强的参与感,所以可以很快通关。但是没有协调者后,你是否可靠呢?或许并不是你不可靠,而是别人不知道,那就让工作更加透明化,让信息更加透明化。
好,今天的分享希望能帮助你培养敏捷心态,欢迎分享给你的朋友们。
文章来源:www.liangsonghua.me
作者介绍:京东资深工程师-梁松华,在稳定性保障、敏捷开发、JAVA高级、微服务架构方面有深入的理解
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。