排队理论的反思(1)
如果你正在某快餐厅排队等待点餐。就在这个时候,来了10个人加塞在你前面,你会怎么做?心里骂娘千百遍,还是大声呵斥并阻止这样的行为?
在软件开发过程当中,如果发生这样的事情,比如你的团队正在进行手头的开发工作,你的老板有个“十万火急”的需求,要2天内完成。这个时候你会怎么做?忍了,还是拒绝?亦或是其他的处理办法?
本系列文章将会从几个问题出发来描述排队的现象:
为什么会形成排队 排队有哪些后果 如何改善排队现象 为什么会形成排队 当系统的处理能力跟不上服务对象的到达率时,就会产生排队现象。(这句话也可以理解为新来的服务对象的数量要大于系统的平均处理能力)排队现象不仅仅出现在现实世界中(如开篇的例子),也出现于数字世界中。(比如软件开发,IT行业等等)那么让我们先回溯一下历史,排队理论是怎么出现的?
早在1909年,Agner Krarup Erlan就发表了一篇关于排队理论的论文。在论文中,他研究人们打电话的方式,发展出人们需要等待多久的公式。
再次发散一下,受到美国福特汽车生产的影响,许多企业认为(包括福特)大批量的生产可以降低单件的成本,从而可以降低整辆汽车的总成本。这句话的前半部分是成立的,但是单件成本的降低,不一定会带来整车成本的降低。(具体原因后面会进行分析)现在的软件行业仍然被这种思想困扰。
后来丰田汽车独创了丰田生产系统(TPS)模式,以及时生产(Just In Time)和自动化(Jidoka)为支柱,持续改善为基础。分析TPS发现,丰田是全局考虑,从而保证生产的每个环节都得到优化,并且一旦某个环节出错立刻停止生产(避免更多的浪费);而福特的理念,属于局部优化,每个环节都做到最优化(批量生产从而降低成本),但失去了全局的集成考虑和整体优化。
回到我们的主题上,目前行业的排队现象多是受到批量生产思想影响而造成的。如果能很好的学习丰田模式(精益)的话,也会较好的解决排队现象。
在生产行业况且存在如此多的排队,那么软件开发行业是怎么样的呢?据不完全数据统计,99%的软件开发企业都存在排队现象。这是因为在软件开发当中,排队是不可见的,并且很少会有公司对此进行衡量,那么允许排队现象的存在(并且越来越严重)便是司空见惯的了。
总结一下
造成排队的原因主要有三:
系统的处理能力达不到(跟不上)服务对象的到达率 批量生产思想的影响(单件成本下降,从而整体成本会下降) 软件开发行业的排队现象不可见 说了这么多排队,排队理论、现象;那么是否排队就一定不好,排队会有什么样的后果,以及如何优化排队呢?
敬请期待本系列的第二篇,排队会产生哪些后果?