编程问答三则

有个朋友问了我三个关于编程的问题。因为无法用一两句话回答,所以我决定发到博客上,希望对大家有所启发。

这三个问题是:

  1. 你是不是把大家看美剧的时间都拿来编程了?
  2. 你是怎么对编程产生如此大兴趣的?
  3. 你如何培养对编程的兴趣?


美剧 VS. 编程

关于第一个问题,我的答案是否定的。虽然我几乎不看美剧,但我并没有把省下来的时间都拿来编程。我是不会没事闲着写代码的。编程的第一步是需求分析,写代码一定是为了一个特定的目的。这个目的可以是刷面试题,做一个有趣的应用,或者完成课程作业等。在没有上述动机的条件下,写代码对我毫无益处。即便是有编程的需求,因为有太多其他重要的事情要做(比如读书),编程这种优先级不高的活动也就只能推掉了。


兴趣的起源

我对编程产生浓厚兴趣,这是好几个因素综合作用的结果。其中“丰年帝”和 MOOC 功不可没。虽然我高一的时候学过一个月的 Java, 但也仅限于打印几个星号的水平,可以视为零基础。“丰年帝”擅长讲计算机的黑历史,几个有趣的故事很快就勾起了我的兴趣。大一下的 C 语言大作业,我拿出了整整一个月的时间悉心伺候这门只有一学分的课。教务管理系统这个项目跟俄罗斯方块相比确实很无聊,但我经过一番折腾玩出了花样:我导出的数据是可以用 excel 读取的。我依旧记得当时做展示时台下一片惊叹的表情。这是大学时期为数不多的一个巅峰体验。收获了巨大的肯定,我意识到自己在这方面还是很有潜力的,于是打算继续搞下去。

在河北省某个不知名村庄度过了大学前两年之后,回到中关村的我十分落魄。我们的课程更少了,而且我也对那些专业课毫无兴趣,但苦于经济问题等内外条件,一直找不到可以打发时间的正事做。这时候适逢 MOOC 兴起,我就和“达爷”一同开启了刷课生涯。Coursera 的第一门课就是 Andrew Ng 的机器学习,CS 课程占据了超过半数的篇幅,这正与我的兴趣不谋而合。在那近两年无聊的时光里,我就靠 coursera 和 edX 刷掉了 22 门课程。一张张证书不断激励着我开新的课程,对编程的兴趣随着熟练度的提升也就愈发强烈。原本只是为了打发时光,到不料竟成了真爱。


兴趣的培养

我相信兴趣是可以培养的,编程也不例外。上面的例子揭示了培养兴趣的最好方法:获得足够的激励,以便持续投入,不断提升水平。除了开发教务系统和 MOOC, 我还有几个相关的例子。无论是 C++ 还是 verilog 上机考试,我都是第一个交卷的,而且会比第二个人早半个小时。这种赤裸裸的炫耀和碾压给我带来了极大的成就感。大三我最喜爱的自习场地是电机传动实验室。上百平米的教室通常只有我一人,这给了我充分思考和发挥的空间。我就在那里花了几天时间闷头捣鼓出了这个博客。直到今天都不断有人问我这个博客是怎么搭建起来的,每次被问的时候心中都是一阵窃喜:其实并不难的,但你们的无知成为了我装逼的资本。