学习编程的正确姿势

说明

本篇文章为知乎专栏Live《学习编程的正确姿势》(牛岱)学习笔记。
知乎网址为:https://www.zhihu.com/lives/1137494035894730752

网站篇

推荐两个网站:

  1. GitHub:代码托管——程序员的聚集地。
  2. Stackoverflow:问答社区——提出你的问题/回答别人的问题。几乎所有有价值的问题、容易遇到的问题,上面都有答案。

搜索引擎

好的搜索引擎具有的特点:

  • 广告可以有,但不要太多。
  • 搜索结果公平公正,不会照顾个别网站。
  • 能够对英文搜索提供好的结果。
    推荐三个浏览器:
  1. Google
  2. Bing国际版
  3. Quark (只有移动端)

小Tip

搜索无处不在,pdf阅读、写代码、浏览网页、都要会用搜索。搜索是面对大量信息快速获取目标信息的最有效方式。
我学东西不是从头看文档,而是直接搜索关键词,在关键词附近阅读。只看相关的部分。

你不是学生,你是开发者

!!这是最重要的一部分:自我身份的认同。学编程,最需要摒弃的东西就是“学生气”。在学习编程的过程中,不要总把自己当成学生。否则,你就一直是学生的那种思维状态。
举个例子:就拿我与旁边的人相比,如果我学习一个东西的时候,假如说我学习Java,我第一步就是先 Google:How to learn Java?或者是 The best way to learn Java.先看看那些老手推荐的学习资源。第一步先是找资源,而不是直接拿学校的教材直接看。在学的时候我不会像学生那样,从头到尾去读一本书、记笔记。我不记笔记,好奇吧,诶,我不记笔记!是在这样的,我学习一个东西之后,我下意识的反应是写成技术文章发表在网上,而不是哪一个笔记本记。因为写成技术文章或者教程的形式发表在网上有一个好处就是:你必须逼着自己给别人讲清楚。这个就是我们所说的费曼学习法。 (即:你检测自己是不是真的学会一个东西是看你能不能给别人讲清楚!)

学生有一个特点:他们的思维逻辑很奇怪,就是他们永远在准备,他们永远在夯实自己的基础。在他们的思维中,做一件事情有一个严格的先后顺序:即我要把所有的知识全学会,然后再去开发就很流畅、什么都会。

一个开发者的逻辑是:我先学最基本的东西,就马上开始开发,在开发的过程中不断遇到问题,再以问题为中心去惊醒拓展延伸的学习。针对性强。

有很多学生会问:已经学完了C语言的基础知识,我接下来该如何进阶学习?我问问题就不会这样,我会这样:我现有一个目标:用C语言实现一个图形界面的小游戏。我会问很实际的问题:如何用C语言实现图形界面。

遇到问题,去Google,去读文档。读文档往往比看视频教程效果更好,因为首先文档是最新的,若去买书那么很可能是过时的。

学生经常问这样一个问题:学了这么多知识,忘了怎么办?学生的思维方式就是这样,总是以一种修炼内功的方式,把自己的人生活成一种升级打怪那种,不断增长经验增长经验,到等级最高后秒杀所有人,他们就是这种想法。

但是开发者不这样,它永远关注自己开发出了什么东西,他不关注自己学会了什么语言!

比如Linux的作者Linus,人们在提到他时会说Linux的作者,而不会说C语言大师。在开发Linux的过程中,他一定就是开发者的思维,他一定想着:我一定要开发出一个很好地操作系统。他一定不是想着:我一定要夯实基础,我要把所有东西都学会,开发之后就没有问题。又比如说同样是学习Java语言,学生会这样想:我一定要学好Java语言,在考试中取得高分,为以后的学习打下坚实的基础。学生就会这样想。如果我学Java我就会这样:我第一部绝对不会是拿学校发的那本教材去读,我会去Google:Java语言适合用来做什么?学习一门语言之前一定要明白可以用来做什么,然后再给自己定目标。比如Java用来作Web开发,我就给自己定下目标:学习半年后,要做一个中小型的基于Web的企业管理后台,我定的目标绝对不是“我要学会Java”。!!这个思维方式特别重要!!

有很多学生把编程搞得就像修行一样:学习就是要坚持,就是要座冷板凳,他总是把学习搞成一个很痛苦的事。就编程这个东西,他的实践性很强,一个实践性很强的东西,你一定可以把他变得很有趣的。兴趣这个东西很空泛的,只有成就感和反馈是实实在在的。搞一个东西完全没有反馈那就很难坚持下来。编程就有反馈,你完全可以自己做个小东西出来。所以说学编程不要拿着一本教材就是去看,然后一遍一遍跟着书上的例子跑程序。你要先给自己定个目标学完基础之后开始做,边做边学,边做边学。不断遇到问题,再返回来去看知识点,再反过来用有这样一个交替的过程,你的进步速度特别快,而且成就感特别强。

把自己当成学生的人,他的简历很可能是这样的:我熟练使用XXX,我精通XXX,我会XXX。这种简历是最差的。呵!啥都会!
最好的简历是这样:我是XXX项目的作者,我用XXX语言是现了XXX东西,我的Github账号是XXX,我有一个500星的项目,一个链接给过去。

知识储备与项目实战的关系

现实世界中的人,处理现实世界中的问题,往往不是一口气完成所有知识储备,然后一口气顺畅的进行开发,进行实践
现实世界是,先进性最基础的知识储备,然后马上开始实践,实践中不断遇到各种问题,不断解决,以问题为中心延伸,完成细节知识的补充
You can never understand everthing. But you should push youself to understand the system.
吾生也有涯,而知也无涯。以有涯随无涯,殆已! 不要想着把所有的知识都学会!

习惯篇:写出好的代码

小习惯

  1. 不要嫌变量名长,最好可以直接通过变量名推测变量的作用。
  2. 重复出现的代码要封装成独立的类或函数。
  3. 提前降低代码的耦合度,不同作用,不同类别的的代码不要混在一起,最好分成独立的文件.
  4. 电脑内存最少8G,否则很多软件用不了.

计算机的四大课程

你可能感兴趣的