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 歲的時候,你已經輕鬆地將兩千多小時用於鍛鍊技能,你的個人作品集中也有了大概十到二十多個軟體,你學習到的經驗是那些僅僅上課的人無法比擬的。
更重要的是,你已經清楚地告訴別人,你能夠獨立地寫程式碼,解決問題並給世界帶來一些新東西。這是最難能可貴的一點,也是公司在不斷追求的一點。
一旦你找到了工作,請繼續在業餘時間建立東西,並提升你的工作技能。你的提升速度將比你的同事更快,因為他們在下班回家後看電視,而不是學習、成長或建立東西。他們拿到了薪水就回家享受去了。
你做的越多,你學的也越多;你學的越多,你的價值就越高;你的價值越高,你就越容易找到工作,你的工資也就更高,這是一個良性迴圈。
所以,去做些東西出來。現在就開始寫程式碼吧!