关注汽车工程师谈技术,一起学习技术
今天和大家一起聊聊怎样才能在技术领域走的更远。我个人觉得有以下几点是很重要的:
-
扎实的专业技能和求知欲望
-
学好英语
-
好的职业规划以及适当的跳槽
1、扎实的专业技能和求知欲望
对于一个嵌入式软件工程师而言,最重要的专业技能有如下几点:
C语言要过关,C语言作为嵌入式编程最主要的语言,C语言相对于其他语言最大的特征的是它的灵活性,把C语言学好你能理解很多程序运行的本质。怎样能判断C语言理解过关了呢?
-
C语言语法要熟悉,编程语言和日常说话语言一样,都是有自己的语法的,这个多背多练多写就能学会。语法没有为什么,因为它是语法,发明这个语言的人就是这么规定的。
-
C语言的灵魂指针是一定要理解,包括常规变量指针、函数指针、数组指针等,指针的概念和内存分不开,需要自己领会理解的。
-
程序运行内存结构是一定要理解的,包括栈、堆、数据段、代码段等。
-
常用的算法和数据结构也是需要理解的,比如链表、栈、队列、数组等。
对芯片结构有一定的理解
-
理解一块主芯片SOC(片上系统)内部集成了哪些东西。主要是由CPU、运行存储(RAM Cache)、静态存储(FLASH)、各种外设IP(外设控制器)组成的。随着现代电子科技发展,越来越多的功能会集成到主芯片内部,这样可以减少外围电路,提高稳定性。
-
要对CPU架构(比如ARM)有一定的理解。包括CPU的指令集、CPU模式、寄存器、系统调用等,这就要求懂一些汇编语言,至少能看得懂汇编。
对数字电路有一定的理解
-
能看懂产品硬件原理图
-
对常用的通讯总线协议有一定了解(SPI I2C CAN ETH等)
-
会使用示波器
软件架构思维
当有了好几年的工作经历之后,你就会发现你已经不满足只是写写函数实现、调试接口了。你会有大的软件工程架构的思维,怎样规划一个项目的软件架构是非常重要的。如何把软件分层,解耦,模块化开发,这是软件架构师干的活了,能不能上升到这个境界需要看天赋了。
讲完专业技能,还有一个最重要的就是求知欲望了。
做技术做重要的是自己能够喜欢,并不断学习。在项目开发过程中,不断探索技术本质,享受解决bug的过程,并不断提升自己。如果你在技术开发中享受不到任何成就感带来的喜悦,那你确实不太适合做技术。
2、学好英语
没办法,英语在技术开发中确实有很大的作用。首先,我们买的芯片基本上全部都是国外的芯片,所以他们的所有资料都是英文,包括数据手册、用户手册、官网资料等等。
我们学的C语言技术,本身就是国外人发明的,所以变量字符都是英文字母,C语言语法很多关键字也是英文,很多代码的注释也都是英文的。
目前我接触的汽车电子行业的技术,基本都是来自于国外,我们常见的CAN总线、ETH总线协议也都是国外发明的。所以想要真正理解这些技术,还是得学英文。
还有一点,有可能你进了公司之后,你会发现你有老外同事,或者你直接进了外企,英文还是跑不掉。
3、好的职业规划以及跳槽
做技术,其实有一个困扰我们的问题:到底是行业重要还是技术重要。
-
一直在一个行业工作,跳槽也在这个行业,当然做的技术领域也都一样。
-
一直做一种技术,但是跳槽从事的行业不一样了。
上面两种选择,其实我个人觉得对于技术人而言,行业并不是那么重要。只要自己的技术得到延续性,有技术的积累,是不用愁找工作的。
对于很多普通学历的人而言,很难有机会能直接进大厂,这时候又有一个问题了,是去大厂做外包好还是去小公司做正式员工好。
我个人觉得,如果你的年纪不大,并且有机会去大厂历练,即使是外包也比去小公司好。这个点其实是有争议的,我个人是觉得如果大厂提供的是一个实际开发的岗位,是可以去大厂做的,并且大厂外包的工资也不会低于小厂。
上面两点都是大部分普通技术人可能会被困扰的,所以做好职业规划很重要。知道自己想要什么,想好未来的发展方向,你选择起来就不会那么难了。
做技术的还有一个会一直伴随职业生涯的事,就是跳槽。好的跳槽会让自己的发展的很好,迈上一个新的台阶。不好的跳槽可能会适得其反,严重的会毁掉个人职业生涯。跳槽一定不要太频繁,2-3年一次是比较好的,但是也不排除有一个特别的好的机会,不管是薪资还是平台都很好的机会,这个也要及时把握住,因为机会真的会稍纵即逝。
END
公众号 | 知乎 | CSDN:汽车工程师谈技术
文章出处登录后可见!