前言
无论是哪家企业无论哪个行业可能都避不开效率问题,可能这也是大部分管理、老板最为看重的地方。原因就不多说了,相信都明白,我在这里讨论的特指软件团队开发效率的问题。
有时候看到现在各种996,还有猝死的新闻我就会想,这里面真正必须996的情况有多少呢?会不会是没有找到症结,缺乏有效的方法提高效率导致的呢?当然,这个话题可能就太大了,也不是我能在这里说的,我只是单纯的想,如果能有效的提高效率,是不是这些现象就会缓解一下?
想要提高效率,发现问题,解决问题就是我们要做的。如何发现问题并解决问题?对我来说就是这样一个过程:通过观察发现问题,分析现象解析本质,大胆假设,小心求证。没有什么通用的方法可以解决所有的问题,每个公司、每个团队必然存在其独特性。所以,在这里我只能根据自己的经验简单谈谈团队开发效率的问题。当然,肯定有人会说一切的根本就在于钱,钱给够了啥都有了。确实,可能有一部分情况是这样的,但是也有很多给了高薪依然效率低下的情况出现,钱只是一部分原因,绝不是唯一的原因。
混乱之像
就拿最流行的敏捷开发来说吧,在网上可以找到详细的定义与具体的实施办法,但是到了不同的团队,依然是各种变形各种花样层出不穷。这其实很正常,因为方法论落地就是落到具体的人身上,那不同的人得到不同的结果也不是那么难理解的了。我的观点是:如果敏捷开发过程(或者某一环节)影响了开发效率,那么就应该改变。生搬硬套就想实现世界大同的理想,我觉得还有点远。所以,想要提高团队开发效率,就需要先观察一下导致效率低下的现象。
功能过于碎片化,由下而上反复修改
在项目立项之初,由于对行业、产品缺乏足够的理解、认知,对项目的目标只有一个较为模糊的概念,从而造成需要从单一客户需求出发,反向填充产品的架构。这其实还算比较常见,毕竟产品也是需要不断打磨完善的。在前期,这样的方式会比较容易出结果,客户的需求可以较快的得到实现。而到了后期,这种方式可能给团队、产品造成灾难。原因很简单,不同的用户需求是不一致的,由下而上的方式必然会遇到需求冲突的现象。就算是同一个用户,在不同的时期其想法、需求也是会变化的。这就意味着开发团队需要不断的对已有的业务功能重新定义,重新规划,重新开发。那么效率低下也就是理所当然的了。
信息不透明,由上而下传递导致信息失真
很多时候需求的对接会集中在一个人或少数几个人身上。在接收需求之后需求对接人会根据自身经验给出业务逻辑,初步解决方案等信息,然后再进入后续的环节。相信大部分团队都是类似的情况,毕竟不大可能拉上全部开发去与客户开会讨论。
那么在这一块团队容易出现什么问题呢?容易出现信息传递失真,导致最终结果出现偏差。举个例子,很多综艺节目中都会有传话类型的环节,就是找一组歪果仁,一句话从第一个歪果仁开始向后传递,传到最后时通常与最初的内容已经相差十万八千里。当然,一个团队都是中国人的话,不大可能出现这么大的偏差,这里我想表达的是:每个人的认知、理解不同,层层传递消息的方式很容易因个体差异出现理解误差,从而导致结果偏离目标。
可能会有人说,每次传递都确保消息正确性就不会出现这个问题了,比如通过描述清晰、详尽的文档传递。是的,这样可以减少消息失真的问题,但是解决了失真问题不代表就没有其他问题。举个例子,产品接收需求后梳理了业务流程,制作了初步方案,下沉到开发团队。此时开发团队发现流程不正确或方案有漏洞,甚至根本无法实现。这种情况就会造成产品与开发的对立,然后双方就会进入拉锯战。于是乎大家都去打仗去了,哪儿有时间来做事呢?相信大家对于产品与开发之间的冲突都耳熟能详,那么由此导致效率低下也就不难想象了。