(转)自学的程序员如何找到好工作?
【伯乐在线导读】: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 岁的时候,你已经轻松地将两千多小时用于锻炼技能,你的个人作品集中也有了大概十到二十多个软件,你学习到的经验是那些仅仅上课的人无法比拟的。
更重要的是,你已经清楚地告诉别人,你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点。
一旦你找到了工作,请继续在业余时间创建东西,并提升你的工作技能。你的提升速度将比你的同事更快,因为他们在下班回家后看电视,而不是学习、成长或创建东西。他们拿到了薪水就回家享受去了。
你做的越多,你学的也越多;你学的越多,你的价值就越高;你的价值越高,你就越容易找到工作,你的工资也就更高,这是一个良性循环。
所以,去做些东西出来。现在就开始写代码吧!
转自:自学的程序员如何找到好工作? - 文章 - 伯乐在线
伯乐在线 > 首页 > 所有文章 > 开发 > 自学的程序员如何找到好工作?
原文:
How do self-taught developers actually get jobs?
Original question from Quora:
How do self-taught developers actually get jobs?
I’m 17 years old and I’ve been coding since I was 14. My main focus is Java and I managed to score a 5 on my AP Computer Science course. I’m pretty well-versed in Java (e.g. Syntax, major classes,, GUI/JFrame, etc.) and I’m decent with HTML5 and CSS3. I feel like I lack a lot of the skills I need to actually be able to market myself (e.g. How databases work and which ones I should use) and I’m curious as to how others learn these things. I do plan to go to college for a degree in Software Development but it’s beginning to get frustrating feeling like I have to go to college in order to be employable. Are there courses I’m not taking that I should be or things I’m not doing?
My Answer:
I believe you are looking at it wrong. You believe you need to take courses for someone else to tell and teach you the answer. Fundamentally, self-taught programmers do something different.
A self taught programmer has a lot in common with a self taught guitar player. I don’t know if you’ve ever played guitar, so I’ll explain how a self-taught guitar player might learn guitar.
First, it starts with someone who sees someone who they identify with playing the guitar. Most people who play guitar at some point want to be like someone else who plays guitar. After that, they decide “I can be a guitar player too!” and they go to their local music shop and buy a used guitar (because they are cheaper, but still cool).
Next, one of two things will happen, either the person will pick up a “teach yourself guitar” book in some form, OR, they will go to YouTube and start learning how to play their favorite songs. The ones who try and learn their favorite songs tend to do better.
Now, when a young guitar player is motivated to learn a particular song, they will watch videos, print out tab sheets, the chords, and so on and they will sit and try and recreate the song themselves based on the videos and tabs available to them.
After hours of practice, going over the chords, solos, picking patters, and so on, they’ll be able to play their own version of that song. It won’t be quite the same, but it will be close enough for rock n roll.
Then, they’ll pick up another song they like and another song they like. Along the way, they will learn patterns, techniques, and so on without even realizing what they are. They will just figure out how to do them without learning the names and theories.
Eventually, playing guitar will just “feel right” and picking up a new song will be common and painless. The “language” of guitar will be something they speak like you and I speak words.
This all happens after thousands of hours of accumulated practice. Even at hours of practice a day, it takes years.
So, what does this have to do with self taught programmers?
Well, the thing that really makes a self taught programmer is that they build things. Lots of things. To become a great programmer with very marketable skills, you have to build things and write code.
Taking classes and learning the theory is great, but a lot of professors couldn’t code their way out of a cardboard box. They couldn’t build you a useful application that anyone would want to use if they tried.
It’s not that they don’t know their stuff, but rather that the skill of being a professor is research and theoretical understanding, not building code and delivering value to a client.
Do you see the difference?
The way that the best programmers I’ve ever worked with got good is they built things. Lots of things. Pretty much all the time.
For example, nowadays everybody and their brother uses WordPress. Long before WordPress, I built for myself something like 3 or 5 different content management systems in PHP and MySQL. I’ve built games. I’ve built mobile apps. I’ve built frameworks. I’ve built SAAS apps.
Nobody paid me to do any of those things. I did them for fun or learning or curiosity.
I haven’t taken a class in years and I don’t think they would really move the needle on my career much if I did. Yet, if I sat down and decided to build my own computer language or operating system from scratch, I bet I’d learn a lot of interesting things along the way.
Yes, I could take a class on those ideas, but I’d learn more from building something, making mistakes, and really “feeling” the experience of it all, than I would from reading a book or listening to a lecture.
So, this advice I will give you that will give you a huge advantage over everyone else who mostly doesn’t do this…
Solve a problem that you want to solve. Build some software that does a cool thing you want software to do or someone else wants software to do. Write code for that every single day. Nights, weekends, every day. Even if you only spend 15 minutes, fine.
Eventually, you’ll have something that works and is pretty decent.
Then, you do that again. Build something else. Keep building and building and building and building. Invest the thousands of hours into your skill by challenging yourself to build more things.
As you are building, save your work and put together a little portfolio on your website. Each time you finish a project submit to Hacker News or Reddit or whatever. Blog about it.
You are 17… By the time you are 20 you could easily put 2,000+ hours into developing your skill, have like 10-20 things in your portfolio, and you’ll have learned many lessons that those who just take classes will never learn.
More importantly, you’ll be able to clearly demonstrate that you can write code, solve problems, and ship something to the world. That is valuable. That is the kind of thing companies are looking for.
Once you land a job, keep building in your spare time and promoting your work. You’ll rise faster than your peers because they go home and watch TV and aren’t learning or growing or building ANYTHING. They get the paycheck and go home.
The more you build, the more you learn. The more you learn the more valuable you are. The more valuable you are, the easier it is to get a job, the more you get paid, and so on.
So, go out there and build something. Write the code!
-Brian
P.S. I unpack more ideas in Creative Genius.
Jul 7, 2016
in Quora