亲身经历告诉你该如何自学编程

我2016年硕士毕业后,从一个纯机械学生开始转行做软件开发,其中少不了要自学编程,这其中经历的到现在看来还历历在目。

我曾经写过一些关于我转行做软件开发经历的文章,如果你感兴趣,可以点击这里的链接(我机械的,转行成功了)看一下,这里就不再赘述了。

在链接文章的最后,我写了一段话,很多朋友反馈特别有共鸣:

只有亲历过的人才知道,别听网上谁说转行很容易,那都是骗人的。

除非你能力出众到,面对一个全新的领域,别人一说你就懂。

隔行如隔山,但你是个天才。

否则,没有做好完全的心理准备,没有准备好的退路,没有足够的勇气,不建议贸然转行。

转行是这样,自学编程其实也是一样的,因为都是一个全新的领域,隔行如隔山,历来如此。

这里想谈谈一个问题:自学编程真的难吗,为什么这么难?


这件事其实因人而异,如果把编程难易度用分数来衡量。我见过一个朋友也是转行重新学习编程的,他貌似有点编程的天才体质,很多东西一学就会,一点就通,据他反馈编程的难度估计也就40分。

而我当初自学编程时,感觉难度大概有70分。

而很多人在自学编程时,难度甚至可以达到120分甚至更高,确实因人而异,体质变化量真的非常大。

我不讨论那些天才,以及觉得难度在70分以下的人的感受,只说一说以我的感觉,难度在 70 分以上的感受:难在哪?

第一,难在编程思维的锻炼

很多新手去学编程,可以打印一句 Hello World 就觉的编程好容易,可以把一些书上或课程中给的示例代码复制下来,跑通了也觉的编程好容易。

甚至现在 AI 非常牛,有一些想法让 AI 帮忙做一下编程,代码可以跑通也觉得编程很容易。

实则不然。

真正的编程绝不是以上的场景。真正的编程是你在面对一些真实问题时,可以习惯用编程思维解决问题,但是在日常生活中养成编程思维其实是有些困难的。

先说一个真实的例子。

我带过一个同学学习 python。他因为刚上班,总是弄不清自己的税前工资以及税后到手工资的关系,总觉的到手工资和自己预想的不一样,于是和我讨论之后,他觉得自己写一个程序用来计算自己的到手工资。

因为每个月交的五险一金的比例以及自己的补贴+基本工资都是知道的,他觉得可以根据这个来精确的计算出自己每月的工资。

因为现在的工资计算都是梯度扣税,为了完成这件“大事”,他还把梯度计税制、速算扣除数等概念搞得清清楚楚,然后写完代码之后和我讲了一遍,关键是我也听懂了(顺便也把计税规则了解了一下)。

随后他每个月便用自己写的那段 python 程序来计算自己当月到手工资情况,非常的准确。

上图是他完成的计算扣税的程序部分截图。

这是一个例子,学习编程要学以致用,这样学的才快。当然了,因为编程时他刚接触 python 没多久,出现了很多bug和他无法自己单独实现的情况,好几次是我和他一起解决的问题。

下图是运行他的程序后,打印出来的结果(以每月10000税前收入,共12个月为例):最后 Summary 部分给出了一年五险一金共缴纳了多少,税后到手工资多少等等信息。

这虽然是一个很简单的例子,但是编程完成后,他的成就感非常强。我只能说他的这种编程思维是有的,确实非常棒。

后来这位朋友说:“等 python 学扎实了,希望可以用它来开发一些更复杂的功能,来管理自己的收入支出等等”。

所以,如果你觉得难,你先回想一下,自己是否有过类似的经历,在学习编程过程中用所需的知识解决一些实际用到的问题,以此来锻炼自己的编程思维呢?

第二,难在编程基础的理解

当然你有了编程思维那是第一步。“我整天想着自己开发一个软件来解决我的一些问题,但是不会编写代码也是徒劳”。

想独自完成代码的编写,需要对编程的基础有非常深刻的理解才好。

不论你是学 python/C++/JAVA 还是其他任何语言,很多计算机基础的内容是想通的。

比如内存、数据结构、算法等等,这些可以认为是构建“编程世界”的积木,你只有把这些基础概念掌握透彻,才能用他们搭出非常复杂且精妙的软件程序出来。

我在机械硕士毕业那年,第一次接触编程是 C/C++ 语言。

C/C++语言我认为要比很多高级编程语言难学很多,为什么呢?

因为当我将 C++ 学到我自认非常熟练的程度后,后来工作中会大量用到 python时,很多 python 语法和基础一看就明白了,甚至可以说,没有专门去学过 python,用到了就百度一下。

到目前为止,用 python 开发过很多大型软件(AI编译器前端很多都是 python 代码,比如 TVM)。这都是当初花了大量的时间去学习 C++ 以及计算机体系结构和数据结构以及算法带来的好处。

这里说一下当初自学 C++ 是怎么学的。

我当时C++基础有些薄弱,就买了一个399的C++课程,一个百度资深工程师的录播课。

我每天上下班路上坚持看。

从家里到公司坐地铁刚好半小时,每天上下班看一个小时,坚持了 3 个月,将课程视频来回看了 6 遍,然后到公司一有闲暇时间就练习课程中的技术,3个月下来,C++就真的是很熟练了。

以至于后来的面试,我甚至可以和面试官探讨很多C++模板的底层实现。

一旦学会了C++,再去学python或者用 python 就真的非常容易。

总结下来就是:看不懂很正常,一遍不懂就看两遍,两遍不懂就看三遍,我当时看了六遍,以至于现在都能复述出很多课程中讲师对于一些概念的讲解。

如果你也能做到这一点,我相信你也可以做到对一门编程语言非常熟练。

当然,光看课是不行的,要在看课学习的过程中自己去实战,说白了要自己去写代码。

编程这个行业很奇怪,很多东西你再懂,但是不会写代码也没用,这也是为什么很多公司招人都要有笔试或者编程题的原因。

说句题外话:现在很多大学生或者初学者热衷于考计算机的一些认证证书,以此来强调自己的编程或者计算机水平有多高。

说句冒犯的话:以考证为目的我觉得这样意义不大,除了在考证过程中自己可以学习一些知识以外,如果没有将技能练到手,那些证书并不会对你有太大帮助。如果是评级、评职称那另当别论。

因为很多时候你见到一些真正的编程大佬,他们从来不会吹嘘自己一个有证的程序员,相反只会吹嘘自己开源的那些代码在 github 获得了多少星标。

所以,基础很重要,实战更重要,技能学到手才对呀。

剩下的就是在工作中不断地打磨自己对编程的理解,不断的精进自己的水平。

最后,再回答一下上面那个同学的问题。

编程学习入门确实很难,但说起来其实也没那么难 ——

学习加实践,再加一条坚持。

初学确实很多东西看起来都不懂,但是一点点啃下来之后,就会发现难点正在就一点点消失,这其中最怕的就是半途而废。


码字不易,点个赞呗。

我是一名 AI 攻城狮,如果你也想学习 AI ,欢迎来添加我的私人微信(ddcsggcs),可以咨询也可以围观朋友圈呀。

也欢迎你点击下方关注我的公众号,会有很多好玩的AI技术分享~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值