赞
踩
来聊聊我的经历,提供几个提升方向,亲测有效,希望能让你少走几年弯路。
10几年前,还没参加工作的时候,主要是玩玩开发板,也接触不到实际产品的代码,很好奇那些产品级的代码是怎样的。
第一份工作,先是维护老产品, 一看公司产品的代码,其实跟开发板的差不多,有些代码可能还没开发板的工整,是用STC 51单片机的项目,代码也复杂不到哪去,能实现功能就行了。
接着维护基于NXP ARM7单片机项目,相对就复杂很多了,复杂度主要体现在要自己配置寄存器,去使用单片机外设,还有整体功能多,组合起来看就有点云里雾里,不过从代码架构上,也是挺乱的。
经过前面3,4年的磨炼,水平慢慢从维护,到能独立完成各种功能。其实就是接触多了,能在原有的功能上,懂得举一反三了。
虽然能实现各种功能吧,但总觉的还是差那么点劲,就是总是感觉代码写得不够专业,又说不出来哪里不专业。
大概在工作到第4年左右,自身也有经验了,跳槽也有更多的选择,能进一些项目相对复杂点的公司了。
从那个时候,自己的认知,确实被一些大佬写的代码颠覆过几次,原来单片机的代码还能这样写?
就像很多无际项目特训营的老铁,系统学习我们项目后,也会被颠覆原有的认知一样。
并不是说有多复杂,或者多高深的技术,而是每个人写代码的思维,确实不一样。
你接触到的产品代码,可能是上一任工程师,积累了很多年,一次次迭代出来的版本。
所以为什么工作以后,能力提升才比较快,这是其中一个因素,直接能学到别人积累几年的东西。
不过这个也要看机遇和选择,也有可能工作10年也碰不到。
后面我也找到了代码提升的方向,就是实现功能的同时,怎么把代码写得扩展性和移植性更高一点,再是整体程序架构的设计,能做到这一步,基本就能独立开发各种项目了。
有人带,能接触到好项目,又有学习意识的话,其实也很快,大概2-4年左右。
有些同学说,接触不到,那该怎么去提升?
其实还是有现成的,且非常优秀的学习渠道的。
可以按照顺序,把我说的这3套程序搞明白,编程思维和水平基本就到天花板了,哪怕没到,去做任何项目都没问题。最多就是不同的行业,可能涉及到行业的专业知识和算法,这个可能还要针对性学习下。
第一,STM32固件库,学习他们面向对象的编程思维,学习代码的封装方法,对模块化编程思维帮助很大。
第二,无际单片机那套程序架构教程,是我2018年录着玩的。
熟悉c语言"三板斧":枚举、结构体、指针的实际应用,初步学习系统的一些原理,比如任务管理,队列,以及用这些对实际项目有什么帮助等等。
可以找我安排拿。
第三,学习OSAL系统,这个是TI蓝牙协议栈的事件型驱动系统,也能适用于别的单片机,之前我做过几款蓝牙产品,对系统挖的比较深,然后按照他们的设计思路,经过剪裁改编,用于后面的STM32项目上。
能把以上3套架构吃透,我觉得水平已经可以吊打大多数有10年开发水平的工程师了。
这个阶段,项目上RTOS,对你来说就是一种累赘。
第四,RTOS,如果OSAL系统都不能满足你了,下一步可以深入研究,或者把前面两个系统,加上现场切换和优先级管理,改变成更加精简的RTOS。
不过,如果你有前面三个架构的经验积累,RTOS对你来说,就是小菜一碟,也就是1-2周学会的事。
以上4个方向,需要有一定开发经验的人去学习,否则看不出里面的门道和精华。
下面还是总结下,在学校,和实际工作,有什么区别?
1.学校学习的目的,是为了通过考试,工作学习的目的,是解决业务需求。
2.在学校喜欢刨根问底,重复造轮子。
编程的能力不在于,你对这门语言语法背诵,以及几个数据结构和算法的记忆。
在实际工作中,更多在于怎么设计架构,怎么组织整合代码。 语法是可以百度的,单片机外设例程原厂/代理商也会提供,你只需要知道怎么调用修改。
工作后,见过鬼,怕黑了,不想再装逼秀技术了,只想快点完成任务,有现成代码可以抄,我觉得贼幸福,领导和甲方,大概是魔鬼。
所以后面我写了通用程序架构,换了项目直接移植,修改。目前我们特训营项目就用这些架构。
3.工作才是学习的开始,大学生活只是让你准备好。
4.除了技术,你还要考虑业务知识、测试、质量、生产效率和可持续性。
5.学校学的也有用,但是理论和实践之间,有巨大的鸿沟,要趁早多做点实际项目,培养经验和工程感。
6.工作前几年,能从头到尾,让你完整做一个项目的机会,其实并不多。
7.机会总是有的,你要做的只是准备好。
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。