鹰是世界上寿命最长的鸟类,可以达到70岁。然而在它40岁的时候,他必须面临一个艰难的选择。他的喙又长又弯,爪子老化,无法捕猎,羽毛又厚又重,很难飞翔。要么等死,要么用自己的喙击打岩石让他脱落,让爪子蜕皮重生,啄掉羽毛让他再生,这是一个痛苦的过程,150天后,一个崭新的雄鹰重生了。
    这是一个励志故事。
    我们每一个人都在不断的重塑自己,隔一段要重新审视一下自己,修正自己的问题,让自己上一个台阶。就像我们写代码,画图一样,修改一个版本就升级一个小版本号,修改的问题很大的时候,就从1.0升级到2.0,升级一个大版本号。
    前一阶段,接触高层人脉和资本层面的操作有点多,浪费了很多精力,却忽视了企业本身的核心价值,也让自己的定位发生了偏差。反思过后,明白自然才是最好的,是什么样就是什么样,做回最好的自己。
    近期给自己制定了几个任务:
    1、定下心来,解决公司几个拖拉的疑难问题;
    2、静下心来,帮助同事成长,不是填鸭式,不是讲大道理,重点讲方法,润物细无声,潜移默化的影响。
    3、重看《大秦帝国》和《天道》。

    解决问题的方法有很多,归纳起来我们依靠的无外乎:常识和推理。以我们最近碰到的两个案例来简单说一下。
    我们在调试手持机3G模块的时候,发现第一次上电,拨号,上网都很正常,很稳定,但是断电后再次拨号就再也无法正常拨号了。由于没有很好的思路,这个问题拖了几天没有解决。
    我解决问题的思路没有定式,原则是最快最小代价的解决。我介入后,分这么几个步骤进行。
    1、中兴这个3G模块,我们的合作伙伴也在用,没有这个问题,电话确认后,排除模块本身问题;
    2、把合作伙伴的固件拿过来测试,排除固件版本的问题;
    3、通过查阅资料与确认,排除USB供电问题;
    4、通过跟技术讨论,3G的第一次上电和启动是放在eboot中完成的,很自然想到拿出来完成是不是还有这个问题呢?立即排除,通过测试发现在系统启动后再加载3G驱动,再反复上电,拨号,上网,就没有问题了。
    以上4个步骤用到的都是常识中的排除法,缩小故障范围,最后把问题定位到eboot中启动3G驱动,解决起来自然就容易多了。在实际应用中,还有替换法,比如怀疑某个模块有问题,可以直接替换来验证,排除和替换交叉使用,效率会提高很多。
    
    另外一个案例,是手持机在使用过程中,偶尔会速度变得越来越慢。
    1、第一感觉可能是内存泄漏造成的,但这种现象竟然在关机再开机后还有,排除;
    2、这个问题上批机器没有,而这批现象很难复现,所以拖拉了很久都没有处理好。
    3、这种情况,依靠常识很难解决了。在一件事情做了很久,或者做的很累了,那一定是方法出了问题。这时候,要进行推理了。
    4、我们发现读卡的单片机在出问题的时候,会不停向外发数据。那么推理初步怀疑,是单片机的质量出了问题,但这不是我们希望的结局,现场几百台机器都更换的话,显然是不可行的。断电测试,单片机仍然会发数据,那么串口部分是不是有问题呢?把串口设置为IO输入模式,发现数据没有了。
    继续推理,为什么断电后还有数据发出来,一定是有电源过去了,导致单片机或者串口动作了。测量电压发现有2.1v的电压过去,这个电压是通过串口漏电过去的。从理论上推理,串口漏电可能造成单片机局部启动,处于一个不稳定状态,导致串口乱发数据。
    推理成立,可能造成问题。那么接下来就是如果解决和规避了。
    在上电前把串口设置为IO输入模式,上电后,再设置为串口模式,把收到的第一批串口数据扔掉,再处理的就是正确的数据了。
    事后再深入推理,为什么上一批没有问题,这一批就有问题。可能的原因是单片机芯片本身加工批次问题,或者加工工艺提升,导致实际的工作电压阀值下降,以前5v工作的单片机,2.1v根本不可能误动作,这批就有可能局部动作了,导致了问题。
    
    有时候问题很难明确的说是硬件问题,或者软件问题,即便有时候是硬件问题,但由于解决成本太高,我们可能需要通过软件去包容这个问题,避开他,核心是快速低代价的处理问题。
    常识需要我们靠日常不断的去积累,推理需要缜密的逻辑思维,掌握了这些方法,可用之四海,举一反三,善莫大焉。