Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自学的程序员如何找到好工作? #5

Open
lietoumai opened this issue Aug 27, 2017 · 0 comments
Open

自学的程序员如何找到好工作? #5

lietoumai opened this issue Aug 27, 2017 · 0 comments

Comments

@lietoumai
Copy link
Owner

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 岁的时候,你已经轻松地将两千多小时用于锻炼技能,你的个人作品集中也有了大概十到二十多个软件,你学习到的经验是那些仅仅上课的人无法比拟的。

更重要的是,你已经清楚地告诉别人,你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点。

一旦你找到了工作,请继续在业余时间创建东西,并提升你的工作技能。你的提升速度将比你的同事更快,因为他们在下班回家后看电视,而不是学习、成长或创建东西。他们拿到了薪水就回家享受去了。

你做的越多,你学的也越多;你学的越多,你的价值就越高;你的价值越高,你就越容易找到工作,你的工资也就更高,这是一个良性循环。

所以,去做些东西出来。现在就开始写代码吧!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant