你会如何重新学习编程?
我觉得这是一个非常好的问题。计算机编程这门学科本身非常年轻,技术日新月异,我们走过的路都不一定是最好的路。不断地反思可以给后面的同学更多的经验,帮助大家成长的更快。下面是我的一些思考。

简单的语言入门
我一直认为,一门新的学科的入门,一定要激发兴趣,最重要的一点,就是要深刻认识学了有什么用,能够解决什么问题。因此,上手的编程语言既要简单,又要实用,比如 Python,JavaScript 这样的语言。
过早的接触繁复的语言很容易迷失在一些细节之中,让人沮丧。
应用驱动
一但熟悉基本的语法,就可以开始多多关注应用,探索自己的兴趣所在。
我建议在学习的早期,一定要接触不同领域的编程应用,比如网页前端、后端、数据库、移动开发、数据挖掘等等,往底层也要去看看计算机网络、数据库、编译器、操作系统的实现等等。
同时,抓住机会多参与企业的实习,我在湾区招聘不少本科生的简历上都是大一大二大三每年都出去实习,而且都在不同的公司,不同的方向。
计算机科学的领域已经十分广阔,不可能每一个方向都精通。探索地越早,就越容易了解自己真正感兴趣的方向,有助于深入地学习某一个方向的课程。
使用工具与制造工具
作为工程师,我们的职责就是不断地使用工具和制造工具。而真正能让我们无可替代的,是制造工具的能力。
我看到不少人的困惑,为什么我们要学习计算机原理,数据库的实现,编译原理,操作系统的实现这样的课程。很简答,因为这是计算机这个领域人类造出来最完美工具。它们凝结了无数人的智慧,解决了大量复杂的问题。站在前人的肩膀上,我们可以学习解决问题的思路,不断地记忆和模仿,造出更好的工具。
使用工具和制造工具的能力相辅相成,但是在职业发展的方向上会慢慢出现分叉。在探索的过程中,可以多多思考,你喜欢解决的问题,到底是技术需求,还是业务需求。你觉得最快乐的事情,是实现了非常精密的系统在复杂的业务环境中抗住了一百万的 QPS,还是使用一些工具的组合(哪怕很低级),为公司多赚了一百万美圆。
观摩顶级学校的公开课程
越来越多的顶级计算机学校都把计算机相关的课程公开给所有人,比如斯坦福、CMU 等学校。这些学校的课程的老师和助教都是最顶级的,课程的设计也都非常循序渐进。学有余力的同学不必拘泥于自己学校的课程进度,直接接触这些课程能让你进步速度更快。
继续阅读
全部内容为什么说程序员学习只看视频不好,还要多看书?
这个问题让我想到了一个本质的观点:学习编程不是为了看会做什么,而是要真正理解和掌握。 从我在CMU的经历来看,最重要的不是获取知识的方式,而是如何让知识真正变成自己的。正如我在《如何做错题集》中说过的: "因为学习就两步:1.找到不会的,2.把不会的变成会的。绝大部分人把时间花在了做题上,而忘了其实做题是为了找到不会的...
用 LaTeX 撰写的学术论文怎么方便地供老师评注和修改?
Latex是文本文件,所以可以使用Git进行版本管理,进行评注和修改 但是要是老师不熟悉Git的话,那就参照别人的方法把╮(╯╰)╭
编译原理是不是计算机基础课程中最难的?
当然不是 因为它背后有很多理论的支持 比如自动机 文法等 而这些理论恰好又比较好出题 比较好实现 所以比较好变成作业 对于不熟悉的人来说看起来往往很难 而真正难得东西 比如OS 往往由于国内没几个老师有能力教的好 所以最后反而让人觉得没那么难了
