在毕业的时候,带着懵懵懂懂的感觉进了公司。当时的我还是抱着一种比较强烈的学习的态度,对未来缺少足够明确的认识,觉得自己对技术非常有兴趣,也喜欢埋头去搞技术,在这样的心理状态下,进入了第一家公司。
然后从刚毕业开始,一个词就尝尝伴随着我-嵌入式软件。或者有的人就简单的讲-软件工程师。诚然写的是底层的code,研究的多半是操作系统层面的东西,似乎非常有技术含量。工作从芯片设计阶段的verification,diag,到tapeout之后驱动框架的搭建测试,等到芯片回来,bringup,系统联合调试优化,然而从第二版SoC紧接着第三版,做的其实是类似的而且个人感觉并没有多大提升的事情,主要原因在于以下几个方面。
从工作内容上讲,流程是很固定的,无论是验证,还是diag,都是针对现有的协议实现并且做测试,比如I2C,I2S,USB,SDIO或者H264。不外如是。就算熟悉了ARM Assembler,也只不过是一种少用的手术方式,某些时候可以解决问题,通常并不会带来生产力的提高。关于系统框架,个人感觉其实还是很有意思的,但是如果搭建完成了,后续却无法跟进,包括人员上的还是工作需求上的,一番工作伴随着兴致就付诸东流了。而且就算是搭建框架,Linux几乎在各个方面都有了成熟的机制,只要在这些机制之上完成自己工作就好了。
技术之于工作,或者技术之于自己到底占了多少分量?工作之余,找一些有意思的事情尝试,譬如利用python做股票分析,利用lisp建模。在做这些事情的时候,内心还是挺有快感的,但是可能也只是自己yy罢了。最终我们要面临的都是市场,随着市场变化,或者引领市场,甚至创造市场。
关于创新的问题。其实做好一版芯片或者一套系统最直接需要的并不是创新,而是成本,包括时间成本。从公司角度讲,创新如果能够解决这个直接需求,就是有意义的。还有一些创新解决了行业难题,那自然是极为牛掰,功德无量的。