来讲讲我的经历吧…
我非计科专业,年毕业于电气工程专业…
当时觉得这个专业没钱途,也不适合我,就计划着转行。
那个时候也很焦虑和迷茫,白白浪费几年时间,最后又得重来,真是造孽..
年纪轻轻就开始感叹人生真特么的坎坷。
焦虑和迷茫了一个多月,除生活变得更糟,别无变化。
心里也焦急,再这么下去就废了。
出于我性格比较内向,可能比较适合做个程序员。
加上自己从小家里就有电脑,初中把各种游戏玩的很溜,像CS、泡泡堂、传奇之类的,也自己租服务器开过传奇sf,给自己刷了一套终极装备去虐普通玩家。
虽然有一些优势加持,但实不相瞒我最看重的还是程序员工资真香。
刚出学校出来,思维也没现在成熟,学习也盲目,工作多年才知道要根据职位需求去规划学习路径。
我第一次是学习的java,先自学了javase基本语法,又学了oracle。
学完了感觉还是啥都不懂,跟着视频教程写了个坦克大战游戏,还发给朋友炫耀一番,其实low的一逼。
脱离教程,似乎一切都归零了…时间已经不知道过去了多久,反正至少按月计算。
我又开始陷入那该死的迷茫期,这水平能找得到工作吗?
后面又深入研究了职业方向,发现学完javase只是刚刚开始,只是基础。
想达到就业程度可能要需要从2个方向选择:javame和javaee。
一个做手机应用,一个做Web和企业级应用,具体是不是我也是很懂,因为后面我没继续学了。
学尼玛,感觉学完都要退休了,看来高薪也不是这么好拿的。
再次陷入迷茫期,我都想着要不要先进厂拧螺丝维持生活,积累点工作经验。
如果你现在面临这个阶段,我建议是千万不要!
一进去人基本就废了,人一但稳定下来,就很难折腾得起来。
如果实在没钱吃饭了,就先找个清闲的工作,哪怕是当保安也比进厂打螺丝强,保安起码时间多啊,可以利用空闲时间学习。
进厂跟机器人没区别了,无情地被厂长压榨,不可能让你停下来。
后面,我无意间接触到单片机,这个简单,编程语言只需要学习C语言。
关键这玩意对你学习成果反馈也很快,几个小时就能让你做个看得见摸得着的流水灯,也比纯粹的写代码有趣多了。
我就是从那时候开始接触的C语言,直到找到工作以后,我的c语言都是浑水摸鱼的水平。
现在11年过去了,我的水平也增长明显,自己写过架构、实现过队列、链表之类的数据结构。
我对自己的要求就是,既然我做单片机开发,基于单片机产品的程序我能独立做出来就够了。
现在做到了,不跟那些大佬比了,躺平了,承认自己平凡挺好。
回顾我的成长历程,估计可以写一本书,毕竟我输出的原创经验已经超过10万字。
下面,我做针对今天的主题,做一个总结。
C语言编程水平提升,你必须会经历的几个阶段:
1.新手期
就是你刚接触c语言,学会了基本的语法但你会发现什么项目都做不出来。
可能只会一些简单的,比如排序算法,各种printf,单片机各种外设使用。
但是把代码整合在一起,实现项目功能逻辑就一脸懵逼。
这个时候,你就会进入一个新手瓶颈期。
这个时期你会特别敏感,会质疑自己哪里没学好,是不是基础太差。
你可能会选择重新去把c语言过一遍,像翻女友旧史一样去查阅市面上一些c语言教程。
还有一种可能,就是你觉得自己不适合学编程,最终放弃了。
我当初学java就是第二种,学完啥都做不出来然后放弃了,其实跟基础没太大关系,没必要再重头学一遍c语言语法,学完你会发现还是一样。
其实你现在最缺的是两样东西:编程思维和编程水平。
编程思维决定你是否有实现功能的思路,编程水平决定你能否用代码实现这个思路。
这两个东西只能不断通过项目去培养,就像你刚学会写字,不可能马上就会写作文对吧?
那些不理解我们无际单片机编程特训营的,明明买个单片机开发板学习才百来块,我们却收费过千。
就是因为开发板只能让你学会c语言和单片机这些工具,并不培养你的编程思维和水平,我们是以实际项目驱动,定位价值也不同。
2.破茧期
如果你想通了,就能顺利到达这个阶段。
这个阶段最好的方法就是找各种项目来做,不通过项目你的编程水平永远也提升不了。
前面也不追求项目代码能写多好了,能实现功能就可以了。
拿单片机开发来举例,这个阶段不用再买开发板了,要买就买项目,某宝有很多DIY的可以买来练手。
开发板和项目都是电路板,区别就是开发板引出单片机所有外设,你漫无目的地整吧..
项目是有特定的产品功能,你学习更有目的性。
这个阶段对自己要求也不要太高,不需要纠结代码写得好不好,主要以实现功能为主。
3.破茧瓶颈期
等你有60%的项目都能独立写程序做出来以后,你会再次进入一个瓶颈期。
我经历这个阶段是在工作了2-3年左右,当时有点飘了,感觉自己什么项目的代码都不怕了。
但是有一个问题,就是总是感觉自己的代码乱七八糟的,不够专业。
虽然我当时还不知道好的代码应该是怎么样的,毕竟没接触过。
用我现在的理解,代码写得好不好主要体现在两方面:架构和算法。
架构相当于你程序的”地基”,架构不好,会影响你代码的稳定性、功能可扩展性、代码在不同平台(芯片)的兼容性。
算法就是你去实现某种功能的方法,很多算法都是先用数学公式计算好,再用代码去实现,算法越好,执行效率越高。
如果没人跟你说,现阶段的你根本领悟不到这两点。
我当时就是碰到这个瓶颈,但不知道怎么去提高。
只是用了一些花里胡哨的方法,让我的代码看起来更专业,比如说明明可以不用指针,我用了,只因为指针看起来更复杂。
4.快速提升期
如果有个牛逼的工程师带你做一些中大型项目,就能迅速突破。
不过不是每个人都有这种机遇,比如说我就没有,所以我在这个阶段停留了几年的时间。
做小项目还没用,必须得接触中大型项目。
只有经历过中大型项目,你才能深刻理解程序架构的重要性,理解指针的奥妙等等你能学到的东西太多了。
无际单片机编程的课程第三阶段项目定位就是帮学员突破这个破茧瓶颈期。
项目有自己写的小系统,无线传感器组网功能,有菜单功能、可以通过APP控制主机状态,有防盗报警功能等等。
重点培养功能实现思路,锻炼编程水平,用c语言高级语法解决实际产品开发的痛点。
5.架构师
这个阶段你的水平其实已经很不错了,除了编程水平,更多是在思维上的提升。
比如说模块化思维,面向对象编程思维。
你可以自己写一些程序架构,不一定要从头到尾自己写,还是会有难度。
一般都是先模仿别人的架构,然后再超越,哪怕是顶尖的都是这样过来的。
类似的程序架构有很多,拿单片机开发来说,RTOS、蓝牙协议栈、STM32固件库等等都是可以的。
我在年也录制了一套系统的程序架构的视频教程,基于单片机的,算是我多年的经验总结,可直接移植到自己项目使用,最重要的是完全开源!完全开源!完全开源!
这里不方便放链接,直接找无际单片机,全网同名的。
不知不觉又肝了多字,虽然是一篇文章,也更像是我的回忆录。
如果对你有帮助,发财小手点起来,给我安排个三连,感谢!