代码能力弱,编程思维几乎没有,有些勉强能看懂,让自己敲,一脸懵逼?

 最近有几个人问我,说自己代码能力弱,编程思维几乎也没有,简单的代码,勉强能看懂,让自己敲,就一脸懵逼,下一步该怎么学习?

10几年前,这些问题,就像是一道道难以逾越的高墙,困扰着我。

我以为学完C语言,学完单片机,就能独立做项目。

学完以后才发现,碰到一些自己想做的项目,想实现的功能,一旦要自己动手编写,就完全不知所措。

我也纳闷,难道是我的学习方式,方向不对吗?又难道是我不适合干这个?

我敢保证,99%的初学者,都会经历这个阶段。

这个观点,来自于我从业10几年的经验,以及无际单片机项目特训营,几百上千的学员案例。

下面说下不走弯路的成长路径。听话照做,就能在同等时间的付出下,收获更多。

我很喜欢拿写字,到能独立写作文,去比喻学习单片机, 到能独立做项目的过程。

写字,就像是学单片机,学C语言这些工具基础,而写作文,就像是做项目。

会写字以后,就一定能写出各种作文吗?肯定不是的。

那中间,到底缺什么玩意?我觉得是经历

如果你的人生,是一张白纸,没任何经历,怎么可能写出好的作文呢?

同理,如果你没做过任何单片机项目,怎么可能具备编程思维和代码水平呢?更别说独立写了。

编程思维,不是一蹴而就的,它需要时间,需要实践,更需要正确的方法。

在初学期,我曾试图通过死记硬背来学习编程,结果却发现,这种方法不仅效率低下,而且容易让人丧失信心。

在意识到这个的问题后,我开始尝试从模仿开始。

我选择了一些简单的项目,先看别人是如何实现的,然后尝试自己复现。

在这个过程中,我逐渐学会了如何将问题分解,如何一步步地用代码去解决问题。

我的第一个单片机项目,是智障小车,那已经是10几年前的事情了。

项目虽然磕碜,但初学者拿来练手,确实是不错的选择,好玩,又能初步培养一些编程思维,以及代码编写、组织、整合能力。

后面,找到工作了。

由于是应届生,领导也不敢给我去做新项目,就让我伺候老客户,他们有什么定制化需求,我就负责改代码,维护升级老产品的功能。

当时也是很头痛,我感觉改代码,比我自己重新写还费劲。

特别是碰到上任的屎山代码,不通俗易懂的命名规范时,就想隔着屏幕把上任工程师拖出来打一拳,什么aa,bb这种都有,你敢信?!下次领导得罪你了,就按这标准写程序。

后面我发现啊,新手,就应该从维护老产品开始。

因为你想改代码改功能,必须得先把原有的代码看懂,才能改,否则改出来,就像破了几个洞的,然后用胶布粘住的水管,这里改,那里又冒了个BUG出来。

这个过程就是在培养你的编程思维和代码水平,而且难度也要比独立写低一些。

当初,我在设计无际单片机特训营的项目时,就很想采用这种方式,先给老铁们项目源码,然后提要增加/修改的功能,让他们自己先和脑细胞撕裂一下,尝试修改源码去实现功能,最后再看教程,这样理解绝对透透的。但是考虑到这个周期可能比较漫长,对于焦急找工作的来说,不太适合。

这家待了大概半年后,就跳槽了,然后就开始有独立做项目的机会,不过都比较简单,都是基于51单片机的国内消费类产品。

做了几年后,又跳槽到做ARM内核的项目,也是从刚开始的维护老产品,到独立做项目。

到独立做项目的水平,其实不难,多接触点项目就好了,额,好像说了句废话,但也是实话和捷径。

难的是能实现功能的同时,把架构做好,即保证了程序可扩展性,又保证可移植性。

这就不是你接触项目数量的问题了,而是质量的问题。

关于程序架构的基础铺垫,我正在写一个系列的连载,不过发现没多少人爱看,如果有想看的,可以评论想看,人少就不更了,这类内容写起来费脑费手。

关于提高代码质量,我最近发现了一本难得不错的书,要的可也找我安排。


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

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

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

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

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

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

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

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

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

相关文章

Redis数据结构和持久化

数据类型 String&#xff1a;Map<String,String> 命令格式 set key value(相同的key会覆盖&#xff09; get key incr key decr key setex key seconds value seconds秒后失效 ttl key del key setnx ke value(if not exist) 应用场景 计数器 比如&#xff1a;访问次…

1招搞定maven打包空间不足问题

目录 一、工具应用问题 二 、使用效果 三、使用方法 四、练习手段 一、工具应用问题 使用maven的package功能打包失败&#xff0c;报错“Java heap space”错误。 二 、使用效果 修改IDEA中maven内存使用大小后&#xff0c;打包成功。 三、使用方法 点击菜单“File->Set…

C++ 例外处理 try throw catch

例外处理 程式中可能会发生的错误有三种&#xff0c;分别是语法错误(syntax error) 、执行期间错误(runtime error) 及语意错误(semantic error) &#xff0c;其中编译器会直接检查出语法错误&#xff0c;如果含有语法错误的程式无法过编译&#xff0c;例如 $ g u06.cpp u06.c…

【PythonRS】基于Python分块处理大型遥感影像的方法

RSer工作时不可避免会用到大型的遥感影像,由于分辨率过高、区域过大、波段信息过多等原因,都会导致数据非常的大。这个时候我们在进行一些简单的操作,如计算NDVI、二值化、分类等时,计算机的内存都会溢出。因此今天跟大家分享一下我平时分块的方法,中间如何计算就按照自己…

Docker 使用基础(3)—容器

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

let/const/var的区别及理解

在JavaScript中&#xff0c;let、const 和 var 是用来声明变量的关键字&#xff0c;但它们之间在作用域、变量提升、重复声明等方面存在区别&#xff0c;详细情况如下: 1. let、const、var 的区别 (1) 块级作用域 let 和 const&#xff1a;具有块级作用域&#xff0c;由 {} 包…

百数教学秘籍:三步走,轻松规划你的自动化计划任务

通过设定任务计划&#xff0c;用户可以轻松安排指定的功能插件或数据助手在特定时间自动执行&#xff0c;有效提高工作效率&#xff0c;还确保了数据的及时更新和处理。任务计划在应用启动时自动启动并在后台运行&#xff0c;无需用户持续监控&#xff0c;为用户带来极大的便利…

oracle哪些后台进程不能杀?

oracle 有很多的后台进程&#xff0c;在遇到特殊情况的时候如锁表&#xff0c;如果等待的是一个后台进程&#xff0c;那这时就需要考量是不是能杀掉这个后台进程&#xff1f;杀掉这个后台进程会不会引起实例崩溃&#xff1f;本着实践出真知&#xff0c;本文针对oracle 11g&…

游戏开黑语音-使用云服务器部署teamspeak服务(系统Ubuntu 20.04 LTS)

目录 前置物品服务器调整及部署1.重装系统2.换源3.下载teamspeak服务端并部署 连接服务器参考 前置物品 一台云服务器&#xff08;系统&#xff1a;Ubuntu 20.04 LTS) 服务器调整及部署 1.重装系统 在腾讯云官网的主机控制台内&#xff0c;选择重装系统 (由于之前为了快点和…

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

Excel中用VBA实现Outlook发送当前工作簿

Excel中用VBA实现Outlook发送当前工作簿&#xff0c;首先按AltF11打开VBA编辑器&#xff0c;插入模块&#xff0c;并在工具-引用中勾选 Microseft Outlook .0 Object Library(其中为你Microseft Outlook的版本号。 Sub 发送邮件() 保存当前excel ThisWorkbook.Save让excel连接…

Linux 入门教程 by 程序员鱼皮

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是鱼皮。 前两天我学编程的老弟小阿巴过生日&#xff0c;我问他想要什么礼物。 本来以为他会要什么游戏机、Q 币卡、鼠标键盘啥的&#xff0c;结果小阿巴…

模拟防止重复提交

gitee地址&#xff08;需要自取&#xff09;AopProxy重复提交: 防止重复提交 (gitee.com) RestController public class SubmissionController {Autowiredprivate SubmissionService submissionService;private static Jedis jedis new Jedis("localhost",6379);pr…

短视频矩阵:批量发布的秘密揭秘

在数字化时代&#xff0c;短视频已经成为一种广受欢迎的媒体形式。无论是用于品牌推广、产品营销还是个人创作&#xff0c;短视频都提供了一种直观、生动的方式来吸引观众的注意力。然而&#xff0c;有效地制作、管理和发布短视频对于许多创作者和企业来说是一个挑战。 为此&am…

什么是 C 语言中的宏定义?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

解决 Yarn 运行时的 Node.js 版本问题:一个详尽的指南

引言 Yarn 是一个流行的 JavaScript 包管理器&#xff0c;它与 Node.js 紧密集成&#xff0c;用于管理项目依赖。然而&#xff0c;在开发过程中&#xff0c;开发者可能会遇到 Node.js 版本不兼容的问题&#xff0c;这会导致 Yarn 运行时出错。本文将提供一个详细的指南&#x…

动态规划之数字三角形模型+最长上升子序列模型

首先&#xff0c;我们从集合角度重新看待DP&#xff1a; 直接看题&#xff1a;https://www.acwing.com/problem/content/1029/ 就是取纸条的原题&#xff0c;我们令f[i1,j1,i2,j2]表示从(1,1),(1,1)分别走到(i1,j1),(i2,j2)的路径的max i1j1i2j2&#xff0c;于是我们可以把状…

机器学习 | 对K-Means聚类假设的研究演示及实践示例

我们在Scikit-learn对K-means假设的调查中探索了揭示算法优势和局限性的场景。我们研究了K-means对不正确的聚类大小的敏感性&#xff0c;它在各向异性分布中面临的困难&#xff0c;它在不同的聚类方差中面临的困难&#xff0c;以及使用合成数据集的大小不均匀的聚类问题。我们…

准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

家用激光投影仪品牌排行榜:这几个品牌口碑好产品好最适合家用

现在人们生活水平提升&#xff0c;对投影这类产品的认知接受度也提升&#xff0c;有条件的家庭都想在家里整一个家庭影院&#xff0c;对于这些消费者来说挑选一台性价比高的家用投影至关重要&#xff0c;既省到钱又买对了产品&#xff1b;投影市场发展迅速目前市面上大大小小的…