向矽谷的 90 後取經 如何成為受歡迎的工程師?

90 後矽谷工程師 Feross Aboukhadijeh 是一個極好的學習榜樣。他並非祖克博那樣的矽谷明星,但作為普通矽谷工程師的一員,對於大多數工程師來說,他是一個通過努力可以到達的學習榜樣。他的經歷不僅僅對嚮往矽谷的工程師有幫助,對所有不再矽谷工作的工程師,都有極好的啟發。
評論
評論

本文轉自虎嗅網 《程序猿看過來~就算没有 祖克柏 的文筆,也能一步步建立個人品牌》

在工作

中,我常常和矽谷地區的工程師交流,時常討論這樣一個話題:什麼樣的工程師,在矽谷是最受歡迎的?

90 後矽谷工程師 Feross Aboukhadijeh 是一個極好的學習榜樣。他並非祖克柏那樣的矽谷明星,但作為普通矽谷工程師的一員,對於大多數工程師來說,他是一個透過努力可以到達的學習榜樣。他的經歷不僅僅對嚮往矽谷的工程師有幫助,對所有不再矽谷工作的工程師,都有很好的啟發。

下面分成四個部分來闡述,第四部分是 Feross 分享的他如何學習編程的經歷。

 

一、建立自己的個人品牌

 

在水準相同的情況下,擁有更高社交影響力的工程師,在職場中佔有更大的優勢和更多的機會:在換工作時擁有更多的選擇,更多的與同行中的佼佼者學習交流的機會,還總有人邀請你加入他的創業團隊當 CTO —— 不一定要做出改變的決定,但有更多的機會和見識總是好的。

和祖克柏編程能力相當的工程師,很難有和他一樣的影響力,這是建立個人品牌的魅力。你不必擔心說:我沒有那麼好的文筆,也錯失社群網站的發展紅利期。條條大路通羅馬,只要願意在網路上分享,你就離成為下一個祖克柏近了一步。

一些方法可以幫你事半功倍,比如建立你在網上的個人主頁。它可以是獨立 Blog 的 about 頁面,也可以是你的 about.me 帳戶。然後在你的 Facebook、Line、微博、知乎、微信、Github、V2EX、技術社區的主頁上放上它的鏈接。就像涓涓細流匯成大河一樣。
讓我們看看 90 後矽谷工程師 Feross 的做法。他在 Github 上擁有 2300 名關注者,8390 名推特粉絲,在問答社區 Quora 有 12500 名關注者。他在這些網站主頁上都附上了個人主頁:feross.org。

 

 

從 Github、Twitter、Quora 吸引來的網路訪客,在這裡開始了解他:畢業於史丹佛,在 Facebook、Intel、Quora 工作過,還有他的項目經歷、他的愛好等信息。

 

二、什麼樣的履歷是「完美矽谷求職履歷」

 

個人品牌影響力 = 能力水準 × 傳播度

經驗豐富、能力突出的工程師,如果不善於在網路上分享,“酒香也怕巷子深”。前一部分便敘述了對此的解決方法。但自身能力才是根本,如果技能不夠,再傳播無濟於事。

履歷是求職的第一步。作為一個工程師媒介平台的營運者,我閱讀過數以萬計的履歷,但 Feross 的履歷是我見過的最完美的履歷之一。在這裡貼上一部分:

 

 

這份簡歷至少在這兩點非常出色:

 

1、完美的版型

 

HR 每天要看不計其數的履歷,眼花繚亂的狀態下能看到這樣美觀清晰的履歷,簡直是一種視覺享受。

一份能被 HR 和技術負責人看懂的履歷,才是真的好履歷。這種看懂包含兩方面:一是履歷結構清晰、資訊充足但不冗雜;二是要讓不懂技術的 HR 也能從履歷中清楚地讀懂你的經歷和項目經驗。在這兩方面,Feross 的履歷都堪稱完美。

特別要強調後一點。在網路公司裡,HR 要對技術有一點了解是必須的。但無奈有的工程師履歷寫得深澀難懂,甚至不是同方向的其他技術人員都看不懂,更遑論 HR 了。 “ HR 水準不夠看不懂履歷,不是我的責任”,永遠不要有這樣的想法。

 

2、從這份履歷透露出的經歷

 

史丹佛畢業的教育背景、知名矽谷公司的工作/實習經歷、創辦過公司並被雅虎收購、豐富的項目經驗、有影響力的事蹟,還有 Organizations 、 Hackathon Wins 、 Awards 等加分大殺器。這樣的履歷就是“完美矽谷求職履歷”。

比如 Projects 中的 Youtube Instant,我們從連結中得知 Feross 的光輝事蹟:

Feross 在史丹佛上大三的時候, Google 推出了一項新功能 Google Instant ,可以即時顯示搜索結果。 Feross 覺得也可以為 YouTube 開發一個服務,讓 YouTube 即時顯示影片。於是他用 3 個小時完成了 Youtube Instant 網站。

有一百萬人在 10 天內訪問了這個網站。 Feross 因此收到了來自 Youtube CEO 的 offer ,還有 Engadget 、 TechCrunch 、 NY Times 等一票知名媒體報導了這事。

 

三、善用 Github

 

Github 對於工程師來說,是一種生活方式。越來越多的公司在招聘時,技術負責人會關注求職者的 Github 。我所在的公司 100offer,也鼓勵用戶在填寫簡歷時附上自己的 Github 主頁。

這是 Feross 的 Github:

 

 

當然,為了表面好看去刷提交次數或者 star ,是沒有意義的。善用 Github ,對求職、精進自己的代碼水準、擴大在同行中的影響力,都有非常好的正面作用。

 

四、Feross Aboukhadijeh 是如何學習編程的

 

Feross Aboukhadijeh 在自己的 Blog 上記錄了 自己學習編程的經歷 , 同時發表在 Quora 上獲得了四位數的讚同。

現在全文翻譯如下:

 

我是怎麼學習編程的——別人常常問我這個問題,特別是在我建立了 Youtube Instant 網站並被很多媒體報導之後。在這裡我決定分享我的經歷。

一句話以概之:我學習編程的方法,就是大量創建網站。

我在很小的年紀就開始學習編程,學習的方法就是創建大量的網站。下面我將介紹幾個自己創建的網站,其中最早的一個,是我在 11 歲的時候開發的。我希望讀者能從我的敘述中了解到:如果你想學好編程,做大量的練習性項目是非常重要的。

學習一種技術最好的方法就是練習、練習、練習。我知道的所有優秀的程序員都非常享受編程——編程是一件讓他們樂在其中的事情,所以他們大量編程,甚至常常到達廢寢忘食的程度。學會如何編程——還有如何做好這件事——並不需要有超出常人的能力。只要你願意動手開始做就行。

 

下面就是我如何學習編程的故事:

 

一、我的第一個網站

 


在我十一二歲的時候,我決定給自己做一個網站。我記不清那時為什麼想到要做一個網站,只記得這樣我便開始做了。於是,我開始在網絡上搜索關於網頁、瀏覽器、HTML 工作原理的知識。雖然在這過程中,我發現網上很多信息已經過時了,甚至是明顯的錯誤(例如為 IE 和 Netscape 瀏覽器分別建立網站),但這個過程讓我覺得非常有趣,學到了很多新知識。

儘管在網絡上得到的信息質量層差不齊,我最終還是完成了一個簡單的網站,我稱之為“ Feross 的網站”。我用 Frontpage 開發了它,那是一個很棒的所見即所得的 HTML 編輯器。我用很常見的語法,比如粗體和斜體對網站做修改,在編輯器裡即時查看這些 HTML 標記的效果。這是個非常有效的學習方法。

這是我的第一個網站的截圖,現在它已經不存在了。

 

 

這個截圖不能完全反映網站的狀況:事實上,網站上的每個元素都在動,有閃爍的動畫,還有聲音。我在網站的每個網頁上都放了不同的 MIDI 格式的歌曲,並且全是自動播放,無法把它們停下來,除非把電腦設成靜音。哈,在當時這是很流行的網頁設計風格。
過了幾年後,我重新設計了這個網站,使它變得更美觀。我在網上找了一些免費的網站模板並使用它們,還用微軟的畫圖工具修改圖片。

 

 

雖然我在建立網站的過程中大量依賴現成的模板,但這仍然不失為一個學習 HTML 和 Web 瀏覽器的好方法。 “ Feross 的網站”除了用來收集我小時候的一些影片外,沒有其它用處,所以不久後我便對它失去了興趣。

 

我第一個真正的項目

 

在我 9 年級,也就是我 14 歲的時候,我和朋友們都沉迷於在 Newgrounds 和 eBaumsWorld 等網站上觀看 flash 視頻和動畫(這是 2005 年之前,那時 YouTube 還沒有出現)。我每天花大量的時間泡在這些網站上,所以我熟知所有最棒的影片和遊戲。

我產生了一個想法:如果我做一個網站,收集所有我喜歡的 flash 動畫、影片、遊戲,那真是一件非常酷的事情。於是我便做了 FreeTheFlash 網站,它是這樣的:

 

 

感謝我在開發“ Feross 的網站”過程中學到的 HTML 知識,同時我還使用了 Macromedia 公司——也就是現在的 Adobe ——製作的 Dreamweaver 編輯器,通過這個軟體,我可以在網站重複的頁面上使用同一套模板。

 


過了一段時間,我想到可以讓網站動起來。我聽說可以用一種叫做 PHP 的編程語言來做(動態的)網站,於是我花了 20 美元在 Amazon 上買了一本書,叫做《PHP and MySQL for Dynamic Web Site》。我通過學習,使用 PHP 和 MySQL 重新設計了網站,同時還對它進行了新的美化:

 

 

在我讀高中的時候,我對 FreeTheFlash 網站的開發持續了 2 年。這是我第一次嘗試做一個“真正的”網站。對於一個初手來時,這個網站是成功的——在 2006 年,它獲得了 60 萬人次的訪問,以及 300 萬的頁面瀏覽量。 FreeTheFlash 讓我感受到,做出一個成功的產品並看大量的人使用它,是一件多麼自豪的事情。從此,我決定做出更大更好的網站。

 

我的第二個網站

 

在中學時期,我在計算機課上做了很多筆記。在我 11 年級的時候,我決定把這些筆記放到網上,讓那些不喜歡看課本的學生使用。我做了一個叫做 StudyNotes 的網站。在開發過程中,我使用了 PHP 和一種叫做 Joomla 的內容管理系統。我也嘗試使用 Drupal,但最後發現它太複雜了。

 

 

還是這一年,我為學校的 Key 俱樂部建立了一個網站。

在這段時間裡,我花了很多時間泡在  WebmasterWorld  論壇裡,這裡有很多網站站長和 SEO 專家,他們推測 Google 的算法,討論 AdSense 技巧,調整網站問題等。

 

大量的學習和閱讀

 

在我進入史丹佛大學後,我學習了大量的計算機課程,諸如 CS106X 和 CS107 ,我還提前學習了一些 CS106 課程。

我把所有的課餘時間都花在閱讀設計、編程、瀏覽器和 JavaScript 等領域的資料,平均每天 4-5 個小時。我在讀些什麼?五花八門,什麼都有。其中有大部分,是我敬仰的設計師和工程師寫的部落格。

 

一件意義重大的事

 

那是 2010 年的夏天,我在 Facebook 實習的時候,因為和一個朋友打賭,我開發了 YouTube Instant 網站,它可以讓人們即時搜索 YouTube 上的影片。這個網站在建成後的 10 天裡獲得了一百萬用戶的訪問量,甚至連 YouTube 的 CEO 都表示願意給我一個 offer 。你可以點擊 這個鏈接 閱讀媒體們對這件事的報導。

我很清楚地明白,YouTube Instant 的成功歸功於好時機和幸運。

 


繼續前進

 

我發現有很多人使用 YouTube Instant 來聽音樂視頻,這讓我想到了另一種使用 YouTube API 的好方法。於是我和朋友 Jake Becker 在 2011 年的前 3 個月裡開發了 Instant.fm,它能讓人們輕鬆地向朋友分享音樂播放列表。通過這個項目,我們學到了很多新東西。

 


在這個項目裡,我學到的技術:
  • jQuery
  • CSS(以及 Modernizr 和 YepNope,幫助人們解決跨瀏覽器問題)
  • Python
  • Tornado
  • Git&GitHub
  • Last.fm API
  • YouTube API
  • 團隊合作

還有其它一些我們學到的東西:

  • Nginx
  • Supervisor
  • SQLAlchem

    y
  • Apache Ant

 

動手去做

 

我詳細敘述了我從 11 歲開始做的東西,就是希望能告訴你:如果你想學習編程,你需要動手開始做!現在就去做,不要找任何藉口。動手做是最好的學習方法。

把編程語言書從頭讀到尾是一件很枯燥的事,常常讀到一半你就堅持不下去了。但如果你打算做一個項目,你會在做的過程中明白自己應該

學習哪些知識,這是學習知識更有效的途徑。

 

計算機課程

 

大學裡的計算機課程,是另一種十分有效的學習編程的方法。那些好的計算機課程,都十分強調學習計算機科學領域裡的重要概念,而不是局限於教會某個特定的語言。這可以幫助那些沒有接受過正規教育的人在自學時開闊眼界。

我還清晰地記得,在史丹佛大學裡我上的第一堂計算機課(那是一堂關於 C++ 的課程)。當時我還在想“變量前怎麼可能不帶$ 符號呢?”——因為那時我只使用過 PHP ,我用了很長一段時間,才改掉在變量前加$ 的習慣。

 

在 IT 公司工作

 

另外一個提高編程水準的方法,就是去 IT 公司實習,比如 Facebook 或者 Quora 。最近的兩個夏天裡,我就是在這兩個公司里工作。你可以從優秀的同事那裡學會如何更好得編程,如何閱讀和理解他人的代碼,如何在大項目中進行團隊合作。

還是那句話——比什麼方法都管用——學習編程最好的方法就是做項目練習。我是不是已經重複這句話無數次了:-)
如何學會編程:

  • 做 side projects
  • 看編程書
  • 做 side projects
  • 上計算機課
  • 做 side projects
  • 讀編程類部落格
  • 做 side projects

 

這就是我能給出的最棒的建議。 Happy hacking!

《延伸閱讀》

 

歡迎加入"Inside" Line 官方帳號,關注最新創業、科技、網路、工作訊息

 


蛻變敏捷開發組織並不難! AWS Amplify幫前端工程師從雲端快速建立REACT程式

台灣企業勢必需要明確轉型策略,搭配適合的雲端工具作為入場券,一來降低數位化門檻、二來減少摸索資源的浪費。
評論
shutterstock_1451794139.jpg
評論

打造敏捷開發流程、加速前後端工程師的協作效率,是許多企業在面臨疫情之後,認為亟需將彈性元素納入為企業文化當中。雲端運算服務領導業者 AWS 台灣,觀察到前端工程師主要負責處理最貼近用戶的 Web、行動應用程式,但他們往往需要與後端團隊合作過程,遭遇耗費大量討論時間,才能處理使用者介面事項。

為了降低前後端的溝通成本,有些前端工程師在掌握介面管理能力之後,開始橫跨到後端的伺服器、資料庫開發經驗,甚至進一步培養技能,成為能負責測試、安全、效能多面向的全端工程師。

有的人會透過 Side Project(利用業餘時間開發有興趣的專案)或參加 Hackathon(黑客松)方式,運用 AWS 雲端工具嘗試自行擴展後端,並建立簡單易用的工具程式。究竟,AWS 平台提供哪些資源幫助前端工程師擴展更多元的技能樹?

掌握入門教學!前端工程師如何將 REACT 程式快速上雲

前端工程師運用 AWS Amplify,快速在雲端建立 REACT 應用程式

事實上,AWS 的入門課程指出,運用 AWS Amplify 在雲端建立 React 應用程式及服務集,只需五個學習歷程,包含建立 React 應用程式、初始化本機應用程式、新增身份驗證、新增 API 和資料庫、新增儲存體。如果想快速了解 REACT 程式快速上雲的方法及示範教學,本文節錄 AWS QUICKSTART 學習資源內容,幫助前端工程師更快掌握重點。

首先,何謂 AWS Amplify?AWS Amplify 是一項全托管 Front-End Web & Mobile 服務,採取無伺服器模式,在後端建立、部署和託管單一頁面 Web 應用程式或靜態網站的 Git 型 CI/CD 工作流程,加速開發過程直接整合其他 AWS 服務。舉例來說,像是整合封裝好的 Library 資源、或運用一些 Components UI 軟體去配置後端,以及利用 Admin 的 UI 做資源上的管理。

透過 AWS 增加雲端技能 在組織發揮你的影響力

AWS Amplify加速Develop、Deliver 與 Manage流程

AWS Amplify 主要優勢展現在三大項工作階段,分別是 Develop、Deliver 和 Manage。Develop 部分可利用 CLI(Command-Line Interface)或 Admin UI 設定後端,使用 GraphQL 或 REST API 設定也是可行的,進而快速建構一個前後端專案。此外,開發者還能搭配 AWS 其他服務,例如使用 AWS Authentication 全托管認證服務,或 DataStore、Storage 等多項 Feature Categories。

到了 Deliver 階段,若是要透過 AWS Amplify 執行 Web Hosting 任務,可拆解出三個流程。首先是將 Repository 與 AWS Amplify 進行連結,這邊可整合 Amplify Console 提供的支援資源包含 Github、Bit Bucket、Gitlab、以及 AWS 的程式碼代管工具 AWS CodeCommit。一旦連結以後,開發者可透過自己的 Configuration,决定在各個不同的 Build 要執行什麽樣的指令,最後再透過 Deploy 方式,幫助工程師進行前端的 Hosting。

在最後一個 Manage 階段,開發者則可利用 AWS Amplify 的 Admin UI,以開啓瀏覽器方式,透過視覺化介面統一管理資源。例如在 Admin UI 介面左側選單,涵蓋 Content、User Management 的區塊,讓參與專案但沒有 AWS Console 權限的使用者,可利用 E-mail 方式邀請使用者進到 Admin UI,進行一些設定或觀看其他相關資源;甚至在 Set Up 區塊還有相關選項,例如要針對 Data Modeling 或 APP User 做權限管理,以及可連結到 AWS 其他服務。

運用開放資源 AWS Amplify Framework,打造高效能應用服務

AWS QUICKSTART 學習資源還介紹到另一個 AWS 提供的開放資源 Amplify Framework,一樣可利用 Amplify CLI 的方式,配置 Web 和行動應用程式的前後端,以及開發者需要用到的服務,讓應用程式更易於構建,並獲得安全、高性能的使用體驗。

Amplify CLI 一樣有支援多個不同 Category,例如較常使用的幾個 Comment Line,像是Amplify Init 指令做初始化或創建幾個不同資源;或是 Amplify Status 指令,隨時在開發過程查看各個 Category 狀態;甚至專案結束後,可利用 Amplify Delete 直接把 Amplify 所創建的資源做一次性删除。另外也可透過 AWS Amplify Client 利用比較抽象化方式,讓開發者直接利用 Component 實現想要完成的項目。

填寫表單 找到適合你的快速上雲服務與工具!

實際示範給你看,設定 React 程式可以如此簡單

假設前端工程師現在要快速部署一項有驗證功能(Authentication)還要搭配 Rest API、GraphQL、Analytics 等服務的應用,如何快速設定 React 程式?在 AWS QUICKSTART 的學習資源後半段,有詳細說明要啟動這類型專案的操作方法。

開發者可以先利用 AWS Lambda Function 結合 Amazon API Gateway 方式,創建出一個 Rest API,到了 Authentication 階段,則使用到 AWS Cognito 的服務,接著針對 GraphQL 需求,可利用 AWS AppSync 服務,以及最後如果有 Analytics 的需求,也可以串聯 Amazon Pinpoint 工具。Amazon Pinpoint 是一項彈性而可以擴展的行銷通訊服務,開發人員可利用 Amazon Pinpoint API 追蹤 Web 使用者的行爲,或是針對 APP 推送、電子郵件、簡訊點擊行為蒐集到具體的資訊。

在這整套流程示範之後,值得特別強調的是,AWS AppSync 是一項全托管的服務,能及時更新,甚至在使用者離線時仍可以持續去創建和修改數據。一旦設備連上線之後,這項應用程式就可重新連線,並接到後端同步數據,達成彈性、自動化擴展或減縮各式 API 的請求。

打造第一個你在 AWS 上的應用程式

AWS 最後強調,Amplify 是相當適合建構出一個靜態 Web、Apps 服務模式,例如說像是打造部落格,或者是一項 APP 內的代辦事項應用等;加上 Amplify 具全托管服務特色,可串聯上述 AWS 在雲端所提供的資源,都能在部署過程加以整合,加速開發流程及效率,並且有效節省開發資源。如果想用低門檻的雲端解決方案,其實前端工程師是能在開發流程更靈活配置資源,甚至為公司的商業、服務模式挖掘出創新價值。

了解更多:AWS 開發者系列