现在很多路口都装具有倒计时功能的红绿灯,显示还剩多少秒绿灯将变成红灯。绿灯刚亮的时候,倒计时没有显示;当到达一定时间,比如还剩余30秒的时候,倒计时开始显示,当倒计时变成0的时候,绿灯变红灯。这对行人来讲是非常有用的,行人可以根据倒计时来决定是否赶上这个绿灯过马路。比如还剩30秒的时候,可以在稍微在人行道(注意不是斑马线)跑一下,然后到达斑马线上再从容地走过马路,这样时间正好。
以前住在浦东的时候,很多这种红绿灯的倒计时是30秒,我能完全控制根据这个时间来决定是否赶当前的红绿灯。搬到闵行后,很多这种红绿灯的倒计时只有区区5秒,也就是说在绿灯变红灯的时候,只有5秒的提示时间,而走过马路的时间至少要15秒。这就意味着,很可能你看到当前还是绿灯,然后选择过马路,但是走到马路中央的时候,绿灯就变成红灯了。在马路中间看到只剩5秒,如果着急跑过斑马线的话,那是非常危险的,因为另外车道上的车可能已经开始启动了。显然,设计这个东西的人没有考虑到这一点。
作为设计红绿灯的人,要随时让行人知道红绿灯的进度,比如尽早让行人知道还有多少时间绿灯变红灯,这样行人就很从容的过马路。即使中间出点小意外,行人也能很容易处理。同样的,在工作中,作为员工的就好比是设计这个红绿灯的人,你你老板就好比行人,随时让你的老板知道你工作的进度和当前状态,即使你的工作中出点小问题,你的老板也不会感到supprise,也能很好的和你一起处理,将影响减到最低。这就要求我们随时向老板汇报工作,经常把你的老板放到CC列表里面,让他知道你工作的进度,不要让他感到惊讶。
那么再回到红绿灯的问题,既然不能根据红绿灯自身来判断还剩多少时间,那我是怎么过的。我这时会观察以下情况:
- 斑马线上的行人,如果斑马线上的人比较少,说明等在那里的人都已经过去了,也就是说绿灯快结束了,如果要过的话,就要赶紧了。
- 马路上的车辆,如果另外一个车道的上的车比较少,则说明很有可能这个绿灯才刚刚开始。那么可以慢慢地走过去。反之,如果停下来的车已经很多了,那说明这个绿灯快结束了。
上面两种方法是通过间接的手段来判断红绿灯的内部状态。在上下班高峰期还是比较准,但是如果有些情况下,比如这个路口的车辆本来就不多,那么这种间接的手段就不准确了。
这让我想起了我们曾经做的一个项目。系统中有两种操作A和B,这两种操作同时进行的话,会使得系统崩溃。这要求在启动操作A的时候先检查操作B的状态,如果B已经完成了,则可以进行A操作。因为是遗留系统,没有接口去获取操作B的状态,能想到的办法就是通过查看系统日志去取得B的状态。读取和分析日志的复杂程度超过我们的想象,最要命的是在客户的系统中,日志有时不完整,或者B操作的日志因为系统的问题没有记录下来,导致了我们的程序在客户现场出了一些问题,而且定位和分析的代价相当大。所以,在复杂系统中,直接获取的系统的状态是非常重要,不到万不得已,不要采用间接的手段去获取,否则以后维护的时候有得你受的。