编程到底应该怎么学?

222 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1,前言

\

看到很多同学在讨论怎么学习编程的问题,

一个是学习方式很迷茫,一个是学习心态有问题。

今天给大家讲一讲编程学习的道和术。

听着挺玄乎的啊,其实很简单的。

\

2,一般的学习方式

\

先说术,也就是做法:

\

有的说看官方文档。

但是太庞杂,而且还有很多英文的,看不懂还靠翻译。

\

然后有的是看一些视频教程。

然后这个也没有找到一些比较好的教程,而且大多付费。

\

另外就是看一些博客。

有些博客确实写得不错,但是它也不是那种成体系的,适合持续、系统的学习。

用到的时候来当作查资料还是不错的。

\

然后是看书。

一些书确实是比较适合系统性学习,但是看起来确实也是挺费劲的。

而且经常很多书的示例代码也不全或者版本、内容过时了。

\

3,最有效率的学习方式

\

这里我说一下,实际上我觉得最有效率的一种学习方法:

那就是不要怂就是干,实战实战再实战。

\

给大家看一张图啊,这个是各种不同学习方式的知识留存率。也就是学完了能记住的程度。

微信截图_20220620190116.png

你看,无论刚才说的看文档、看视频、看书、看博客,其本质都只是停留在第一层:被动学习。

除非你在学的过程中,认真去跟着敲代码、实践,不然效果都很难保证。

而实践,是除了教会他人之外,最有效率的学习方法。

当然教授给他人,这个难度比较高,需要你有一定的表达能力。

一般我们工作中只需要做到自己会用就够了。

\

所以我们就只说下这个实践。

你在实战过程中,主要目的还不是为了学知识,而是为了做成一件事。

做这件事的同时才学到了它所依赖的各种知识。

实战中,是在有目的性地寻找解决问题的办法,就是它是有着一些故事性在里面的。

\

什么是故事性?

就是人是很难纯粹记住一些抽象的、虚的概念的,

但是却能很轻松地记住一个故事,尤其是一个实际发生在自己身上的事情。

普通的学习方式学到的,只是知识,很容易忘。

而实战中学到的,就不只是知识了,还有解决问题的经验和教训,

教训我们都知道,常常都是很深刻很难忘的。

\

另外做一件具体的有价值感和成就感的事,去驱动你去主动探索,

大大提高学习兴趣和乐趣,避免太过枯燥,半途而废。

\

4,拿学习Qt来说

\

就拿Qt来说吧,怎么学。

先简单查查资料,熟悉下它是什么,有些什么优缺点,

哪些行业在用,哪些产品是它开发的,能做到什么效果。

了解这些,因为我们的目标不简单是为了学某个技术,而是你要用这个技术,学会做些什么事。

比如开发各种功能牛逼的、界面酷炫的软件。

\

好下一步想做了,怎么办?

得安装开发环境。

想以后做事效率高,怎么办?

对开发环境一顿熟悉。(利其器)

\

然后就可以直接开始实战了。

先搞个最简单的demo,研究研究。比如传说中的helloworld。

对着那个工程仔细去看,有任何不知道的,或者不太清楚的,就直接去搜。

简单的工程研究透了,就逐步增加难度,开发一些有点具体功能的程序。

然后逐渐丰富程序,不只功能,界面也不停调整美化。

注意一定要自己去敲、去试。

看得懂别人的代码,不代表你就能写得出来!

\

还注意,看工程的过程一定要带着问题去看:

比如程序的总体流程是怎样的、

核心数据是什么、做了哪些处理、数据是如何展示的、

程序有哪些模块、各个模块或类之间的关系是怎样的、

用到了哪些设计模式或方法、

哪些内容可以抽出来成为通用的组件或模板,为我所用。

这就和刚才说的各种学习方法有着本质的区别,那些方法基本都是在教你一个局部的知识点。

而阅读完整的工程,是可以从全局的视野来学习,怎么真正写好一个有规模的软件。

\

5,学习编程的心态

\

这里就说到这个道,也就是心态问题。

学编程,归根到底,实际上就是一个积累的过程。

\

所谓的技术大神,无他,唯手熟尔。

有经验的程序员为什么厉害,就在于他已经使用过各种各样的类、功能组件了。

即使以前学的时候很难的技术点,搞了一遍之后,以及简化成一个随时可以调用的模块了。

当开发一个新东西时,有80%的内容直接从自己积累的代码库里掏出来就能用。

只需要学20%新的内容就可以了。快速能干完一个事情。

\

而新手做什么东西都是从头开始学,所以如果是新手,

不要总是问怎么能快速学习,不要总想走捷径!

唯一的捷径,就是在最短的时间,把各种技术实操一遍,并总结成自己特有的代码库!

你要做的就是快速接触、使用各种技术点,而且一旦用过,要达到下次使用时迅速就会调来用。

如果记不住,那就书面化存起来,就是一定要转化为自己的经验。

做过的事情,一定不要重复花时间再次研究。

这样你慢慢就会发现,你做事情会越来越快,开始在效率上和别人拉开差距了。

这就是学编程的所谓道。

\

6,以积累的心态学习

\

遇到的一个新的类,就赶紧去翻一下头文件,看看有哪些接口,为什么这样设计。

这样以后你就不是只会这一个接口,而是对整个类都熟悉了。

就跟你工具箱新添一个新工具一样,赶紧看看说明书它有哪些功能。

\

qt的类的API设计是比较优美的,它里面很多接口都是那种特别通俗性的那种用词,

我经常直接写代码的时候直接根据想要的功能,猜着敲这个函数名,

语法提示直接一点,经常就能找到想要的接口来使用。

但即使找到了想要的接口,我也经常去翻翻头文件,看看还有哪些接口,说不定有更好用的。

而且Qt的类就那么几百个,常用的不超过100个,你一天熟悉一个,很快也都能熟悉的差不多了。

\

所以着急没有意义,实战起来,不停地在学就够了,量变会产生质变。

就是这样,编程就是这样一种实战+积累的过程。

你对这一个类库里面各种类,尤其是这种常用的类用的越熟,你以后写代码的效率越高。

就是这样一点点,写各种不同的程序,各种小功能,

然后组合你学到的各种内容,写些复杂的功能。

再最后一个完整的系统性的程序,也是由这一点点功能拼起来的。

\

就以这种方式,你学起来的印象是非常深的,

因为你学的时候都是目的性很强的去寻找答案的一个过程。

你一旦查到的资料你就记下来了,以后你只要用到类似的东西,

你都会联想到我在做什么东西的时候用到过,为什么用到的。

\

以上,就是我认为就是学习效率最高的方法,以及正确的学习心态。