公司级的软件过程实践系列文章,请参见连接。
背景
随着互联网行业的快速发展,软件开发也变的为快不破。而对于我们的软件工程规律来看,软件开发从某个角度来说还是一份良心工作。也就是说互联网行业从业人员工作绝大部分内容是实现业务功能。互联网行业随时随刻都在变化,那我们的软件功能也需要能够跟随着业务的不断变化而不断的变化。
思维方法
这样就带来了一个问题:
人的步伐是永远跟不上思想的脚步的。
这句话作者是总结了软件行业的现状而说的。对于软件行业来说我们都想做的更快、更高、更强,但是对于现实中的节奏来说不可能是一蹴而就的。事物的发展都是需要有一个过程的,一蹴而就的事情的机率几乎是不可能。从软件行业举例:软件出现的时间并不是很长,不像建筑,冶金,制造行业出现的时间长。在软件行业发展的不长的历史中,不像其他行业那样它到现在为止没有一套通用的软件过程管理方法论。各种个样的技术还在层出不穷,试图在软件行业内解决其他行业无法解决的问题。
认知不足
现在整个社会不认同软件是一门工程学科。不应该具备工程所需的严谨性、实事求是的能力,所以造成了很多问题。例如:一个软件开发人员需要搞定EA,ACRH,BA,PM,Code,Test,OPS,QA,SCM等等角色。在这些角色中每个角色都有角色中需要完成的工作,而现在外部人员干的最主要的事情是在想打断软件人员工作的时候打断软件人员工作,最后因为打断工作而造成的问题再由软件人员承担。
软件从业人员参差不齐
不相信现有的行业领先最佳事件,习惯于被行业外部人员的节奏所裹挟。现在互联网行业内几乎所有的人都不认同自己是在做一个严谨的工程学科,而是认为自己是一个蓝领。这个认知决定了行业的高度,决定了互联网软件行业的发展。
快的层次
互联网是大家认为的大量创新,大量机会的行业,就像美国建国初期的西部淘金一样。而在淘金热的工程中有几个人的名字被记住,多少人真正的从淘金热中获取了财富?在放下行业中那些浮躁的,你怎么为公司提供更好的平台,为公司发展提供更加长期的支撑?
现在随着阿里系企业对与中台概念的大力推广,而形成了中台热的环境下。大部分公司都处于技术处于创业初期阶段,而想实现平台期所需要做的工作。业务处于高速发展阶期,但是业务想做平台期的事情。总结一句话就是野心太大,能力太小。而对于大部分公司来说,基本上都会一直处于初始阶段而停步不前。
对于这些野心太大,能力太小的该怎么办呢?第一不要被这些野心太大的人所干扰,第二想尽一切办法满足业务高速发展的需要,追重要的是为技术驱动转型做相关的积累工作。上面三点的原则,具体的实施方法定义做如下说明:
每个业务、产品功能、系统都应该从MVP开始,由MVP验证市场、客户的反馈。在获取反馈后再判断是否需要加入我们的主业务体系中。这一步的目标是尽量减少浪费,减少对于一个不确定是否会得到反馈的业务、系统投入过多的精力与时间。现在的互联网更多的方向是不断的尝试业务、盈利等内容,所以应该以最小的代价得出一个确定的方向。在MVP验证通过之后,在加入到我们的业务体系中。加入业务体系时需要按照加入规则进行相关的重构工作。使其形成真正的业务能力,可以被其他的业务线中引用。
试验田/MVP
绝大部分公司、公司内部项目在这一步踏步不前。之所以在这一步踏步不前最大的原因在于外部人士认为做到这一步系统就算做完了,开发团队就没有作用了,就一天闲着还领高工资了。另外一个原因是因为开发也是这么认为的,开发到这一步之后开发人员之后就不知道该干什么了。这是因为在这一步开发人员没有从一些教科书中学习到这只是一个开始。
在这一步其实是作者之前提的实验田的概念。试验田就是为了验证公司新开展的业务,验证业务线,验证盈利模式等等需要快速验证的工作。所以对于公司内部业务来说,业务都应该现在实验田中孵化,并在实验田中真正验证业务服务是否真正值得发展、值得深入挖掘。
实验田的特点是以业务实现为目标。所以,所有的技术都应该用熟悉的,不进行微服务拆分工作,不拆分数据库,不设计缓存。总结就是指考虑功能需求,不考虑任何非功能性需求。在这种情况下需要限制MVP系统的受众,不能扩散到太大。扩散到太大的时候就可能造成各种问题。
公共平台
在实验田中服务的项目经过验证后,可以进入系统的公共平台。这一步的主要目标是将业务形成能力,形成可以公用的、通用化的能力。然后在这个能力的基础平台之上再去做新的业务的试炼工作。
基于上面的说明。公共平台的特点是一步一步形成的,而慢慢的会形成一个特定解决方案下的公共平台。这个平台也需要一个完善的规划,这个规划与公司的业务蓝图需要有关系。如果没有公共平台规划可能会形成一个不知道要做什么的平台。服务提供能力参差不起的情况下,是不能为业务创新提供能力的,所以是不能解决现实中需要降本增效的问题。这样下来服务就和原来的目标不一致。
公共平台平台是一步一步逐渐形成的。不过在进入公共平台前需要先做一些事情。具体工作内容可以参考0.微服务方法论-1.微服务落地事项)相关的工作。一切可以提供出来能力的服务都可以进行公共化。在这个基础上建设一套完善的技术,业务公共平台。
技术驱动
凯文·凯利:所有的公司最终都会像软件公司。这句话展示出大家都在涌入软件行业。大家都涌入之后相伴着就会有同质化,低质量的竞争,那现在我们应该怎样和这些同质化,低质量的公司拉开差距呢?可以参照04.软件产品公司竞争力)。这片文章中说明软件公司的最终竞争力技术竞争力,也就是怎样深耕行业、深入的行业和技术结合。
总结
所有的事情都是需要原则性指导的,在方法论上指导工作的演进可以很好的控制与管理。在实施过程中遇到的问题方法论的最佳实践中都是可以进行借鉴的。作者认为借鉴前人的经验解决我们的问题才是最快的解决方案。不要想某些人提的我们就是要摸着石头过河,而不远处就有被你视而不见的坚固的桥梁。