文章-自學的程式設計師如何找到好工作?

興趣鬥士發表於2017-08-11

自學的程式設計師如何找到好工作?

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:

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

Jul 7, 2016
in Quora

轉自:How do self-taught developers actually get jobs?-Brian Knapp

相關文章