热门标签 | 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年多了,我一直从事这个行业,专注于安防报警系统,智能家居,消防报警系统的研发。

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

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

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

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


推荐阅读
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 解决IIS无法访问映射网络驱动器的问题
    探讨IIS在尝试访问映射的网络驱动器时遇到的问题及其解决方案,包括配置和权限设置等方面的详细分析。 ... [详细]
  • 技术人员转型项目管理:常见思维误区与挑战解析
    本文探讨了技术人员在向项目管理角色转变过程中常见的思维误区和困惑,分析了如何有效管理项目中的事务和人员,提供了实用的解决方案。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 深入解析for与foreach遍历集合时的性能差异
    本文将详细探讨for循环和foreach(迭代器)在遍历集合时的性能差异,并通过实际代码示例和源码分析,帮助读者理解这两种遍历方式的不同之处。文章内容丰富且专业,旨在为编程爱好者提供有价值的参考。 ... [详细]
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社区 版权所有