Categories
程式開發

打造開發者的個人品牌:你的GitHub Profile是柄利器!


這是一篇抒發個人意見的文章,內容來源於作者自己和其他挖掘程序員才能的招聘者的個人經驗。

我曾經在12個月的時間裡主持了數百次面試。 而且在過去的五年中,我瀏覽並評估了數百份候選人的簡歷,同時,我仍然活躍於開發工作,一直帶著一個從事前端和後端開發的團隊。

因此,平心而論,在招攬人才方面我已經有豐富的閱歷了。 這讓我自認為有足夠資格來談談下面將要分享的經驗,為什麼個人的GitHub profile非常重要。

如今許多千禧一代和Z一代開始逐漸認清現實了,當下找一份工作並不是一件輕而易舉的事情。 可能有時我們會覺得,在上一代的國際象棋遊戲中,自己只是棋盤上的無名小卒罷了,但我們必須學會的一點是,如何通過自我營銷來玩轉這場遊戲真的至關重要。

為什麼我們這些程序員要選擇做這樣的工作? 因為我們是建設者和創造者。

  • 我們幹這一行是因為我們想要改變這個世界。
  • 我們幹這一行是因為我們願意無私奉獻。
  • 我們幹這一行也是為了取得個人收穫。
  • 我們幹這一行是因為我們熱愛這門手藝。

由此可見,作為一名程序員,要想實現自己任何以上目標,我們都需要找到合適的方法,讓需要我們服務的人能看見我們。 毫無疑問,謀生並不是一件不費吹灰之力就自然發生的事情——更何況現在Covid-19病毒的陰影還籠罩著我們,謀生就變得愈發困難了。

為了給自己制定一個戰略計劃,很重要的一件事就是要開始學習。 努力掌握自己的命運,作為一名軟件開發人員,這最終會幫助你在提升專業技能和展示個人才能時,去探索那些未知的領域。

設計師和藝術家通常會用自己的作品集來展示過去的成果和創意,從而達到推銷自己的目的。 類似地,像topcoder.com,帶有星級評級的自由職業網站上的個人資料,以及GitHub profile,這些都是程序員展示自我的作品集。 這是一個機會,通過展示我們所擅長的專業技能來為工作打開大門。

當然在GitHub上擁有個人profile並不能保證你一定能獲得理想的工作,但至少為你獲得更多的機會鋪平了道路。 任何能影響招聘人員看法的額外刺激都是一個機會。

經營自己的品牌意味著什麼?

不要過於積極地去打造自己的品牌。 應該讓品牌自然地與自己產生共鳴。 讓自我品牌經營成為一種潛移默化的習慣。

我真心相信上面這句話是正確的——如果我沒有把自己的品牌發揚光大,我就不會獲得今日的成就。 其實每天我們都有機會去展示自己做了什麼以及能做什麼。 如果能夠很好地展示這些東西,我們就為自己推開了機會之門。

從人群中脫穎而出

GitHub不僅僅是一個源代碼資源庫。 GitHub的意義遠大於其中代碼的總和。 你是否想過,其實Git也是一個像Facebook或Twitter那樣的社交網絡? 它們有相似的特徵——你創建一份個人資料(profile),上傳自己的項目以求分享,並通過“關注”別人的帳戶與其他用戶進行互動。

而且,可以共享的內容不一定非得是代碼——並沒有什麼可以阻止你在項目文件夾中保存pdf、word、文本文檔或任何其他類型的文件。

許多公司用10-20%的工作時間進行創新。 其餘按部就班的工作往往是單調無聊的,這些本職工作需要一些基本的編程知識來處理繁瑣而又必需的工作任務。 即使是最好的公司,也會僱傭大量技能並不太熟練的開發人員來處理這些單調的一般性活動。 20/80規則的確適用於工作,儘管我們可能並不願承認這一點,這真是一枚難以下嚥的苦果!

所以,要找到讓自己脫穎而出的方法是一件非常重要的事情。 而GitHub能夠為招聘人員提供以下幾方面的信息:

  • 你代碼編程水平如何。
  • 你代碼分支管理水平如何。
  • 你平日是如何提交pull requests的。
  • 面對GitHub中的issue部分,你是如何提問和回答的。 我認為一些最困難的問題往往是在issue討論中(當然還有Stackoverflow等問答網站)得以解決的。

個人擁有一個Git profile是極有幫助的,因為招聘人員至少可以在一定程度上判斷你是否遵循了最佳編碼實踐或編碼原則。 是的,有些招聘經理會詢問你是否對開源項目有貢獻,或者是否積極地參與了諸如StackOverflow等網站的在線討論。

而且技術招聘人員總是傾向於從你的社交媒體資料中尋找關於你的個人信息——當然你的GitHub profile也不例外。

接下來,就讓我們看看如何讓個人GitHub profile為找工作做好準備。

整理你的GitHub profile

擁有完整的個人資料會給招聘人員一種嚴於律己的印象。 你可能會說找工作憑藉一份漂亮的簡歷或LinkedIn資料就足夠了,但它們並不能全面清晰地展示你的能力——而程序員能力最好的證明就在編寫的代碼中。

擁有一個既定目標或願景是很關鍵的,並且針對你所希望接觸到的目標受眾對你的Github profile進行優化和裁剪也是至關重要的。

  • 你可能是一名開發人員,希望被一家公司僱傭。
  • 你可能是一名自由職業者,正在尋找下一份合同。
  • 你可能是一個開源社區貢獻者,想要加入一個開源項目。

一旦你決定了你的目標受眾是誰,就是時候開始決定你以何種方式展示自己了。

讓我們來看看,內容最精簡的情況下,你在Github profile中至少也應該包含哪些關鍵信息。

一幅清晰的照片很有用

請在profile中添加你的照片,然後加上一段簡短的個人簡介,以及其他能展示你工作的相關網站鏈接。

如果你正在找工作,照片中你必須看起來整潔大方,不修邊幅的形像是會減分的。 直至今日,企業的招聘過程仍然是偏主觀人性化的,因此第一印像很重要。 請務必不要使用一些通常你無論如何都不會發給雇主的照片。

還得確保的一件事是,你在GitHub profile上的照片看起來輕鬆自然,請避免使用過於正式的照片,但仍然要保持專業的形象。 當你拿不定主意時,可以將半休閒(semi-casual)著裝風格作為參考目標。

用@引用其他Git資源

使用@鏈接到其他你希望招聘人員注意到的Git資源庫。 這些引用資源可以是你的公司、工作組或你正在參與或管理的其他Git資源庫。

鏈接到與你相關的其他專業簡介

如果你有自己的個人網站,而且看起來還挺像樣,請在GitHub profile裡加上你個人網站的URL。 例如,如果你是StackOverflow或CodePen的活躍用戶,可以添加這些相關鏈接來展示你對軟件開發事業的熱愛以及你平時是如何幫助其他軟件開發人員的。

你需要意識到的一件事是,Google實際上是一個很棒的鏈接生成器。 因此,在多個社交網站上重複使用相同的用戶名,這能讓招聘人員更容易通過google搜索找到你。 但我們最不希望發生的事情是,讓這些招聘人員發現,你在Upwork上的兼職工作與你目前全日性工作存在著直接競爭關係,或者你在Instagram上有一些不合時宜的照片。 你關起門來做什麼或者在你的社交圈裡做什麼是你的個人自由——但是你也需要意識到,並不是每個人都會對這些事情抱有一種完全不加任何主觀判斷無所謂的心態,尤其是那些紀律嚴明的公司。

請精心挑選你的“釘住”資源庫作為展示

如果你正好在找工作,那麼出現在你profile頂部的”釘住”(pin)的資源庫應該突出展示你想要向招聘人員強調的內容,這些資源庫應該和你尋求的崗位有較大的相關性,而且應展示你已經完成的工作。

請挑選並“釘住”最重要的三個你希望招聘人員查看的資源庫。

*不要選擇“釘住”一個教程類型的資源庫。 *原因解釋如下。

通常技術招聘人員並不是盲目無知的。 招聘人員中有一些人會花時間仔細審閱你在GitHub上的profile和簡歷,而對掛在網上的那些抒發個人意見的文章置之不理。 如果你的資源庫是來自一個編碼教程,那麼對於我這樣的招聘人員而言,很有可能已經在其他地方見過好幾回了。 那些用複制粘貼搬移過來的過於簡單的項目,諸如“增刪改查(CRUD)”基本操作,這些內容只能填滿GitHub Profile中的空白,但並不能證明你的專業能力。 如果因為某種原因,你的項目中的確有很多複制粘貼的代碼,奉勸你最好不要把這些內容“釘住”以進行突出展示。

如果你打算用“釘住”來突出展示技術演示,一定要選擇那些相關的技術進行“釘住”,別去突出展示那些使用過時技術的大型項目。

舉個例子,如果你想找一份SPA開發人員的工作,那麼就應該突出展示相關的技術,比如Angular,Vue JS等相關的技術演示,而不是去“釘住”你五年前做的JSP + jQuery項目。

如果你像大多數程序員一樣,可能無法以任何方式自己運行一個成功的開源項目,而且你的大部分日常代碼產出都是嚴格受知識產權保護的。 但是,這些也並不妨礙你在GitHub上展示一個或多個令人印象深刻的項目。

如果你的確屬於這一類別,請著眼於展示你所選技術框架中一些引人注目的小型演示。

如果你一時間想不到展示什麼才合適,請試著思考一個你已經解決的問題,這可能會成為一個有意思的演示。 或許你可以快速地重寫一些部分。 或者更好的選擇是,在不違反知識產權和版權的情況下,請求你的雇主授權你發表一些代碼片段。

刪除零貢獻的fork

作為開發人員,我們所做的重要事情之一是用fork來克隆一份公共的資源庫,然後再向原始資源庫發送pull request。

然而這種方法很容易導致一個現象,許多開發人員自己的profile包含了數百個零貢獻的克隆資源庫。 這會讓你看起來做事情毫無條理且虎頭蛇尾。 建議只有當你的代碼貢獻最終真正出現在根資源庫時,才選擇保留克隆資源庫。

清理“加星標”的資源庫

這一條建議可能會讓很多人感到不太舒服。 你加星標的資源庫其實會向招聘人員和訪客展現你的個人興趣,因此這些資源庫應該從側面反映出你的專業技能。 你所“加星標”的東西會影響別人對你的看法。

別甘願當一個入門級的開發人員,要努力追求卓越

對於這一點,請耐心聽我說完。 如果要尋求高級職位,就不要去給太多的初學者教程資源庫加上星標,而應該給那些包含更複雜項目的資源庫加上星標——當然,除非你事出有因地參與了這些教程資源庫的開發。 如果你申請的是初級的入門級職位,或者你想表明你正在學習一項全新的技術,那麼在這兩種情況下為這些資源庫加星標也合乎情理。

整理你展示的資源庫

一旦選擇了一些你想要展示的資源庫,請確保它們是可以被公開訪問的,並且沒有使用密碼進行鎖定。

所有項目都應該有一個README文件。 我想我們都明白README文件是乾什麼的。 這個文件至少應該為你的項目添加一個描述。 這可能聽起來顯而易見,但仍然值得在這裡重申,因為這件顯而易見的事情對於有些人並不是那麼顯然。

在README文件中你至少應該包含以下內容:

  • 描述:如果有的人只能花一分鐘時間來了解你的項目,請用最簡單易懂的描述來展現這個項目。 人們常常輕而易舉就讓複雜的事變得難以理解,但讓複雜的事情變得淺顯易懂卻是一件難事。
  • 結果是什麼?這部分應該說明代碼的產出。
  • 使用了哪些技術棧?列出項目工作所需的所有相關核心技術框架和庫。 這些內容能讓技術招聘人員,即使在可能並不熟悉每一種技術框架的情況下,仍能一眼看出你的項目中有哪些重要技術元素。
  • 項目的願景是什麼?請清楚地說明這個項目的未來會朝著什麼方向去發展。
  • 項目處於什麼階段?指明你在這個項目中的進度。 例如,該項目是已經完成了還是仍在進行中? 如果項目工作還在進行中,則需要清楚地說明哪些工作已經完成,哪些工作正在等待完成,而哪些工作還沒有完成。 我的個人習慣是,會在這部分添加一個免責聲明,以免有人希望使用一些在生產環境中已經完成的部分。 如果用高亮標註出那些還不能工作的部分,也是完全可取的做法。

告訴招聘人員應該看什麼

如果你計劃展示一個大型項目,那麼其中可能會包含許多乏味的樣板文件或“管道”型文件。 不要猶豫,請明確指出哪裡是這個項目最精彩的部分。

如果你的項目已經用fork進行了克隆,而你又積極地對該項目有所貢獻,那麼你需要把你正在做什麼和已經完成什麼都清楚地點明。

告訴招聘人員怎麼運行

你還應該清楚地說明如何運行這個項目。

盡量確保只用一行命令就能讓項目的演示版本運行起來。 這些命令可以是npm run,graddle serve,docker run,或任何你所使用的技術框架裡的簡短命令。

在今天這個時代,基本找不到什麼理由需要事先輸入一長串人工依賴項和預先配置來運行任何東西。

下面這樣簡短的運行方式就是你應該朝著努力的目標:

# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build

單元測試是展示你知其所以然的重要環節

現在已經是2020年了——有句話你可能已經聽過無數次了——執行單元測試是程序員需要養成的一個重要習慣。 如果你想在GitHub放一些有意義的實現,但該項目卻沒有任何單元測試,那麼你可能就不應該提及它——因為這只會給你帶來不好的口碑。 程序員沒有什麼藉口不做單元測試。

我們都知道,編寫單元測試用例是一種習慣,而這個習慣可能對於大多數開發人員來說是很難培養的。 編寫單元測試用例能反映出很多關於你的信息——像我這樣的招聘人員肯定希望看到單元測試的展示,以及關於如何執行測試用例的明確說明。

一個演示勝過千言萬語

就像諺語“一圖胜千語”一樣,加上一段演示視頻的鏈接也是如此。 例如,演示一下你的項目是如何工作的,這會給人一種非常專業的感覺。

其他Git風格的資源庫

除了GitHub,你也可以利用其他類似的工具,比如GitLab和bitbucket——他們各有各自獨特的賣點。 但由於GitHub的廣泛使用和網絡效應,在社會認可度方面,Github仍然是一個更好的選擇。 更何況,在GitHub上還有許多價值極高的開源項目,這些項目在Google搜索中排名都很靠前。

以下是GitHub評選出的2018年排名靠前的頂級Git資源庫:

  • 微軟/ vscode
  • Facebook /本機
  • 張量流/張量流
  • 角/角cli
  • MicrosoftDocs / azure-docs
  • 角/角
  • 可以/可以
  • kubernetes / kubernetes
  • asl / asl
  • 絕對輸入/絕對輸入

最後的一些思考

相信你已經明白,可以做哪些切實可行的事情來提高你的聲譽和獲取理想工作的成功機率。 這個過程也不僅僅只是創建一個美觀的Github賬戶,他還能告訴你應該怎麼梳理思路。

我們應該始終記住,面試的過程不僅僅是關於你創造了多少項目或者你知道多少種編程語言,它還涉及到人際交往能力以及文化契合度。

當然,沒有GitHub profile也並不意味著你就不是一名優秀的開發人員。 有許多程序員都有多年從事商業項目的豐富經驗,但因為受保密協議所限制,他們也希望自己可以展示這些成功的項目,但卻不能披露細節——但這並不意味著他們不能花一些時間在GitHub上從側面對這些經驗做一些描述和展示。

擁有一個工作之外的Github profile可能會給你帶來一些專業優勢。 有優勢總比沒有好。 雖然擁有一個挺棒的Github profile並不意味著你一定技術過硬,你仍然有可能在一些簡單的問題上栽跟頭,但是擁有一個好的Github profile通常意味著next door這樣的招聘平台上有很多工作機會正等待著你。

雇主們都明白,一個人在工作和個人興趣之間難以保持平衡。 而有些人的GitHub profile緊跟技術潮流,並展示著意義非凡的開源項目,這些的確表明了他們願意為自己熱愛的技術投入個人時間——付出更多的努力來幫助開源社區,或者通過他們的貢獻為社會提供更廣泛的價值。

作為一名程序員,充實你的Github賬戶只是你打造自我品牌的武器庫中的一件工具而已,但它的確可以給你帶來一些額外的競爭優勢。

作者介紹:

Timothy Mugayi,技術傳教士,講師,對創新技術充滿激情,掌握多種編程語言的軟件開發者,同時也是一名父親和健康活動家。

英文原版:

作為開發人員的個人品牌:您的GitHub個人資料比您想的要重要