[譯] 如何從一個業餘愛好者成長成為專業開發者

zaraguo發表於2017-06-06

如何從一個業餘愛好者成長成為專業開發者

[譯] 如何從一個業餘愛好者成長成為專業開發者

幾年前,我正處於園林設計工作和餐館工作兩頭跑的狀態中。那時我剛離開大學校園,不知道未來我將靠什麼為生。

我有許多想法,卻毫無方向。在那段時間裡,我開始自學程式設計。起初這只是一個愛好。我覺得僅靠自己的大腦和程式碼去創造東西是一件很酷的事。

逐漸地我開始思考生活前進的方向,並視以程式設計為生為一個有可能的生活方式。

一開始,我也只是隨便想想而已。我負擔不起現代教育的費用。我早就因為錢的原因而輟學了,如果要修電腦科學專業,我必須重新開始。

我已經離開大學校園整整六年之久。如果我選擇重返校園學習電腦科學還將給我帶來超過五萬美元的負債。所以這條路行不通。

然後我想到我可以通過自學 Web 開發來獲得一份實習工作。

我最初的計劃是向鎮上的幾家公司推薦我自己,問他們是否願意和我見面。我想和他們談論我一邊讀書一邊幫他們打工的可能性。通過這種方式我可以支付我的學費,同時獲得一些工作經驗。

因此我開始認真對待 Web 開發。

不是東學一點西學一點而是開始構建一個真實的作品集並記錄自己的技能。

我開始活躍在類似 Stack Overflow 的網站。

我寫了一些實用的程式並將其放在了 GitHub 上。它們沒什麼特別的,但是它們展現了我的程式設計能力。

有家公司拒絕提供我臨時工的崗位。也不用我獲得學位。他們直接提供了我一個試用期六個月的全職初級工程師的崗位。

我開心極了。事實證明,認真並帶有目的地開始學習程式設計,讓我收穫了相當多的知識。

我有能力回答他們的提問,向他們展示我那微不足道的應用,並解釋其工作原理。

我在那家公司工作了兩年半,之後在我生活的城市獲得了一個 Web 開發的職位。

把自己視為一個終生學習者

我將我在上一家公司工作的經歷視為一個學習過程,盡我所能地去學習,這在我成長為一個專業工程師的道路上起到了相當大的作用。

在公司裡工作所獲得的實踐真知是無價的。知道如何與客戶、同事相處以及遵守公司制度是十分重要的。而這些你只能從實踐中獲得。

雖然我比剛開始的時候知道的更多,我一直視自己為一個學徒。渴望不斷學習是成為一個偉大的開發人員的重要條件。一旦我們覺得我們已經掌握了某個技能,那麼我們就會停止成長。

海明威曾說過:

我們在工藝上都是學徒,而且從沒有人成為大師。

他這句話說的是寫作,但是在程式開發方面也同樣適用。

在工作的同時不斷自學令我收穫頗豐(我甚至寫了本書)。我瞭解了關於網站開發的一些實用技術,同時從一個業餘愛好者成長為一個專業開發人員。你們也可以做到,無論你們有多少時間和能力。

再和你說件事兒,我曾經同時做兩份工作,其中一個需要我早上四點就爬起來開著叉車到處跑。

作為一個生活忙碌的成年人,想要學習程式設計需要有決心、動力以及倔強的堅持。

從入門到精通

下面是一個你可以遵循的流程。每個人的學習過程的確會有所不同,但是有一些好的建議有助於你走上正軌。

1. 相信自己可以做到

任何人都可以通過自學成為一個開發者。有一種觀點是自學只有特定型別的人能做到,這在某種程度上是正確的。你需要自我驅動,而不是被能立即得到回報的動機驅動。但是任何人都可以成為這種型別的人。

現代社會存有“天賦不是人人都有”的這種觀點。這種觀點不利於我們的成長,也是許多人在生活中感到不滿的原因之一。

如果你執著於自己是否有天賦這一點,那麼你將很容易沮喪。

我要立馬把這種錯誤觀念拋諸腦後。任何人可以自我驅動並且自學程式設計。或者開始一個成功的業務,或者實現一個長期目標。

這無關你是否抓住了一個大機會,或是天賦異稟。持之以恆才是關鍵。

如果你能夠埋頭苦幹,即使困難的時候也不放棄,堅持不懈,那麼沒有什麼事情是你辦不到的。

最後一點相當重要,但是我想先給你們提個醒兒再繼續。

人們總是更傾向於關注自己和他人的成功。這就是著名的倖存者偏差

運氣的確客觀存在。有時候有了它事情會變得相當的順利。例如,我之前聯絡過一個 Web 開發的機構,幸運的是他們當時正好在招人並且我恰巧符合他們的要求。

但什麼是運氣呢?

當然,我獲得那份工作有運氣的成分在,但是如果我沒有下定決心去自學開發,那麼有運氣也是沒用的。之後我果斷地決定去申請這份工作。

運氣的確有一定的作用,但是凡事全靠運氣卻是不對的。要想自己更加好運,你就應該更加投入於你所做的事情。

但是好運並不會眷顧胸無大志之人。

2. 持之以恆在促成你的作品方面有著難以置信的魔力

我最大的缺點之一就是容易感到厭倦和分心。我會不斷想要跳過目前的工作進入下一個專案。這種趨勢會斷送你的成功。

根據心情選擇專案固然很自由,但是……

[譯] 如何從一個業餘愛好者成長成為專業開發者

這是一個陷阱!你可以忽視本文的其他觀點,但請記住一點:

成為一個專業的程式設計師最重要的一點就是堅持。持之以恆決不放棄直到作品完成。

這句話到處適用。

人們非常在意選擇什麼框架去使用。但是關鍵的是選擇一個並堅持使用。你可以之後再轉去學新的語言和框架。

重要的是在開發時學會解決問題的技能,並像開發人員一樣思考問題。

我自學的時候使用的是 Laravel,但是僱傭我的公司使用 CakePHP 來進行開發。沒事,他們知道我有切換框架的能力。

選擇一個方向並深挖下去,無論你選擇的是什麼。同時你需要清除其它的干擾項。

這種精益求精的過程中有著一種無與倫比的美妙感受。

它的確不易。但是一旦你學會不分心,你將發覺到工作中持續增長的樂趣。

Mike Rowe 常說:人們不應該在發現自己的激情後才開始行動。

人們鬱鬱寡歡。執著於尋求一個完美的事業,一個充滿激情的事業。

但是激情來自於對作品持續不斷完善的渴望。一旦你養成這個觀念,那麼你的開發能力將有一個質的飛躍。

3. 立即開始搭建你的專案

有抱負的程式設計師有時候會陷入只看不行動的境地。

教程和書籍對於基礎學習的確很有幫助。但問題是它們會給程式設計師灌輸虛假的自信。

如果你曾經看完一本程式設計書然後動手程式設計時卻發現自己毫無思路,那麼你就知道我在說什麼了。

解決方案很簡單,但是並不容易。

開始程式設計。

做點什麼東西。開發一個應用解決你自己生活中的問題,或者針對於你身邊人的某個問題。

做些好玩的東西。

做點東西,並且對外展示。把它開源並放在 GitHub 上。你做這些不是為了別人而是為了自己,所以你不需要擔心別人對此的看法。

你的程式碼一開始會很醜陋。即使我現在看自己一個月前寫的程式碼我都覺得慘不忍睹。但是如果不做點東西你是學不會開發的。書本很棒,我沉迷於看很多很多的書。但是在那之後你必須不斷去應用你看到的知識。

你會遇到很多問題,舉步維艱。這很好,這時候我們學到的東西最多。

開始做點小東西來解決問題,這個我會在下面的第六點詳細討論。

4. 建立一個線上身份

一旦你開始做點小專案,你會需要建立一個線上的身份。擁有自己的 GitHub 賬戶是一個不錯的開始。

你可以在這裡放置你正在著手的專案,並與全世界的人分享。

如果你想要的不止如此。那麼我推薦你建立一個個人網站。

這個網站有以下的幾個作用:

  1. 它是一個公開向潛在僱主展示你自己的地方
  2. 它是一個可以展示你作品的地方
  3. 它將成為你的舞臺

最後一點十分重要。一旦你開始做專案,你就應該立即開始記錄他們。開始用一個簡單的部落格去分享你正在做的事情並且傳授你所知道的一切。

這是向潛在僱主展示你身份和能力的最好方法之一。它可以讓大家看到你,並且過程中你也將構建出屬於你自己的平臺。

這可以帶來工作機會和在寫書或者自由職業方面獲得額外收入的可能。

你的網站應該有明確的目的。

很多人制作線上簡歷,但是你要做的不止如此。你的目標是什麼?你的網站需要圍繞這個目標設計和建立。

如果你想要一個基於某個特定專案或者框架的工作,你可以將其放在你的網站上。

我建議你的網站要有以下四個主要構成部分:

  1. 主頁

你的主頁是你網站的入口點。它應該提供一個非常簡要的介紹,關於你是誰,你是做什麼的。並指引大家找到他們最感興趣的內容。

比如,你可以有兩個主要的按鈕。一個引導人們前往你的部落格列表去學習一些關於網站開發的知識,另外一個用來引導有意聘用你的人前往你的招聘頁面。

  1. 博文

這裡是放置你的博文以及教程的地方。儘可能多地寫一些博文,並且不要害怕去分享他們。

  1. 關於我

簡單的關於我板塊可以展現更多你是誰做什麼的細節。不要把它當做你的個人史。再次宣告,這一板塊核心內容是你想做的事情。

不要談論你的私人生活,而是談論什麼使你成為一個網站開發者,你做過什麼,以及未來的規劃。談論一些你喜歡的專案並給出展示連結。

  1. 聘請我

這是你個人網站非常重要的一個部分。這是展現給有意向聘請你的人的板塊。

找好“包裝”和誠實的平衡點。這個頁面的內容可能和關於我頁面有部分的重疊,但是這個頁面將更加明確你的技能以及你可以給公司帶來的好處。

這個頁面還需要有你的聯絡方式以便他人可以聯絡到你。

除了維護自己的個人網站,你還可以給一些知名出版社寫文章。然後在你網站的個人簡歷板塊附上文章連結。

5. 開始傳授你會的一切知識

Nathan Barry 是一個酷愛傳授知識的傢伙。他講過 CSS Tricks 的創始人 Chris Coyier 的故事。

這個網站一開始是 Chris 用來公開記錄一些他在學習的東西以便他人借鑑。現在它已經是最大的 Web 開發站點之一。

這個故事告訴我們你不必在成為世界最厲害的專家之後才去寫東西和傳授東西。

在網路商業的世界中,有一個相對專家的概念。這個概念是說每個人相對於別人在某一個特定方面都是專家。

我對此存有疑慮,特別是被用來推銷某些不應該被賣出的商品的時候。這只是一個有用的類比。

困擾我的是使用專家一詞。我不認為傳授你知道的東西有什麼問題,你甚至可以向需要的人們販賣這些知識。

但是自稱專家好像又言重了。所以當你寫東西的時候,請儘量保持內容真實性。

我更喜歡在公開場合定期學習。

有很多人是從成為一個公開的學習者開始他們的學習的。他們學習手藝同時並記錄下來他們學到的東西。

這是傳授你所知道的一切的一個很好的方法。隨著你學到的東西越來越多,你構建出自己的內容,並在這個期間成為一個更好的書寫者。久而久之,你將在你的圈子被其他人視為權威人物。

無論在找工作或是自己單幹方面,這都十分的有價值。

6. 為解決問題而開發

做事有明確的意圖是成為一個專業的程式設計師最重要的方面之一。

為了樂趣隨意開發應用是一回事,為了解決問題去開發應用和網站又是另外一回事。

電商本質其實不是程式開發,其本質是關於解決問題。程式碼只是他們首選的工具而已。

任何一本市場營銷的書或文案都會告訴你去推銷商品的優點而不是特點。

Web 開發人員應該通過展示他們如何有效地解決了使用者的問題來推銷他們的應用。然後用具體的指標來支撐他們的言論。客戶通常對這種方式的介紹更感興趣,而不是聽開發者談論他們使用的尖端技術。

如果你能證明你的程式設計技能, 並能用程式碼解決問題和創造有意義的應用, 那麼你將非常受僱主歡迎。

當你與潛在僱主或是客戶溝通時,以及在為你的網站編寫內容時,請進行優勢與功能這兩方面的思考。

當然,你也應該提及你的程式設計熟練程度,但是大部分人在這個方面花了所有時間。簡要地介紹一下好讓潛在僱員知道你在做什麼就可以了。如果你開發了一系列很有用的程式,那麼它們將會為你的程式設計技能說話。

7. 採取學徒心態

你認為你掌握技能的那一天便是你停止學習的一天。

養成終生學習的觀念。總是有更多的東西去學習,有更大的空間去進步。

這在你早期的職業生涯相當重要。如果你兼職或實習或擔任初級開發人員,你需要儘可能快速進入學習和成長狀態。

你真的應該馬上這麼做,即使你還沒有一個真實的“導師”。

工作的藝術這本書中,Jeff Goins 談論了二十一世紀的師徒關係。

回到中世紀,這種關係非常正式。大師會帶一個徒弟多年,直到徒弟慢慢地掌握手藝達到大師的頭銜,那時他們就可以收自己的徒弟了。

雖然這種關係已經發生了改變,但是將自己視為一個學徒仍然十分重要。有所不同是的是現在你需要自己關注潛在的導師和學習機遇,他們遍佈你的征途。

在 Web 開發的世界裡,我們經常上網,所以學習形式多種多樣。

書本,教程,課程,專題討論會以及其他形式的學習都是十分有價值的。但是我覺得最有價值的學習形式是從你想成為的人身上學習。

這就是為什麼樂意並熱切地去學習是這麼的重要。得到了你的第一份開發工作不是征途的結束,而只是開始。

當採取了學徒心態你將真正開始學習並且你的知識將呈幾何級數地增長。

8. 學會合作

將程式設計作為興趣和以程式設計為生之間的最大差別就是你需要學會與他人合作。

你需要與同輩、老闆、同事、客戶、合作公司溝通和合作,並且在你的職業生涯中你會遇到形形色色的人。

學會如何與他人有效地合作是十分重要的。

在 Web 開發領域,溝通是關鍵。當一個公司向你們表達自己所需時,如果你對他們所表述的東西不清楚,那麼會給未來的工作帶來很多頭疼的問題。

同樣的,如果你不能與同你一起工作的人們良好地溝通,你的工作也將遭遇很多問題並無法完成。

如果你還在學習的話,我這裡倒是有幾個不錯的建議可以給你。

當你開始傳授你所知道的知識時可能就會遇到這些問題。人們將與你進行互動,有時候這些互動是負面的,你需要學會如何去處理這種情況。

我還十分推薦大家去給開源專案做貢獻。你將收穫在一個專案中與帶有不同觀點的人們合作的體驗。

參與開源專案的確是一件令人膽怯的事情,但是它會給你的開發生涯創造奇蹟。

看看這個網站然後開始

動身去以此謀生

成為一個 Web 開發者是困難的。意味著你的一生需要永不止步地學習和不斷接受新的事物。它是一個不僅需要精通技術還需要了解業務和溝通的職業。

成為一個 Web 開發者還是一條非常有利的道路。你將製造產品來解決人們的問題,使他們的生活更加便利,同時你將擁有非常棒的生計。

幫助你去學習程式設計的資源有很多,他們大多數還是完全免費的,但是幫助人們轉變成為專業的開發人員的資料卻很少。

我希望這個簡短的指導可以為你指明一條好的道路以幫助你成為一個專業的開發者。

記住,如果你不採取行動什麼都不會發生。搭建一個簡單的個人站點,給一些潛在的僱主發郵件,在 Medium 上發表一些文章。反正就是要開始有所行動。

你越展示自己,做得越多,那麼你將越快從業餘愛好者成長成為一位專業人士。

我正在考慮開設一個線上研討班教開發者如何從業餘愛好者成長成為專業人士。如果你對此有興趣,可以在下方留下你的郵箱地址讓我知道並且我將為你們提供第一手資料。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃

相關文章