2016 年有位年轻的程序员在 Quora 上提问求助:
我今年 17 岁,从 14 岁开始编程。我主要关注 Java 语言,并在 AP 计算机科学这门课上拿了 5 分。我相当精通 Java(比如语法、主要类、GUI/JFrame 等),HTML5 和 CSS3 也不错。我感觉自己缺乏很多有用的技能,来帮助我在人才市场上推销自己(比如数据库的工作原理,以及我应该使用哪些工具),我很好奇其他人是如何学习这些东西的。我打算去大学拿一个软件开发的学位,但我开始感到有点沮丧,觉得读大学的目的就是为了工作。现在有哪些我应该上的课程,或者应该做的事情吗?
下面是 Brain Knapp 的回答分享
我认为你的看法错了。你觉得你需要上课,让别人来教你,告诉你答案。从根本上讲,自学的程序员能够做不一样的事情。
自学的程序员和自学的吉他手有很多共同点。我不知道你是否玩过吉他,所以我将向你解释如何自学吉他。
首先,这一切的开始是由于某人与某个吉他手产生了共鸣。大多数突然想要自学吉他的人,是想要成为另一个吉他手。之后,他们下定决心——“我也可以成为一个吉他手 ”,于是去了当地的乐器店,买了一把二手吉他(因为二手吉他更便宜,但也很酷)。
接下来可能会有两种情况,要不买一本“吉他入门”或类似的书籍开始自学,要不打开 YouTube,开始学习如何弹奏自己喜爱的歌。那些尝试学习弹奏喜欢的歌的自学者,往往学得更好。
当年轻的吉他手主动地学习某首歌时,他们往往需要观看视频、打印曲谱、练习和弦等等。然后,根据拿到的视频和曲谱,他们会坐下来尝试重新演绎歌曲。
经过数小时的练习,不断重复和弦、独奏、节拍等,他们将能够以自己的形式表演那首歌。它不再是原来那首歌,但也够酷。
然后,他们会拿起另一首歌,重复这个过程。一路走来,他们不断学习节拍、技术以及其他的东西,甚至都没有意识到学习的内容。在知道专业名词和理论前,他们已经懂得如何操作。
最终,弹吉他变成了一种“直觉”,学习一首新歌也变得习以为常且不再痛苦。吉他的“语言”变得像你我说话那样容易。
这一切的发生,背后是数千小时的艰苦练习。即使每天只练习一小时,也需要耗费数年。
那么,这和自学的程序员有什么关系呢?
事实上,真正成就自学的程序员的,就是他们会自己创建东西,很多东西。要成为一个具有卓越技能的出色程序员,你必须创建东西,写代码。
上课学习理论知识固然是好的,但很多教授不能跳出条条框框的束缚,以自己的方式编程。就算他们努力尝试,也做不出别人愿意用的应用程序。
这并不是说他们不了解教授的知识,而是说,作为一名教授,他们掌握的技能是研究和理论性理解,而不是写代码和为客户提供价值。
你看到区别了吗?
我合作过的最好的程序员,他们的工作方式就是做东西,做很多东西,并且几乎一直这样。
例如,现在几乎每个人都使用 WordPress。在 WordPress 出现很久之前,我就用 PHP 和 MySQL 创建了 3 到 5 个不同的内容管理系统。我写过游戏、移动应用程序、框架,还有 SAAS 应用程序。
没人付钱让我做这些事情。我做这些事纯粹是出于好玩、学习或好奇的目的。
我已经好几年都没有上过课了,即使上了,我也不觉得这会对我的事业有任何帮助。然而,如果我决定坐下来,从头开始创建我自己的计算机语言或操作系统,我打赌我一定能在过程中学到很多有趣的东西。
是的,我可以带着那些想法上课,但在创建东西,犯下错误,以及真正“体会到”这一切的经历中,相比读一本书或听一次讲座,我能收获更多。
因此,我给你的建议(如果你做到了,相比没有做的那些人而言,会带给你巨大的优势),就是:
解决一个你想解决的问题。创建一个用于某件事的软件,解决一些你本人或他人想要通过软件解决的问题。每天为这个软件写代码,晚上写,周末也写,每天都写。即使你每天只花了 15 分钟写代码,也没关系。
最终,你将得到一个能用的软件,这很不错。
然后,你再重复这一过程。做一个其他的东西。不断地做。花费大量的时间,通过创建更多的东西来提升你的技能。
做东西的同时,注意在你的网站上保存工作,并将其放在一个作品集中。每次你结束了一个项目,就将它上传到 Hacker News、Reddit 或其他什么网站,并发条关于它的博文。
你现在仅仅 17 岁,当你 20 岁的时候,你已经轻松地将两千多小时用于锻炼技能,你的个人作品集中也有了大概十到二十多个软件,你学习到的经验是那些仅仅上课的人无法比拟的。
更重要的是,你已经清楚地告诉别人,你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点。
一旦你找到了工作,请继续在业余时间创建东西,并提升你的工作技能。你的提升速度将比你的同事更快,因为他们在下班回家后看电视,而不是学习、成长或创建东西。他们拿到了薪水就回家享受去了。
你做的越多,你学的也越多;你学的越多,你的价值就越高;你的价值越高,你就越容易找到工作,你的工资也就更高,这是一个良性循环。
所以,去做些东西出来。现在就开始写代码吧!