热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

如何快速提升单片机编程水平?

大家好,我是无际单片机编程团队徐工“嵌入式单片机开发到底怎么样?”今天有个兄弟问我,我也不怎么好直接回答他,我就给他简单

大家好,我是无际单片机编程团队徐工

“嵌入式单片机开发到底怎么样?”

今天有个兄弟问我,我也不怎么好直接回答他,我就给他简单讲了一下我的一个成长经历。

我是在2018年参加学校电子大赛的时候,开始接触并学习单片机的,在学校学习了2年。

2010刚毕业找工作的时候,虽然在电子大赛中获过奖,但想找一份比较合适的工作,还是非常有压力。

刚毕业,没有实战经验,那个公司会要我呢?

当初比较理想的工作就是单片机工程师助理,但找了将近一个月,大多数面试完之后都让我去做维修,让我从维修做起。

有几个比较大的公司,给的工资也还可以,但是我毅然拒绝了。

随着时间的流逝,1个月过去了,想起又感到后悔,因为没有更好的选择了,自己又似乎放弃了最好的选择。

最终我还是找到了一个比较理想的工作,一个小企业,和老板一起不到10个人,我的职位是软件开发工程师,也是公司唯一的单片机开发工程师,还有一个做硬件的,一个做维修的。

在那里我做了1年,工作也是相对顺利,而且公司也比较器重我,交给我的工作我都可以快速地完成。

但毕竟是个小公司,工作不饱满,后来我就辞职了,想换个工作,因为当时我觉得自己已经足够强大,足够自信,足够承担一些更加复杂的项目开发。

“理想很饱满,现实很骨感”,这次工作找了将近2个月,比第一次还惨。

自己的存款都快被花完了,最后进了一家对我人生具有重大意义的公司,开始接触物联网相关的工作。

进了公司之后才发现,自己其实还很Low,我几乎都不敢提我的过去,有很多同事,讥笑我“你之前还是软件工程师?”“你之前参加过电赛”… 后面一句就是“你的水平也太差了”。

这话听着心里的滋味那是相当的不好受,但不得不说,这也是一个事实。 我的单片机开发水平确实很菜。

为什么自己会这么菜呢?

一直以来,我都是活在自己的世界里,独自学习单片机,独自做单片机产品开发。

虽然很多产品也可以开发出来,但自己的程序就是 if 套if,while 套 while。

没有师傅带我,没有同事和我交流,自己又没有一个程序框架的概念。

其实,我们自己在if 套if,while 套while的时候,也知道这样很烂,但没有见过更好的,不知道怎么可以学得更好。

就像生活在某鲜的兄弟,虽然贫穷,但很幸福,到了新公司,一下子感觉到了自己的差距。

在这里做了3年,后来又换了几家公司,职位也从软件工程师做到了技术总监,分公司负责人。

随着自己不断成长,再回头看自己曾经的杰作,曾经让自己觉得很牛逼的程序,现在看来,实在是太烂了,都不敢相信这个是自己写的,不堪入目。

但经过这么多年的积累,越来越觉得自己需要学习的东西是越来越多,学无止境。

看到那些和我同样苦逼经历的兄弟们,我给大家分享一些我的建议,希望可以帮助到你们。

如何尽快提升自己单片机开发水平?

1.刚入门的时候,找个老司机带带你,学习老司机的经验很重要。

刚入门的兄弟们,有些是从大学刚毕业,有些是转行过来的,建议大家最好能找个老司机带带。

我们要懂得站在巨人的肩膀上成长,这样可以避免我们少走很多弯路,可以吸收别人积累很多年的一些开发经验。

遇到一个问题,如果没有人帮助,可能你需要1个小时,或1天,或1月,或1年才能解决,或永远都不知道怎么处理,如果有人帮助,可能就是几分钟。这就是有人帮助的好处。

2.要有一个合理的学习方法

方法很重要,有多重要呢?就像你要过附近没有桥一个河,如果你找一条船,可能很快就过去了,但你坚持要找桥,那可能就需要很久时间。

学习单片机最重要的是实践,尤其是对理论知识不是很好的兄弟,我们通过项目实战积累开发经验,同时发现自己还有哪些理论知识不懂,再去针对性去补习,这样会更快。

3.多看别人的代码,吸收别人程序中的精华

单片机工程师,最不喜欢干的事情就是看别人的代码,看别人的代码还不如自己重新写,效率更高,可靠性更好。 

现实确实是这样的,因为看别人的代码,你要不断的猜别人的思维,尤其是一些没有注释的程序,更加让人头疼。程序就是一堆字母加数字,太枯燥。

但是,选择一些比较优质的程序代码去看,去研究,可以更加快速的提升你的编程能力和思维框架。 

高手都是喜欢看别人的程序,尤其是一些优质的程序代码,因为看别人的代码可以吸收别人程序代码的精华。

就像无际单片机编程那个程序架构,就是无际做了产品开发多年总结出来的,实用性非常强,也能解决很多产品痛点。

架构能让你初步地了解任务管理和调度、队列算法,有了这些基础以后学RTOS会游刃有余。

这个架构也经过了批量产品验证,移植到自己的产品当中去可以大大缩短开发周期,占用资源又小。

如果我们不分享,你应该一辈子也接触不到这么完整系统的架构,至少我在网上没找到有,基本上都是零零散散的,价值不大。

一般优质的代码不是说你算法写的有多好就行,大多数领域对算法的要求都不高,很多人当务之急是程序架构上。

也就是功能你都能实现,但总觉得写得不够完美,还差点什么,如果你有这种感觉的时候就代表你的水平已经到达一个瓶颈,需要跟更好的代码学习。

我们要懂得先去向别人学习,然后去创造。

4.专注于一个行业,不断的打造,磨练自己

这一点非常重要,我从2010年底开始从事物联网相关的工作,10年多了,我一直从事这个行业,专注于安防报警系统,智能家居,消防报警系统的研发。

只有当你对一个行业,有足够的累计,有足够的经验,你才能拿到高薪。

企业最需要的就是有经验的。但经验不是一天,一个月,一年就可以积累来的。

电子相关的行业很多,单片机可以开发的产品又非常的多,如果想什么东西都想学会,都想掌握,那你就走进了一个误区。

当你想要的更多的时候,结果往往是什么都得不到


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 栈和队列的共同处和不同处
    本文主要介绍了栈和队列的共同处和不同处。栈和队列都是由几个数据特性相同的元素组成的有限序列,也就是线性表。队列是限定仅在表的一端插入元素、在另一端删除元素的线性表,遵循先进先出的原则。栈是限定仅在表尾进行插入或删除操作的线性表,遵循后进先出的原则。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
author-avatar
每张照片都有它的心情和故事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有