如何從業餘愛好者自學進階成專業開發者

發表於2017-06-05

幾年前,我交替幹著園藝工作和餐飲的工作。那時候我剛離開大學,還不知道我這一生到底該幹什麼。

我有很多想法,但是沒有方向。在那段時間裡,我開始自學程式設計。最初是因為喜歡,我認為程式設計是件很酷的事情,可以只動動腦子寫寫程式碼就創造出各種事物。

然後我開始思考人生,認為程式設計可能成為我的生活。

一開始我並沒有這種想法。我沒有錢來支付真正的教育。因為沒有錢,我已經從大學退學了,如果我進入電腦科學領域,就必須重新開始。我離開學校6年了,還有超過 $50,000 的債務,所以不會有這種想法。

然後我開始思考,我可以自學 Web 開發並達到可以實習的程度。

我最初的計劃是到鎮上的幾家公司自薦,並問他們是否願意會見我。我想一邊在學校學習一邊和他們一起工作,這樣我就有錢進學校同時還能獲得一些經驗。

如何從業餘愛好者自學進階成專業開發者

因此我認真的對待 Web 開發這件事情。我開始做了一個作品集(portfolio),並把自己的技術記錄下來,我開始活躍在像 Stack Overflow 這樣的地方。我在 Github 上建立了幾個實際的應用,雖然並無過人之處,但至少可以表明我會程式設計。

有一家公司不接受我兼職工作。他們並沒有說歡迎我在獲得學位之後回來,而是直接提供了一份 6 個月試用期的全職的初級程式設計師的工作。

我欣喜若狂。事實證明我一旦認真起來有目的的進行開發,能自學不少東西。我可以回答他們的問題,我可以給他們講解自己建立的初級應用,我還可以解釋我的專案是如何進行的。我在那家公司待了兩年半,然後在我居住的城市成為一名真正的 Web 開發者。

以學徒的身份審視自己

讓我轉變為專業開發者,有很重要的一個部分,就是在之前的公司作為學徒的時候,竭盡所能地學習。

在公司的工作中所學的關於現實的知識是無價的。如何與客戶、同事並在一定的內部約束下一起工作,這些都是基本要素。而這些只能在一定的領域中學習。

現在的我可能比剛開始工作的時候知道得更多,但我不會停止以學徒的身份審視自己。要想成為一個出色的開發者,就要有持續學習的慾望。當我們看到自己掌握了某項技能,那一刻開始我們(關於這項技能)的成長就停止了。

海明威說得好:

我們都是某項手藝的學徒,沒人會成為大師。

他說的是寫作,但同樣適用於開發。

自學和在公司工作的結合讓我學到很多(我甚至在寫書)。我理解 Web 開發實踐,知道如何從業餘到專業。這是一條任何人都可以走的路,不管你是否有時間,也不管你能力如何。

舉個例子,我曾一次做了兩份工作 —— 其中一個需要我凌晨4點起床駕駛叉車。

作為一個忙碌的成年人,學習編碼需要決心,動力以及頑強的堅持。

從業餘愛好者過渡到專業開發者

下面是一個你可以參考的過程。每個人的成長軌跡都會有所不同,但是你可以採取一些步驟來幫助你更快地走上正確的道路。

1. 相信自己可以做到

每個人都可以自學成為開發者。千萬不要認為自學是隻有某種型別的人才能做到的,雖然在某種意義上可能這也是對的。你需要自我驅動,激勵自己,而不是讓這種想法成為付費學習的動機。

社會上很多人會認為有些人生來就有某些特質,而別人沒有。這對成長是不利的,也是造成許多人對生活感到不滿的原因之一。

如果你一直覺得你要麼“擁有”,要麼“沒有”,就很容易沮喪。

任何人都可以學會自我激勵,自學程式設計。或許是開始一個成功的業務,亦或許是實現長期目標。這和你的出生無關,關乎到的是你的毅力。

如果你能把自己放低一點,堅守住最困難的時刻,你可以做到任何你想做的事情。

當然,所有的事情都存在運氣的因素。例如,我主動聯絡了一個網頁開發機構,很幸運,他們恰好在那個時候正在尋找一個開發者,而我恰好滿足了他們的需求,我很幸運地得到了這份工作。但是如果我沒有對自己的發展方向做出決定,那我絕對不會有這份幸運。

運氣確實是一個因素,但是如果你不堅持在某件事情上做到很好,運氣可能永遠不會找到你。

2. 持續專注於你的技術

我最大的缺點就是容易感到無聊和分心,總想跳入下一個專案。

聽起來似乎很自由,能夠在任意專案之間彈跳以適應當天的心情,但…

這是一個陷阱!請記住:

成功成為專業開發人員的首要任務是 commit 。持續堅持 commit,直到你完全掌握。這也適用於所有事情。

人們往往強調選擇使用哪個框架。但更重要的其實是挑選一個,並堅持下去。等你完全掌握了以後,可以轉移和學習新的語言和框架。

此外,重要的是在開發過程中獲得的解決問題的技能,以及像真正的開發人員一樣思考的能力。

我自學的是 Laravel 框架,僱用我的公司使用的是 CakePHP 。但沒關係,他們知道我有切換框架所需的技術和技能。

選擇一個方向,盯著它,不管是什麼,消除被別的東西分心的可能性。這很不容易,但一旦你學會忽視分心,你會更享受工作。

人們常常容易不開心,因為他們不斷再尋找完美的職業生涯。但激情往往來自於你對技術那份不可阻擋的慾望。一旦保持了這種心態,你作為開發人員的能力將會得到昇華。

3. 立即採取行動

很多充滿激情的開發人員可能會陷入閱讀陷阱,而不採取行動。

教程和書籍是非常適合學習基礎知識,問題是它們也對開發者灌輸了一些信心上的錯覺。

你有沒有在看完一本程式設計書後,去自己構建一些東西只是為了驗證自己到底知不知道如何去做?如果有,那你肯定明白我在說什麼。

這個解決方案很簡單,但不容易。

隨便做一些什麼。做一個解決自己生活中遇到的問題的應用程式,亦或者是解決你身邊的人的問題。

做點什麼,並把它放出去。讓它開源並放在 GitHub 上。你不是為別人做的,而是為了你自己,所以不用擔心別人的意見。

剛開始你的程式碼肯定是醜陋的。我回顧了幾個月前寫的一些程式碼,自己看到都想吐。但是,如果沒有構建這些東西,就無法學習開發。書是很棒,我也很痴迷想去儘可能的閱讀更多,但你必須應用這些知識。

在這過程中你會遇到問題,你會去想辦法解決。那很好,這段時間裡我們將真正學到更多東西。

4. 建立你的線上形象

一旦你開始去構建一些東西,你將需要建立一個線上的形象。你的 GitHub 帳戶將是一個好的開始,這是一個能夠安置你正在開展的專案並與世界分享的舞臺。

但是如果你想比這更進一步,我建議你建立自己的 portfolio。

這個網站可以做這些事情:

  1. 把你的能力展示給潛在的僱主;
  2. 一個你可以展示你的工作成果的地方;
  3. 作為你的平臺;

最後一個非常重要。一旦你開始構建一些東西,你應該馬上開始寫下來,分享你正在做的工作,並分享給別人你所知道的一切。

這是給潛在僱主展示的最好的方法之一,告訴他們你是誰,你能做什麼。這也是一個讓你的名字展示在那裡的方式,也為自己建立了一個平臺。最終可以帶來更好的就業機會,提高通過寫書或做自由職業獲得更多收入的可能性。

此外,你的網站應該提供非常具體的目的。

大多數人找工作只是建立線上簡歷,但你可以做到更多。你的具體目標(職業方向)是什麼?那你的網站就應該圍繞該目標進行設計和建立。如果你想要在某個專案或某個框架上工作,請把它也放在你的網站上。

我建議你的網站要有 4 大核心區域:

1. 主頁

主頁是網站的入口。它應該提供一個關於你是誰和你在做什麼的一個很簡單的概述。並且應該引導人們瀏覽與他們最相關的地方。

例如,你可以有兩個主要按鈕。一個引導使用者到你寫作的部分了解更多關於網頁開發的資訊,另一個引導至僱用頁面,如果有人有興趣招聘你。

2. 寫作

放你的部落格和教程的地方。儘可能地在這裡多寫,不要害怕分享。

3. 關於

詳細介紹你是誰,你在做什麼,而不是談論你的個人生活,談論什麼導致你進行網路開發,你的旅程到目前為止,以及你想去哪裡。可以提及一些你最喜歡的專案並連結到它們。

4. 僱傭我

你的網站的重要組成部分,如果別人有興趣招聘你去做開發,那麼這裡就是他們要去的地方。

確保在推銷自己和誠實之間找到適當的平衡。這個頁面和“關於”的頁面之間可能會有一些重疊,但是這個頁面將更具體地說明你的技能。

該頁面也應該有聯絡方式,以便人們可以聯絡到你。

5. 開始分享你所知道的一切

Nathan Barry 曾講述了 CSS Tricks 創始人 Chris Coyier 的故事。

在該網站剛開始建立時, Chris 就公開分享了他正在學習的東西,以便其他人可以跟進。現在它已經成為了最大的 Web 開發網站之一。

我想說的是,你不必等到自己成為世界上最出色的專家,才開始寫作和教學。

在網路商業世界中,有一種說法,每個人相對於別人都是一個專家。

令我困擾的是“專家”一詞。教導你所知道的事情並不會有什麼問題,如果對別人有價值,甚至可以出售這些資訊。

但是自稱一個專家可能會把事情弄得太過了。所以當你分享你的內容時,還不如誠實一點。

我更願意在公共場合學習。有很多人剛開始都只是一個公眾學習者。他們正在學習一種手藝,並記錄他們正在學習的東西。隨著學習到的東西越來越多,你就可以建立自己的內容,並在此過程中快速成長。隨著時間的推移,你所在的行業中的其他人將開始將你為權威人士。

6. 奔著解決問題的目的去構建

成為專業開發人員最重要的方面之一就是完成一個具體目標的所有事情。

Web 開發商店真正的商業價值不是編碼,而是他們正在解決的問題。編碼只是他們用來實現這一點的首選工具。

閱讀任何營銷或文案,他們會告訴你銷售的產品的好處,而不是功能。

Web 開發人員應該推銷的是應用程式,以顯示它們能如何有效地解決客戶的問題,然後用具體的資料驗證這些觀點。客戶通常對這種方法的反應更為敏感,而不是開發者所謂的那些尖端技術。

如果你能夠展示你的程式設計技能,以及你能夠以解決問題和制定更有意義的應用等具體意圖來編寫程式碼,對於僱主來說,你會更具吸引力。

所以,當你與潛在的僱主或客戶溝通,以及在為你的網站撰寫內容時,請考慮優勢與功能。

當然,你也應該提到你的編碼熟練程度,雖然大多數人都花時間在這上面。簡要介紹一下讓潛在的僱主知道你能做什麼。

7. 保持學徒心態

你以為掌握所有東西的那一天就是你停止學習的那一天。

採納終身學徒的心態。總是有更多知識去學習,總是更多的地方需要改進。

這在你職業生涯的早期階段尤為重要。如果你是兼職或實習,或擔任初級開發人員,那麼你需要儘可能立即進入學徒心態並儘快成長。

你應該真的要這樣做,即使你擁有一位實際的“導師”。

在 Jeff Goins 的 “The Art of Work” 一書中,他談到了21世紀的師徒關係模式。

回到中世紀,這種關係非常正式。師傅將會接管學徒多年,學徒們將慢慢開始掌握師傅的手藝,直到他們達到了大師的頭銜,到此他們就可以收徒了。

這種關係已然發生了變化,但把自己當做學徒已然很重要。主要的區別是,現在你必須密切注意潛在的導師和學習機會,並且你的人生旅程中將會有很多導師。

在網路開發的世界中,我們不斷地在網際網路上瀏覽,所以這可以有多種形式。

書籍、教程、課程、論壇和其他形式的學習都是有價值的。然而,我認為,最有價值的學徒形式來自於目前向處於你希望的職位的人的學習。

這就是為什麼渴望和願意學習是如此重要的原因。獲得你的第一份開發工作並不是旅程的結束,而是開始。

那就是你真正開始學習和以指數級擴充你的知識的時候。

8. 學會協作

將編碼作為愛好還是以編碼為生的最大區別之一是學會與人合作。在整個職業生涯中,你需要與同行、老闆、同事、客戶、合作伙伴公司以及各種人物進行互動和協作。學會如何有效地與別人協作是很重要的。

在 Web 開發領域,溝通是關鍵。當一家公司進來並告訴你他們想要什麼,但你並不是很清楚這具體是什麼樣的樣子的時候,這可能在之後會引起很多問題和困擾。

同樣,如果你無法與你合作的人溝通,你工作也將異常痛苦,你將無法完成工作。當你還在學習階段時,有很多好辦法可以做到這一點。當你開始教授你所知道的一切時,這種情況將會來臨。人們會與你互動,有時是負面的,你將學會如何處理這些情況。

我也強烈建議為開源專案做貢獻。這樣可以讓你瞭解在一個專案上協作的方式,其中不同的人可能會對處理問題的最佳方式有不同的想法。對開源專案做貢獻可能令人生畏,但它可能為你的事業發展做出奇蹟。

走出去並以此為生

成為一名 Web 開發人員很難。這意味著永無止境地學習和適應新技術的生活。這是職業生涯中不可或缺的技術之一,商務和溝通技巧也是。

這是一條非常值得的道路。你可以做到這些:解決人們的問題,使他們的生活更輕鬆,同時過上夢幻般的生活。

網上有無數的資源可以幫助您學習編碼,其中很多都是完全免費的,但似乎缺乏資源來幫助人們實現到專業開發人員的轉變。

我希望這本簡短的指南為您提供一個良好的路線圖,讓您開始成為專業的開發人員。

請記住,除非你採取行動,否則不會發生任何改變。建立一個簡單的投資組合網站,通過電子郵件傳送給幾個潛在的僱主,在媒介上寫一些帖子。僅僅是開始做一些事情。

你嘗試的次數越多,你做的就越多,你會越快從業餘水平進階到專業水平。

相關文章