(轉(zhuǎn))自學(xué)的程序員如何找到好工作技羔?
【伯樂在線導(dǎo)讀】:2016 年有位年輕的程序員在 Quora 上提問求助:
我今年 17 歲,從 14 歲開始編程。我主要關(guān)注 Java 語言,并在 AP 計算機科學(xué)這門課上拿了 5 分。我相當(dāng)精通 Java(比如語法拓提、主要類、GUI/JFrame 等)隧膘,HTML5 和 CSS3 也不錯代态。我感覺自己缺乏很多有用的技能寺惫,來幫助我在人才市場上推銷自己(比如數(shù)據(jù)庫的工作原理,以及我應(yīng)該使用哪些工具)蹦疑,我很好奇其他人是如何學(xué)習(xí)這些東西的西雀。我打算去大學(xué)拿一個軟件開發(fā)的學(xué)位,但我開始感到有點沮喪歉摧,覺得讀大學(xué)的目的就是為了工作⊥щ龋現(xiàn)在有哪些我應(yīng)該上的課程,或者應(yīng)該做的事情嗎叁温?
下面是 Brain Knapp 的回答分享︰
我認為你的看法錯了再悼。你覺得你需要上課,讓別人來教你膝但,告訴你答案冲九。從根本上講,自學(xué)的程序員能夠做不一樣的事情跟束。
自學(xué)的程序員和自學(xué)的吉他手有很多共同點莺奸。我不知道你是否玩過吉他,所以我將向你解釋如何自學(xué)吉他冀宴。
首先灭贷,這一切的開始是由于某人與某個吉他手產(chǎn)生了共鳴。大多數(shù)突然想要自學(xué)吉他的人略贮,是想要成為另一個吉他手甚疟。之后,他們下定決心——“我也可以成為一個吉他手 ”逃延,于是去了當(dāng)?shù)氐臉菲鞯昀姥I了一把二手吉他(因為二手吉他更便宜,但也很酷)真友。
接下來可能會有兩種情況黄痪,要不買一本“吉他入門”或類似的書籍開始自學(xué)紧帕,要不打開 YouTube盔然,開始學(xué)習(xí)如何彈奏自己喜愛的歌。那些嘗試學(xué)習(xí)彈奏喜歡的歌的自學(xué)者是嗜,往往學(xué)得更好愈案。
當(dāng)年輕的吉他手主動地學(xué)習(xí)某首歌時,他們往往需要觀看視頻鹅搪、打印曲譜站绪、練習(xí)和弦等等。然后丽柿,根據(jù)拿到的視頻和曲譜恢准,他們會坐下來嘗試重新演繹歌曲魂挂。
經(jīng)過數(shù)小時的練習(xí),不斷重復(fù)和弦馁筐、獨奏涂召、節(jié)拍等,他們將能夠以自己的形式表演那首歌敏沉。它不再是原來那首歌果正,但也夠酷。
然后盟迟,他們會拿起另一首歌秋泳,重復(fù)這個過程。一路走來攒菠,他們不斷學(xué)習(xí)節(jié)拍迫皱、技術(shù)以及其他的東西,甚至都沒有意識到學(xué)習(xí)的內(nèi)容要尔。在知道專業(yè)名詞和理論前舍杜,他們已經(jīng)懂得如何操作。
最終赵辕,彈吉他變成了一種“直覺”既绩,學(xué)習(xí)一首新歌也變得習(xí)以為常且不再痛苦。吉他的“語言”變得像你我說話那樣容易还惠。
這一切的發(fā)生饲握,背后是數(shù)千小時的艱苦練習(xí)。即使每天只練習(xí)一小時蚕键,也需要耗費數(shù)年救欧。
那么,這和自學(xué)的程序員有什么關(guān)系呢锣光?
事實上笆怠,真正成就自學(xué)的程序員的,就是他們會自己創(chuàng)建東西誊爹,很多東西蹬刷。要成為一個具有卓越技能的出色程序員,你必須創(chuàng)建東西频丘,寫代碼办成。
上課學(xué)習(xí)理論知識固然是好的,但很多教授不能跳出條條框框的束縛搂漠,以自己的方式編程迂卢。就算他們努力嘗試,也做不出別人愿意用的應(yīng)用程序。
這并不是說他們不了解教授的知識而克,而是說靶壮,作為一名教授,他們掌握的技能是研究和理論性理解员萍,而不是寫代碼和為客戶提供價值亮钦。
你看到區(qū)別了嗎?
我合作過的最好的程序員充活,他們的工作方式就是做東西蜂莉,做很多東西,并且?guī)缀跻恢边@樣混卵。
例如映穗,現(xiàn)在幾乎每個人都使用 WordPress。在 WordPress 出現(xiàn)很久之前幕随,我就用 PHP 和 MySQL 創(chuàng)建了 3 到 5 個不同的內(nèi)容管理系統(tǒng)蚁滋。我寫過游戲、移動應(yīng)用程序赘淮、框架辕录,還有 SAAS 應(yīng)用程序。
沒人付錢讓我做這些事情梢卸。我做這些事純粹是出于好玩走诞、學(xué)習(xí)或好奇的目的。
我已經(jīng)好幾年都沒有上過課了蛤高,即使上了蚣旱,我也不覺得這會對我的事業(yè)有任何幫助。然而戴陡,如果我決定坐下來塞绿,從頭開始創(chuàng)建我自己的計算機語言或操作系統(tǒng),我打賭我一定能在過程中學(xué)到很多有趣的東西恤批。
是的异吻,我可以帶著那些想法上課,但在創(chuàng)建東西喜庞,犯下錯誤诀浪,以及真正“體會到”這一切的經(jīng)歷中,相比讀一本書或聽一次講座赋荆,我能收獲更多笋妥。
因此懊昨,我給你的建議(如果你做到了窄潭,相比沒有做的那些人而言,會帶給你巨大的優(yōu)勢),就是:
解決一個你想解決的問題嫉你。創(chuàng)建一個用于某件事的軟件月帝,解決一些你本人或他人想要通過軟件解決的問題。每天為這個軟件寫代碼幽污,晚上寫嚷辅,周末也寫,每天都寫距误。即使你每天只花了 15 分鐘寫代碼簸搞,也沒關(guān)系。
最終准潭,你將得到一個能用的軟件趁俊,這很不錯。
然后刑然,你再重復(fù)這一過程寺擂。做一個其他的東西。不斷地做泼掠≌恚花費大量的時間,通過創(chuàng)建更多的東西來提升你的技能择镇。
做東西的同時挡逼,注意在你的網(wǎng)站上保存工作,并將其放在一個作品集中腻豌。每次你結(jié)束了一個項目挚瘟,就將它上傳到 Hacker News、Reddit 或其他什么網(wǎng)站饲梭,并發(fā)條關(guān)于它的博文乘盖。
你現(xiàn)在僅僅 17 歲,當(dāng)你 20 歲的時候憔涉,你已經(jīng)輕松地將兩千多小時用于鍛煉技能订框,你的個人作品集中也有了大概十到二十多個軟件,你學(xué)習(xí)到的經(jīng)驗是那些僅僅上課的人無法比擬的兜叨。
更重要的是穿扳,你已經(jīng)清楚地告訴別人,你能夠獨立地寫代碼国旷,解決問題并給世界帶來一些新東西矛物。這是最難能可貴的一點,也是公司在不斷追求的一點跪但。
一旦你找到了工作履羞,請繼續(xù)在業(yè)余時間創(chuàng)建東西,并提升你的工作技能。你的提升速度將比你的同事更快忆首,因為他們在下班回家后看電視爱榔,而不是學(xué)習(xí)、成長或創(chuàng)建東西糙及。他們拿到了薪水就回家享受去了详幽。
你做的越多,你學(xué)的也越多浸锨;你學(xué)的越多唇聘,你的價值就越高;你的價值越高柱搜,你就越容易找到工作雳灾,你的工資也就更高,這是一個良性循環(huán)冯凹。
所以谎亩,去做些東西出來。現(xiàn)在就開始寫代碼吧宇姚!
轉(zhuǎn)自:自學(xué)的程序員如何找到好工作匈庭? - 文章 - 伯樂在線
伯樂在線 > 首頁 > 所有文章 > 開發(fā) > 自學(xué)的程序員如何找到好工作?
原文:
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 “l(fā)anguage” 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