您的位置:首页 > 其它

从蚂蚁觅食浅谈研发过程

2013-07-12 11:17 78 查看



原文出处:http://www.6sigmafuture.com/ . 转载务必注明原作者和出处,尊重原创作者的辛勤劳动。

我常常想,我们整天工作着,忙碌着,日复一日,年复一年,也看着别人和我们一样在工作着,忙碌着,我们甚至没时间停下来思考,你忙,我忙,他也忙,看起来,我们的团队,我们的部门就像一群忙忙碌碌的蚂蚁。其实,我们和蚂蚁的想象之处还不光在忙碌这点上,我们先来看看蚂蚁觅食的故事。




上图中就是一个蚂蚁觅食的示意图,分别为黄色,黑色,和蓝色的3条线表示蚂蚁可能从巢穴到食物的路径,起初生物学家面感觉很不可思议,大部分的蚂蚁都是按照途中PathB的最接近的路线走,小小的蚂蚁是如何有这么高的智能的呢?

蚂蚁并非是千里眼,一下子就看到远处的食物,而且蚂蚁也并非有灵敏的嗅觉,能闻到远处的食物,实际上蚂蚁所能感知的范围很小,我们将上图中的每只蚂蚁加上它的感知范围,便得到下面的示意图。




在上面这个觅食图中,当蚂蚁在其感知范围内有食物信息的时候,它就会沿着这个信息素走下去找到食物。我们可以得到如下一些结论。

1.第一只发现食物的蚂蚁来自于它的探索精神,对于未知的领域,没有谁会告诉你如何做就一定能成功,成功来自于机会和永不放弃的探索。

2.后面沿着已经成功地路线跟着走的蚂蚁们则是利用已有的信息为自己的成功缩短时间,信息也是生产力。这就是所谓“成功吸引成功,民工吸引民工”

3. 如果后面的蚂蚁都是沿着第一个成功发现食物的蚂蚁足迹这样走下去的话,必然带来2个问题:

a.第一次寻找到食物的路线未必是最佳的,但蚁群永远按照并非最佳的路线搬运食物,就如同图中的PathC

b.大家都来抢同样一块食物,资源很快就耗空,很快大家又都饿肚子了

蚂蚁还是聪明的蚂蚁,它们并没有发生上述的情况,它们随着时间的推移,对于同一块食物总是会接近最佳的路径,也同时会寻找其它的食物,这来自于蚂蚁在寻找食物时候的2个特性。

A)不走回头路,可以失败,但决不再已经失败的道路上再失败一次

B)既会沿着已经成功地道路走,但也会出现其它随机性,我们可以称这个不走寻常路的特点为创新,去探索新的成功之路,虽然可能头破血流,一无所获,但也可能在痛苦之后柳暗花明。(创新犹如研发过程中的预研,可能不知道结果,但是为了革新还是要不断去探索。穷则变往往并不是最佳的,真正到了穷尽的地步往往你已经没有变的机会)

当有2条及以上的线路被发现的时候,在相同的时间内,短的那条路径因为走得次数多,便会有更多的信息留下,那么后来的蚂蚁就会沿着信息更多的路径走,这样随着时间的推移,整个蚁群就会沿着逐渐最佳的路径搬运食物。

4,单个蚂蚁并非有多高的智能,或者说并非能总领全局,它们局限在自己的视野,它们只遵循3条原则:

A.在自己的感知范围内,利用别的蚂蚁提供的信息素进行简单的推理。

B.当自己找到食物的时候,在路径上提供信息素。

C.尽量沿着已经被证明可以找到食物的道路走,但不忘了探索新的道路。

这个看似简单的规则,在多个蚂蚁共同去觅食的时候,却涌现出非凡的智慧及生产力。蚂蚁觅食给了我们一个启示,就是对于团队,对于复杂系统的能力,我们除了按照传统的统计学来分析,同样可以采取系统论的方法,研究单个个体的行为,从而分析多个个体在一起所涌现出的能力。

对于蚂蚁,我们现在不防抽象的分出如下3种:

灰色蚂蚁:灰色代表消极,我们将这种蚂蚁看作庸庸碌碌,不去思考

行动规则:1.能搬到食物就行

2.以前怎么搬食物的,现在还怎么搬,即便有更好的路径也不关我事

黑色蚂蚁:黑色代表内敛,这种蚂蚁优秀而不喧哗,勤勤恳恳

行动规则:1.在所能感知的范围,选择成功的最佳路径

2.已经证明失败的道路不会再重复走

3.在没有道路的时候,能够勇于探索

4.在搬运食物的道路上,随机进行创新探索。

蓝色蚂蚁:蓝色代表着冷静,智慧,能承受压力又极具创新探索精神

行动规则:1.在所能感知的范围,选择成功的最佳路径

2.已经证明失败的道路不会再重复走

3.在没有道路的时候,能够勇于探索

4.在搬运食物的道路上,主动进行创新探索。

(这里的分析和《谁动了我的奶酪》中的小老鼠很类似,关键点还是是否愿意接受改变,这是第一步。在危机都还没有来临的时候就自动主动改变,这是第二步。对于一个团队,灰色蚂蚁是消极的。而黑色蚂蚁和蓝色蚂蚁则不能缺少,蓝色蚂蚁的多少跟企业或团队研发的产品,市场,环境,竞争多种因素相关)

有了上述3种蚂蚁,我们简单分析不同蚁群会涌现出的能力:

蚁群1-全部是灰色的蚂蚁,这样的团队只能说是一群蚂蚁的叠加,没有合作,没有耦合,根本就产生不了1+1>2的效果,团队能力,团队效率非常低。

蚁群2-全部是黑色的蚂蚁,这样的团队初期会遇到困难,挫折,但随着时间的推移,团队会不断成长,成长到一定程度出现稳定的非最优的过程能力,但其发展受限于随机的创新能力。

蚁群3-全部是蓝色的蚂蚁,这是个天才的团队,因为蓝色的蚂蚁极其稀少,全是蓝色蚂蚁的团队就更稀少了,通常这样的团队都是几个天才的开拓者组成的小workgroup,而且随着团队的成长会有一批黑色或者灰色的蚂蚁加入,这个团队最重要的特点在于其主动的创新探索,这相当于加速自然进化的速度,加速成功。

如果把我们的团队比作蚁群,那么实际上这个蚁群并非全由灰色蚂蚁或者黑色蚂蚁或者蓝色蚂蚁单独组成的,通常是混合而成,而且不同的团队成员在不同时期的表现也可能不一样,可能一会更像是黑色的蚂蚁,一会更像是灰色的蚂蚁,而这种变化除了来自于单个个体的随机性以外,最重要的来自于流程的约束。

我们谈流程,谈过程,通常的视角是从产品实现的角度来思考和制定,我们常常忽略另外一个视角,就是单个个体是否能在这样的流程约束中达到上述所说的黑色蚂蚁或者蓝色蚂蚁的境界。

如果我们忽略了上述的视角,可能会导致蓝色的蚂蚁失去了它的主观能动性而成为黑色的蚂蚁,而黑色的蚂蚁失去了随机的探索,而逐渐变成灰色的蚂蚁,逐渐会发现其实我们看似庞大的团队就是几只黑色的蚂蚁加上一群灰色的蚂蚁,缺少创新,缺少探索,缺少思考,团队的进步缓慢,并且拥有稳定而不好的过程能力。

反过来如果我们的流程,我们的规则能够让灰色的蚂蚁逐渐养成一点创新精神,分享精神而变成黑色的蚂蚁,能够让黑色的蚂蚁产生主观能动性,养成目标驱动的习惯而变成蓝色的蚂蚁,那么这个流程才是优秀的流程,透露出的文化也是优秀的文化,团队的能力会快速增长,团队不光是优秀产品的输出机器,也是优秀人才的输出机器。

达到上述的目标,并非很容易,事实上单个蚂蚁看似简单的行动的规则,也是自然进化的结果,同样我们的流程也需要进化,只是不同的是,我们有了相对的标准,我们不需像蚂蚁一样经过千百万年的自然进化,完全对所有的随机性进行试探,我们只需要把握好上述所提的从单个个体分析集群涌现效应的视角,那么我们就能够输出可操作同时又有效的流程。

举个例子吧,技术积累是很多部门很多团队都在搞得东西,那么真正的效果如何?都知道这个东西好,但真正实施起来,效果并非如开始时想象的那般,甚至到后来都成为平时工作的一个拖累,这是技术部定的KPI指标,开发部开始还有一些,后来就逐渐提交不了了,花时间又没有多少用,于是就有了凑数字的例子,硬凑上去的技术积累有什么用呢?于是来主动看技术积累的人又少了?继而产生恶性循环,好好的一个东西就逐渐被人不重视了。

那么问题在哪呢?我们可以把技术积累比喻为蚂蚁在觅食过程中的信息素,这个信息素将有助于我们找到食物(达到目标),然而我们和蚂蚁相比却有欠缺之处:

1.蚂蚁在自己狭小的触觉范围内能感知有信息素,而我们的团队成员有时候连技术积累放在什么地方都不知道,或者说根本没有一个地方放技术积累。

2.蚂蚁在自己狭小的触觉范围内能识别信息素,蚂蚁能够识别哪些是食物的信息,哪些是巢穴的信息,哪些信息更浓,哪些信息更淡,而我们的技术积累全堆在一起,没有分类(或者分类不详细),没有权重,导致我们识别困难,利用也就困难。如果我们将技术积累进行一个详细的分类,详细到可以对应我们的产品生产过程,比如对于软件研发的技术积累,将所有对内存操作的放在一起建立索引,对信号量操作的放在一起,进程通信的放在一起等等,然后每篇技术积累都打上权重,评分,是3颗星还是4颗星,这样在研发过程中,研发人员能立即找到最浓的信息素,信息只有被利用才能体现它的价值。

3.蚂蚁能够主动利用和分享信息,而我们未必能达到,蚂蚁的这个主动性是自然进化的结果,我们却没有,改变这一点则需要处罚和奖励双管齐下,如何保证主动利用信息,一个措施就是当发现在某个地方走了弯路范了错误,而技术积累中已有同样的信息的时候,那么个体就需要受到惩罚;如何保证主动分享信息?一个措施就是当成员发现某个问题更好的解决方法,如果能分享出来,写了技术积累,则需要及时表扬及时奖励。同时技术积累也可由直接领导在适当时候要求在某方面进行总结而产生。

上述3点缺一不可,只有保证了上述3点,我们这些蚂蚁才能高效的觅食,技术积累才真正起到其该有的重要作用。

上述只是研发过程中的一个例子,再比如编码,大部分研发人员整天接触的事情,这个和蚂蚁觅食有什么关系呢?其实我们的编码都会受到已有代码的影响,已有代码给我们最重要的信息是体现在代码中的架构信息,框架信息,那么这些就相当于蚂蚁觅食中的信息素,我们都会顺着这些信息素逐渐累加代码,这就是为什么有些函数1000多行大家还逐渐往上加一样,大家都是这么加的,这就是很浓的信息素,自己也知道其实应该用另一种更好的方法更好的框架分解,但改起来又太麻烦,于是大家都按照不尽合理的框架继续添砖加瓦,到最后可能出现牵一发而动全身,辛苦建设的大厦摇摇欲坠,甚至有一天轰然倒塌。所以软件的架构设计必须提到足够的高度,另外就是发现代码编写的不合理需要及时更正,代码不光要满足显性的如功能性的要求,也要满足隐性的如可扩展性,可维护性等要求,否则我们就提供了一条条在非最佳路径的信息素,这将会导致后面的研发人员沿着不好的道路继续走下去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: