之前有特训营老铁说,刚找到工作,碰到了新项目,没有头绪,该怎么入手?
10几年前,我刚入职单片机开发时,也慌得一批,在此之前,我只懂51单片机,玩过智能小车。
好在,刚开始只是维护老项目,用的也是STC的单片机,基本的开发环境还算用过。
如果是应届生,或者刚转行过来的,一般公司不会直接让你参与新项目的开发,除非是比较简单的。
毕竟只是面试的时候,听你吹过牛逼,实际是骡是马,还得先遛遛,了解说熟悉,熟悉说精通的人太多了。
其实,维护老项目,也很头痛,就像TM像破案一样,不断揣摩前任工程师的编程思维,看到一堆屎山代码,还会边揣摩会边骂他。
特别是碰到那种乱七八糟的代码,变量函数命名不规范,没有模块化编程的代码,就是一种折磨。
如果刚开始很痛苦,心态要摆正,毕竟每个工程师,都是从这水平过来的。
我也不例外,从改代码维护老产品都费劲,到自己能勉强独立完成简单项目,再到独立完成复杂的项目,最后能设计整体程序架构,保证实现功能为前提,又不失可扩展性和可移植性,这条路,我摸索了快10年。
原来我的代码风格是这样的:
现在是这样的:
关于程序架构,我曾经也录了个教程:
我觉得对有基础,或者工作1-3年的人,有很大的参考价值,可以找我无偿安排,无套路。
当然,这不意味着你要这么久,本身没有多复杂的技术,问题主要在于,在过去的工作中,难得有机会去独立完成复杂项目的研发。而且做项目过程中,细节问题太多,又找不到人及时指导,所以慢。
很多你碰到的新项目,并没有你想象中这么复杂,只是没有一个清晰的开发流程。
很多老铁在学我们无际单片机项目时,只关注了项目内容,代码,却忽略了我们的开发流程。
你有没有这样一种感觉?
让你去做某个新项目时,你总是站在宏观的角度去思考,怎么完成这个项目?
从宏观的角度去思考,会非常迷茫,因为要想的问题太多了。
而没有抽丝剥茧,这个项目都由哪些小模块拼凑而成?
如果你仔细去学我们项目,会发现我们开发步骤如下:
1.一定要先熟悉项目功能
我刚工作时,着急完成任务,一上来就抱着代码啃,通过代码去理解功能是逆向工程,没经验的情况下,比较困难,正确的顺序是,先理解功能,再思考实现思路。
2.熟悉硬件原理
熟悉项目所使用的单片机,以及各个功能电路是如何连接和工作的,了解其中协议和原理。
3.熟悉开发环境
碰到新项目,我会先搭建好开发环境,编写一个让LED循环闪烁的程序进去,这样如果后续增加新程序有BUG,导致死机了,能及时发现。
另外,如果支持在线仿真调试的(如SWD、JTAG),一定要把仿真环境搭建好,有利于后面代码调试和故障排查。
4.制定开发计划
将项目分解为多个小模块,细分成一个个小任务,逐个突破,这样难度也更小,做事也更加有条理。
按照时间线去推进,这样领导来问的时候,有个直观的进度可以展示,领导看了心理也有底。
一般我是先把项目用到的外设调通,再调产品功能,大部分工作都是在产品功能实现,单片机外设的代码,一般直接找代理商,或者去芯片官网下载,不要自己去折腾。
还有一些在开发过程中的习惯,也很重要。
比如按照模块化和可重用性的原则去写代码,后面整合功能的时候,你就知道有多重要了,否则单独跑没问题,代码一整合起来,功能就各种相互冲突。
还有就是程序版本的管理,可以用Git管理,我一般直接以文件夹的形式,保存在本地,自己电脑存一份,移动硬盘存一份,公司电脑存一份,稳得一批。
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》
《单片机入门到高级开挂学习路径(附教程+工具)》