参加工作已经三年了,可是到现在,我仍然不确定自己算不算一名合格的工程师。合格的工程师应该是什么样子的呢?热爱自己的职业,认真负责,保持一颗包容和不停止学习的心。反观我呢,最喜欢的状态是,窝在家里整天整天的看电视剧和吃东西。真的很佩服那些在空闲时间还能全心捣鼓技术的,还有那些自始至终能够保持旺盛精力的人,因为我一旦回了家,特别是回了老家或者男友家,整个状态就松懈下来了,只想着最好闲居在村庄,看看电视养养花,聊度余生。
究其原因,可能是工作对于我来说并非全然的享受,而始终伴随着几乎无法消除的焦虑感。我有很强烈的意愿,去设计出非常精准美观的电路板,去编写出非常优质完善的程序,而同时也明白,从经验也从直觉,要达到这样的目的,自己需要长时间集中精力,并且做好调试过程中艰苦攻坚的准备。虽然创作是快乐的,虽然专心做事情的时候很容易就忘了时间,可是它还是一项辛苦的工作,身体和思维都有闹着要休息的时候。
从事过硬件开发的人应该都有体验,调试电路板有的时候是很令人抓狂的,经常是好像没有任何地方弄错,但是电路就是不按照你设想的那样工作。你检查过原理设计和PCB板设计,也检查过器件的型号和值,还仔细验证过每一根接线的通断,一句一句重新厘清程序的含义……但就是找不出问题在哪里。为什么?!为什么?!明明everything都没弄错,但就是结果不对?!时间一小时一小时的过去,你想扯住自己的头发往墙上撞,你想把电路板砸个稀巴烂,你握紧了拳头指关节咔咔作响,但最终你还是重重的捶了一下桌子,又拿起了万用表或者示波器的探头!
这可以算是每个硬件工程师必须经历的过程,当你有能力按步就班的定位到问题所在,并且采用可行的方式验证并修复它,恭喜你,你终于跨过了硬件工程师的第一道坎!
破茧成蝶总是痛苦的,可做个硬件工程师非得搞得跟浴火重生一样吗?我庆幸自己坚持了下来,成为苦逼硬件工程师大军中的一员,但也会想,是不是有硬件工程师的系统训练,过程就会走得没有那么艰难。
硬件工程师的系统训练,本来应该在大学校园里面,通过专业课来完成。可感觉大学的课程和实际严重脱离,动手实践环节太薄弱,几乎对职业发展没有任何直接的帮助。教材都是二十年前的绝不更新,老师教课的时候照本宣科,学生上完了课水平还是老样子。对大学教育失望的人十之有八九,真要吐槽起来,段子一箩筐一箩筐的!以前和第一份工作的前辈工程师聊天,他说日本的大学单片机课程,是学生要使用各种各样的器件搭出一个单片机来,不仅仅是要学习怎么使用单片机的外设,怎么使用汇编或者C语言编程,而是真正去理解单片机是怎么工作的,它的CPU寄存器是干什么用的,内存是怎么映射的,时钟是怎么产生的……一门课程上下来,就是真的通了,学生都可以设计单片机烧写的硬件和程序了。可反观咱们的单片机课程,把课本上的例子烧进去,半字不改,灯亮了就算完事。还说二十年超英赶美,呵呵,不把基础建设做好,空中楼阁再漂亮,也是千疮百孔一推即倒。(可别在比不过人家的时候就说,这都是帝国主义的阴谋。。。)
如果有像日本课程这样的系统训练,设计和调试硬件应该会轻松得多,因为你能够做到心里有数。当问题出现,比如RS232、SPI或者I2C协议不通的时候,首先你已经理解了它们的电气特性,知道它们的电平值应该是什么样子,哪些引脚应该是推挽输出状态,哪些引脚应该是高阻态输入,哪些引脚应该是开漏的;你理解它们的上拉下拉电阻和速率功耗之间的关系,懂得观察它们的上升下降沿来修改电路的参数,懂得观察它们的时序,使得程序设计时数据不会发生遗漏也不会造成时间的浪费;你明白外设寄存器对应的协议特征是什么样子的,这样设置的原因是什么,它们和系统内存映射、时钟以及功耗的关系是什么……这些东西听起来又简单又繁琐,可正是这些构建了复杂电路板稳定工作的基础。由简到繁,由易到难,应该比马上立刻要得出某种结果要轻松一些。
但是目前的大学教育也不是一无是处,它提供的高等数学训练是工程师工作的必备技能。以我读的测控系来说,高等数学、概率论、控制理论等等,在实际的项目中常常会用到,PID运算几乎是每个控制类项目的标配,而傅立叶变换和香农定理几乎是传感器采集类项目的标配,在嵌入式操作系统比如Linux中,总能发现经典的数学原理的应用,比如哈希散列。这些数学知识需要很长时间和很多练习,而公司几乎不会为员工提供这样的培训。
大学教育重理论轻实践,就算是动手也只是走个过场,好在高校会组织各种各样的电子类比赛。大四那一年我加入了学校的机器人队,如果说我的本科前三年都充满着对未来的迷茫,那大四那一年就像是看见了漆黑天空的一点点晨曦。在机器人大赛中,我才真正有机会拿起电烙铁,参与电路板设计的全过程,课本上完全搞不明白的概念,也才一点一点得到了验证。
准备比赛的过程,像是参加魔鬼训练一样。刚刚进队的时候,真的是彻彻底底小白一只,连电容电阻长什么样子都不知道,师兄师姐给我们上的培训第一课,是认识电子元器件;把各种各样的分立元件和芯片认全了,就开始学习焊接技术,还记得某年龄上的师弟资历上的师兄说过,电路50%的问题是焊接造成的,这绝对是至理名言;等差不多焊接水平过关了就开始学习单片机的使用,包括电路的设计和程序的编写和烧录;后期则是各种各样电机、传感器和设备的使用,以及算法的调试。半年的时间,完全不够用,技术水准还达不到能够设计出完善的电路板和程序的地步,现在回头看,我那时候采用的电路实现简直一塌糊涂,程序的设计漏洞百出。虽然最终比赛的结果并不理想,但是那段经历却是受益终身。
经过全身心准备的比赛最终失利,心里还是会非常难受,现在偶尔还忍不住对自己搞暴力精神分析,想找出当初失败的原因。