?最近有幾個人問我,說自己代碼能力弱,編程思維幾乎也沒有,簡單的代碼,勉強能看懂,讓自己敲,就一臉懵逼,下一步該怎么學習?
10幾年前,這些問題,就像是一道道難以逾越的高墻,困擾著我。
我以為學完C語言,學完單片機,就能獨立做項目。
學完以后才發現,碰到一些自己想做的項目,想實現的功能,一旦要自己動手編寫,就完全不知所措。
我也納悶,難道是我的學習方式,方向不對嗎?又難道是我不適合干這個?
我敢保證,99%的初學者,都會經歷這個階段。
這個觀點,來自于我從業10幾年的經驗,以及無際單片機項目特訓營,幾百上千的學員案例。
下面說下不走彎路的成長路徑。聽話照做,就能在同等時間的付出下,收獲更多。
我很喜歡拿寫字,到能獨立寫作文,去比喻學習單片機, 到能獨立做項目的過程。
寫字,就像是學單片機,學C語言這些工具基礎,而寫作文,就像是做項目。
會寫字以后,就一定能寫出各種作文嗎?肯定不是的。
那中間,到底缺什么玩意?我覺得是經歷。
如果你的人生,是一張白紙,沒任何經歷,怎么可能寫出好的作文呢?
同理,如果你沒做過任何單片機項目,怎么可能具備編程思維和代碼水平呢?更別說獨立寫了。
編程思維,不是一蹴而就的,它需要時間,需要實踐,更需要正確的方法。
在初學期,我曾試圖通過死記硬背來學習編程,結果卻發現,這種方法不僅效率低下,而且容易讓人喪失信心。
在意識到這個的問題后,我開始嘗試從模仿開始。
我選擇了一些簡單的項目,先看別人是如何實現的,然后嘗試自己復現。
在這個過程中,我逐漸學會了如何將問題分解,如何一步步地用代碼去解決問題。
我的第一個單片機項目,是智障小車,那已經是10幾年前的事情了。
項目雖然磕磣,但初學者拿來練手,確實是不錯的選擇,好玩,又能初步培養一些編程思維,以及代碼編寫、組織、整合能力。
后面,找到工作了。
由于是應屆生,領導也不敢給我去做新項目,就讓我伺候老客戶,他們有什么定制化需求,我就負責改代碼,維護升級老產品的功能。
當時也是很頭痛,我感覺改代碼,比我自己重新寫還費勁。
特別是碰到上任的屎山代碼,不通俗易懂的命名規范時,就想隔著屏幕把上任工程師拖出來打一拳,什么aa,bb這種都有,你敢信?!下次領導得罪你了,就按這標準寫程序。
后面我發現啊,新手,就應該從維護老產品開始。
因為你想改代碼改功能,必須得先把原有的代碼看懂,才能改,否則改出來,就像破了幾個洞的,然后用膠布粘住的水管,這里改,那里又冒了個BUG出來。
這個過程就是在培養你的編程思維和代碼水平,而且難度也要比獨立寫低一些。
當初,我在設計無際單片機特訓營的項目時,就很想采用這種方式,先給老鐵們項目源碼,然后提要增加/修改的功能,讓他們自己先和腦細胞撕裂一下,嘗試修改源碼去實現功能,最后再看教程,這樣理解絕對透透的。但是考慮到這個周期可能比較漫長,對于焦急找工作的來說,不太適合。
這家待了大概半年后,就跳槽了,然后就開始有獨立做項目的機會,不過都比較簡單,都是基于51單片機的國內消費類產品。
做了幾年后,又跳槽到做ARM內核的項目,也是從剛開始的維護老產品,到獨立做項目。
到獨立做項目的水平,其實不難,多接觸點項目就好了,額,好像說了句廢話,但也是實話和捷徑。
難的是能實現功能的同時,把架構做好,即保證了程序可擴展性,又保證可移植性。
這就不是你接觸項目數量的問題了,而是質量的問題。
關于程序架構的基礎鋪墊,我正在寫一個系列的連載,不過發現沒多少人愛看,如果有想看的,可以評論想看,人少就不更了,這類內容寫起來費腦費手。
關于提高代碼質量,我最近發現了一本難得不錯的書,要的可也找我安排。
最近很多粉絲問我單片機怎么學,我根據自己從業十年經驗,累積耗時一個月,精心整理一份「單
片機最佳學習路徑+單片機入門到高級教程+工具包」,全部無償分享給鐵粉!!!
除此以外,再含淚分享我壓箱底的22個熱門開源項目,包含源碼+原理圖+PCB+說明文檔,讓你迅速進階成高手!
教程資料包和詳細的學習路徑可以看我下面這篇文章的開頭。
《單片機入門到高級開掛學習路徑(附教程+工具)》
《單片機入門到高級開掛學習路徑(附教程+工具)》
《單片機入門到高級開掛學習路徑(附教程+工具)》