前段时间,有个初学者说,自己学起来很费劲,感觉自己不是写程序的料,不适合做这个行业。
从他描述中,我看到了他对天赋的渴望。
可惜,真正的天赋型选手,真的非常少,我不是,你可能也不是。
刚开始,我学编程的动力,来自于对hacker的兴趣,觉得很酷,不学编程,似乎成不了真正的hacker...
后面,为了一日三餐,路子越走越歪了,从java开始,没想到最后特么和单片机搞到一起了。
漫长的学习过程,我都忘记骂过自己多少回蠢货了。
但...这不重要,重要的是,你发现身边有些聪明的同学,混得还没有蠢货好。
聪明的人,花里胡哨想法多,总是想走捷径,结局比蠢货还惨。
傻傻干,傻傻坚持的,才是狠人。
如果只是找个工作混口饭吃,根本都用不到天赋上场。
对于做嵌入式而言,哪怕编程水平一般,其实也能完成大部分产品了,像我一样..
我做了开发10年,真正能"惊艳"到我的编程水平,一只手都数得过来。
接手的大多数代码,都凌乱到让人咬牙切齿,想骂娘。
我见过最夸张的,变量全是什么aa,bb,kk,aaa,bbb,....注释都TM没有。
我在想,研发经理是不是刨了人家的祖坟?
第一个惊艳到我的,大概是工作第3-5年的时候,很多年,记不清了。
当时唯一的想法就是:单片机的程序,竟然还能这样写!
可惜..我入职的时候,大佬已经离职了,不然非得看下,到底什么形状的大脑,才能写出这么牛逼的程序。
以前,我有个误区,以为年纪越大的人,越厉害。
现在被90后,00后全方位吊打后,我悟了。
明明自己比他们老,却还比他们还菜....
能力,其实和时间无关,和经历有关。
就是同一时间单位下,谁经历的越多,谁就能学到越多,谁就越厉害。
想要提升编程思维和水平,底层逻辑是一样的,拼同一时间单位下,做的项目数量和质量。
为了方便对编程水平的理解,继续衍生一些话题。
对于编程来说,所有的需求,其实都是一道数学题。
工程师的任务,就是把道数学题,找一个正确的公式,用编程语言,把题解出来。
不同的人,公式可能不太一样,这取决于算法。
或许,这就是编程思维的其中一种吧。
这时,不难理解编程语言,或者单片机,其实都是器。
编程思维才是道,道具备通用性,换一种编程语言或者芯片,照样能把搬过去用。
就像<雪中悍刀行>的剑神李淳罡,一把木剑,照样横扫千军万马。
所以我说,道在,c语言照样也能写出面向对象的代码风格。
道是创造行为,如果你只是了了草草抄过几百行代码,就想实现编程思维自由,那不是天赋异禀,那是神!
前期都是靠大量模仿,模仿别人的思路,算法,代码。
这是初学期,没有办法当中的办法,学东西嘛,不寒碜..
当经历的多了,记得要把知识活用,多举一反三,靠死记硬背,换道数学题,又懵逼了。
回到算法的话题,有些铁子可能会问,初中生水平的数学功底,是不是没资格干编程?
我觉得有。
因为c语言只支持6种算数运算符,加、减、乘、除、取余和自增、自减。
初中生的数学可比这个复杂。
难的是怎么把复杂的算法,换算成只能有这些运算符的公式,这可能是初中水平搞不懂的。
但没关系,不是还有万能的某宝吗?
花点钱,找个数学厉害的人,给他需求,让他把这个换算成加减乘除的公式,你再用编程语言去实现,不就完了?
还有,就是要学会拆解需求,把大问题拆成小问题,逐个解决。
这样,面对复杂的项目,你才能稳如老狗,有条不紊。