从一段技术交流群里的聊天说起:
单片机崩溃了!
然后被经理修理了。
其实讲这段话的工程师水平也还是相当不错的,有多年工作经验的资深工程师了,为什么还会犯这种错误呢?无独有偶,以前正好看到过正点原子的创始人在调代码的过程中也犯过同样的错误,被折磨好几天。为什么会出现这种情况呢?
首先,我们的教育与实践脱节比较严重。这是一个比较大的话题了,往往重理论,轻实践。比如一个学生可能学了多年的英语,单词语法背了一大堆,刷起题来也不在话下,可是见了老外可能基本的沟通都有问题,老外来了一封邮件,理解还真不一定准确。其实使用语言的最重要的目的是为了沟通与交流,想想语言从无到有,本身就是不断在发展变化,过于注重语法真的有很大意义吗?我们经常把手段当作了目的,最后把目的倒忘了。
学校里教的和实践有多大距离,在此我们再举一个例子,就是滤波电容的问题。只要是硬件工程师都用过滤波电容,可是有多大比例真正理解了呢?下面这篇文章中我们初步的介绍了一下滤波电容,其实大家知道这仍然是不够的。当我们用一个电容时至少还要考虑电容的种类,内阻的大小,电压裕量,温度稳定性,长时间稳定性,震动可靠性,是否符合RoHS标准,合理的价格,是否容易采购,是否容易替代等等问题。
当然在科技飞速发展的今天,新技术新产品不断涌现,指望学校能快速跟进也不太现实。
其次,是一个信息传递的问题。本人有幸在工作中接触到大量的客户案例。有不少情况都是一个客户在重复犯另一个客户已经犯过的错误,而且有时候代价是极其惨痛的!再举一个亲身经历的案例。
当时是在研发一个新型的火灾预警系统,整个研发过程很顺利,也通过了各种测试和第三方认证,有几套系统已经安装到现场了。可是,糟糕的事情发生了,系统每个一段时间就会重新启动一次。如果碰巧在深更半夜,真跟闹鬼一样!这个事情对公司的形象造成了非常负面的影响!
最后解决这个问题用了多久呢?
在投入大量人力物力后,花了半年左右的时间。对,你没看错,半年左右。我们一个人能工作多少年呢!让人苦笑不得的是,最终发现原来有个工程师非常自信的删除了驱动中的几行代码,而这几行看似无用的代码,实际非常重要,它是为了规避芯片中的一个BUG,就这样,我们中招了!
其它公司有没有可能犯类似的错误呢?只能默默祈祷了。
我们相信,在嵌入式开发领域,有大量的价值巨大的信息,没有分享出来,而这种信息对持有者本人来说,如果不分享出来,已经没有什么价值。发达的互联网,以及日臻成熟的各种支付手段,已经把高效解决这一问题的时机展现在我们面前。
我们相信,一个全新的体系将慢慢浮出水面。它可以让每一个工程师高效的分享和获得信息,并且为双方都带来巨大的收益。这个体系不被任何个人控制,它的运行规则将决定于每一个贡献者。
关于文章开头嵌入式交流群里提到的数据对齐问题,请参考: