刚找到工作,碰到新项目,怎么入手?

news2024/11/25 20:18:08

之前有特训营老铁说,刚找到工作,碰到了新项目,没有头绪,该怎么入手?

10几年前,我刚入职单片机开发时,也慌得一批,在此之前,我只懂51单片机,玩过智能小车。

好在,刚开始只是维护老项目,用的也是STC的单片机,基本的开发环境还算用过。

如果是应届生,或者刚转行过来的,一般公司不会直接让你参与新项目的开发,除非是比较简单的。

毕竟只是面试的时候,听你吹过牛逼,实际是骡是马,还得先遛遛,了解说熟悉,熟悉说精通的人太多了。

其实,维护老项目,也很头痛,就像TM像破案一样,不断揣摩前任工程师的编程思维,看到一堆屎山代码,还会边揣摩会边骂他。

特别是碰到那种乱七八糟的代码,变量函数命名不规范,没有模块化编程的代码,就是一种折磨。

如果刚开始很痛苦,心态要摆正,毕竟每个工程师,都是从这水平过来的。

我也不例外,从改代码维护老产品都费劲,到自己能勉强独立完成简单项目,再到独立完成复杂的项目,最后能设计整体程序架构,保证实现功能为前提,又不失可扩展性和可移植性,这条路,我摸索了快10年。

原来我的代码风格是这样的:

现在是这样的:

关于程序架构,我曾经也录了个教程:

我觉得对有基础,或者工作1-3年的人,有很大的参考价值,可以找我无偿安排,无套路。

当然,这不意味着你要这么久,本身没有多复杂的技术,问题主要在于,在过去的工作中,难得有机会去独立完成复杂项目的研发。而且做项目过程中,细节问题太多,又找不到人及时指导,所以慢。

很多你碰到的新项目,并没有你想象中这么复杂,只是没有一个清晰的开发流程。

很多老铁在学我们无际单片机项目时,只关注了项目内容,代码,却忽略了我们的开发流程。

你有没有这样一种感觉?

让你去做某个新项目时,你总是站在宏观的角度去思考,怎么完成这个项目?

从宏观的角度去思考,会非常迷茫,因为要想的问题太多了。

而没有抽丝剥茧,这个项目都由哪些小模块拼凑而成?

如果你仔细去学我们项目,会发现我们开发步骤如下:

1.一定要先熟悉项目功能

我刚工作时,着急完成任务,一上来就抱着代码啃,通过代码去理解功能是逆向工程,没经验的情况下,比较困难,正确的顺序是,先理解功能,再思考实现思路。

2.熟悉硬件原理

熟悉项目所使用的单片机,以及各个功能电路是如何连接和工作的,了解其中协议和原理。

3.熟悉开发环境

碰到新项目,我会先搭建好开发环境,编写一个让LED循环闪烁的程序进去,这样如果后续增加新程序有BUG,导致死机了,能及时发现。

另外,如果支持在线仿真调试的(如SWD、JTAG),一定要把仿真环境搭建好,有利于后面代码调试和故障排查。

4.制定开发计划

将项目分解为多个小模块,细分成一个个小任务,逐个突破,这样难度也更小,做事也更加有条理。

按照时间线去推进,这样领导来问的时候,有个直观的进度可以展示,领导看了心理也有底。

一般我是先把项目用到的外设调通,再调产品功能,大部分工作都是在产品功能实现,单片机外设的代码,一般直接找代理商,或者去芯片官网下载,不要自己去折腾。

还有一些在开发过程中的习惯,也很重要。

比如按照模块化和可重用性的原则去写代码,后面整合功能的时候,你就知道有多重要了,否则单独跑没问题,代码一整合起来,功能就各种相互冲突。

还有就是程序版本的管理,可以用Git管理,我一般直接以文件夹的形式,保存在本地,自己电脑存一份,移动硬盘存一份,公司电脑存一份,稳得一批。


最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单

片机最佳学习路径+单片机入门到高级教程+工具包」全部无偿分享给铁粉!!!

除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手

教程资料包和详细的学习路径可以看我下面这篇文章的开头

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1604583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLAIchemy 异步DBManager封装-01入门理解

前言 SQLAlchemy 是一个强大的 Python SQL 工具包和对象关系映射(ORM)系统,是业内比较流行的ORM,设计非常优雅。随着其2.0版本的发布,SQLAlchemy 引入了原生的异步支持,这极大地增强了其在处理高并发和异步…

codeforce #925 (div3) 题解

D. Divisible Pairs 给出数组 a a a,如果二元组 ( i , j ) (i,j) (i,j)满足 a i a j m o d x 0 & & a i − a j m o d y 0 a_i a_j mod x 0 \&\& a_i - a_j mod y 0 ai​aj​modx0&&ai​−aj​mody0,则beauty。其中 i &…

阿里云服务器项目部署docker-compose+vue+redis+nginx+minio+springboot

1 阿里云服务器项目部署-单机部署 docker-compose 1.1 搭建背景 服务器 阿里云服务器 前端 vue 后端 springboot 服务 redis 、nginx、minio 都做单机模式部署,不做集群部署 博客内容参考了其他博文&#xff0c;会贴出来 1.2 <重要>端口开放前提说明 任何开放的端…

2024年华中杯数学建模竞赛全攻略:ABC题思路解析+代码实现+数据集+论文撰写+全程答疑

引言 &#xff08;比赛后所有题目资料在文末获取呀&#xff09; 华中杯数学建模竞赛是数学建模领域的一项重要赛事&#xff0c;它不仅考验参赛者的数学建模能力&#xff0c;还考验了编程技能、数据分析能力和论文撰写能力。为了帮助参赛者更好地准备2024年的竞赛&#xff0c;本…

编程填空题:麻烦的位运算

闲着没事干可以做做 可以看到&#xff0c;那个函数直接return了&#xff0c;也就是说&#xff0c;得找到一个表达式&#xff0c;直接求出结果 简单分析一下&#xff1a; 其第i位为1当且仅当n的右边i位均为1 也就是说&#xff0c;前i-1位有0&#xff0c;第i位就是0 也就是说…

二维数组之前缀和中篇

在此之前&#xff0c;可以先看看这篇二维数组之二维前缀和-首篇。 和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,…

cesium加载倾斜影像数据(模拟雨、雪、雾、无人机飞行、测距、箭头标绘、电子围栏等)

实现效果如下&#xff1a; 功能菜单如下&#xff1a; 加载倾斜影像核心代码&#xff1a; var palaceTileset new Cesium.Cesium3DTileset({url: http://127.0.0.1:9002/tileset.json,//控制切片视角显示的数量&#xff0c;可调整性能maximumScreenSpaceError: 0.1,maximumNum…

c++的学习之路:25、map与set

摘要 本文中说一下map与set的使用 目录 摘要 一、关联式容器 二、键值对 三、map 1、map的介绍 2、map的使用 1、map的模板参数说明&#xff1a; 2、map的构造 3、map的迭代器 4、map的容量与元素访问 5、map中元素的修改 6、代码使用 ​编辑 三、总结 四、se…

51单片机入门_江协科技_33~34_OB记录的自学笔记_LED呼吸灯与PWM直流马达调速

33. 直流电机驱动(PWM) 33.1. 直流电机介绍 •直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转 •直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&…

winform 入门篇 -- 第15章 表格视图

表格控件 表格视图 DataGridView &#xff0c;即表格控件提行多行多列的表格状的数据展示 演示: 以表格控件来展示学生数据。。 每个单元格 都可以进行独立的编写 &#xff08;与上节得不同&#xff09; 基本操作: 1 添加一个表格控件 DataGridView 2 设置列数、列名 属…

HarmonyOS Next 视频弹幕功能

视频弹幕功能 介绍 本示例介绍如何使用ohos.danmakuflamemaster和ohos.gsyvideoplayer开发支持视频弹幕的播放器。可以自定义弹幕样式、占据屏幕宽度&#xff0c;发送弹幕&#xff0c;开关弹幕视图。 效果图预览 使用说明 点击播放按钮&#xff0c;进行视频播放&#xff0c…

STM32 USB虚拟串口

电路原理图 usb部分 晶振部分 usb与单片机连接 配置信息 sys配置信息 rcc配置信息 usb配置信息 虚拟串口配置信息 时钟配置信息 项目配置信息 代码 包含文件 主函数代码 实验效果 修改接收波特率依然可以正常接收&#xff0c;也就是说单片机可以自动适应上位机的波特率设置。…

2023年图灵奖揭晓:Avi Wigderson的辉煌成就与深远影响

2023年图灵奖揭晓&#xff0c;你怎么看&#xff1f; 2023年图灵奖&#xff0c;最近刚刚颁给普林斯顿数学教授 Avi Wigderson&#xff01;作为理论计算机科学领域的领军人物&#xff0c;他对于理解计算中的随机性和伪随机性的作用&#xff0c;作出了开创性贡献。 方向三&#xf…

免费泛域名SSL如何申请,和通配符有什么区别

-----让我们明确什么是泛域名。所谓泛域名&#xff0c;是指使用星号&#xff08;*&#xff09;作为子域名的占位符&#xff0c;它可以匹配任意子域名。-----而通配符在域名中&#xff0c;它可以出现在主域名的任何位置&#xff0c;它可以用于主域名和子域名的保护。 主要应用场…

握手问题(蓝桥杯)

文章目录 握手问题【问题描述】答案&#xff1a;1204解题思路模拟 握手问题 【问题描述】 小蓝组织了一场算法交流会议&#xff0c;总共有 50 人参加了本次会议。在会议上&#xff0c;大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手&#…

OceanBase 4.3 列存存储格式和列存索引存储格式

以 t1 表和索引为例子&#xff0c;下面两张图说明了存储层如何存储数据。 create table t1 (id1 int, id2 int, name varchar(10), salary int, primary key(id1, id2)) with column group (each column);create index idx (name) storing(salary) with column group(each co…

突破“三个九”!离子阱量子计算再创新高

如果把量子计算比作一场球赛&#xff0c;Quantinuum无疑又打了一记漂亮的好球。实际上&#xff0c;结合今年春季在量子体积、逻辑量子比特和布线问题等方面的进展&#xff0c;这个团队已经接近于完成一场完美的比赛。 3月&#xff0c;Quantinuum的研究人员证明了QCCD架构的可扩…

MYSQL08_页的概述、内部结构、文件头、文件尾、最大最小记录、页目录、区段表

文章目录 ①. 页的概述、大小②. 页的内部结构③. 第一部分 - 文件头④. 第一部分 - 文件尾⑤. 第二部分 - 空闲、用户记录、最大最小⑥. 第三部分 - 页目录⑦. 第三部分 - 页面头部⑧. 从数据页角度看B树⑨. 区、段和表、碎片区 ①. 页的概述、大小 ①. 数据库的存储结构&…

小行星碰撞

题目链接 小行星碰撞 题目描述 注意点 两个小行星相互碰撞&#xff0c;较小的小行星会爆炸如果两颗小行星大小相同&#xff0c;则两颗小行星都会爆炸每一颗小行星以相同的速度移动正负表示小行星的移动方向&#xff08;正表示向右移动&#xff0c;负表示向左移动&#xff09…

day81 session会话 文件上传

知识点&#xff1a; session 文件上传 一 session 1&#xff09;session&#xff1a;会话 在服务器端存储信息 指客户与服务器的会话 当用户通过浏览器访问服务器的某个页面时&#xff0c;在服务器开辟一个内存空间session 每个session 有唯一的id 2&#xff09;session过期 …