代碼能力弱,編程思維幾乎沒有,有些勉強能看懂,讓自己敲,一臉懵逼?

?最近有幾個人問我,說自己代碼能力弱,編程思維幾乎也沒有,簡單的代碼,勉強能看懂,讓自己敲,就一臉懵逼,下一步該怎么學習?

10幾年前,這些問題,就像是一道道難以逾越的高墻,困擾著我。

我以為學完C語言,學完單片機,就能獨立做項目。

學完以后才發現,碰到一些自己想做的項目,想實現的功能,一旦要自己動手編寫,就完全不知所措。

我也納悶,難道是我的學習方式,方向不對嗎?又難道是我不適合干這個?

我敢保證,99%的初學者,都會經歷這個階段。

這個觀點,來自于我從業10幾年的經驗,以及無際單片機項目特訓營,幾百上千的學員案例。

下面說下不走彎路的成長路徑。聽話照做,就能在同等時間的付出下,收獲更多。

我很喜歡拿寫字,到能獨立寫作文,去比喻學習單片機, 到能獨立做項目的過程。

寫字,就像是學單片機,學C語言這些工具基礎,而寫作文,就像是做項目。

會寫字以后,就一定能寫出各種作文嗎?肯定不是的。

那中間,到底缺什么玩意?我覺得是經歷

如果你的人生,是一張白紙,沒任何經歷,怎么可能寫出好的作文呢?

同理,如果你沒做過任何單片機項目,怎么可能具備編程思維和代碼水平呢?更別說獨立寫了。

編程思維,不是一蹴而就的,它需要時間,需要實踐,更需要正確的方法。

在初學期,我曾試圖通過死記硬背來學習編程,結果卻發現,這種方法不僅效率低下,而且容易讓人喪失信心。

在意識到這個的問題后,我開始嘗試從模仿開始。

我選擇了一些簡單的項目,先看別人是如何實現的,然后嘗試自己復現。

在這個過程中,我逐漸學會了如何將問題分解,如何一步步地用代碼去解決問題。

我的第一個單片機項目,是智障小車,那已經是10幾年前的事情了。

項目雖然磕磣,但初學者拿來練手,確實是不錯的選擇,好玩,又能初步培養一些編程思維,以及代碼編寫、組織、整合能力。

后面,找到工作了。

由于是應屆生,領導也不敢給我去做新項目,就讓我伺候老客戶,他們有什么定制化需求,我就負責改代碼,維護升級老產品的功能。

當時也是很頭痛,我感覺改代碼,比我自己重新寫還費勁。

特別是碰到上任的屎山代碼,不通俗易懂的命名規范時,就想隔著屏幕把上任工程師拖出來打一拳,什么aa,bb這種都有,你敢信?!下次領導得罪你了,就按這標準寫程序。

后面我發現啊,新手,就應該從維護老產品開始。

因為你想改代碼改功能,必須得先把原有的代碼看懂,才能改,否則改出來,就像破了幾個洞的,然后用膠布粘住的水管,這里改,那里又冒了個BUG出來。

這個過程就是在培養你的編程思維和代碼水平,而且難度也要比獨立寫低一些。

當初,我在設計無際單片機特訓營的項目時,就很想采用這種方式,先給老鐵們項目源碼,然后提要增加/修改的功能,讓他們自己先和腦細胞撕裂一下,嘗試修改源碼去實現功能,最后再看教程,這樣理解絕對透透的。但是考慮到這個周期可能比較漫長,對于焦急找工作的來說,不太適合。

這家待了大概半年后,就跳槽了,然后就開始有獨立做項目的機會,不過都比較簡單,都是基于51單片機的國內消費類產品。

做了幾年后,又跳槽到做ARM內核的項目,也是從剛開始的維護老產品,到獨立做項目。

到獨立做項目的水平,其實不難,多接觸點項目就好了,額,好像說了句廢話,但也是實話和捷徑。

難的是能實現功能的同時,把架構做好,即保證了程序可擴展性,又保證可移植性。

這就不是你接觸項目數量的問題了,而是質量的問題。

關于程序架構的基礎鋪墊,我正在寫一個系列的連載,不過發現沒多少人愛看,如果有想看的,可以評論想看,人少就不更了,這類內容寫起來費腦費手。

關于提高代碼質量,我最近發現了一本難得不錯的書,要的可也找我安排。


最近很多粉絲問我單片機怎么學,我根據自己從業十年經驗,累積耗時一個月,精心整理一份「單

片機最佳學習路徑+單片機入門到高級教程+工具包」全部無償分享給鐵粉!!!

除此以外,再含淚分享我壓箱底的22個熱門開源項目,包含源碼+原理圖+PCB+說明文檔,讓你迅速進階成高手

教程資料包和詳細的學習路徑可以看我下面這篇文章的開頭

《單片機入門到高級開掛學習路徑(附教程+工具)》

《單片機入門到高級開掛學習路徑(附教程+工具)》

《單片機入門到高級開掛學習路徑(附教程+工具)》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43884.shtml
英文地址,請注明出處:http://en.pswp.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;投影市場發展迅速目前市面上大大小小的…