作者 | Timothy Mugayi
译者 | 杨志昂
策划 | Tina
这是一篇抒发个人意见的文章,内容来源于作者自己和其他挖掘程序员才能的招聘者的个人经验。
我曾经在 12 个月的时间里主持了数百次面试。而且在过去的五年中,我浏览并评估了数百份候选人的简历,同时,我仍然活跃于开发工作,一直带着一个从事前端和后端开发的团队。
因此,平心而论,在招揽人才方面我已经有丰富的阅历了。这让我自认为有足够资格来谈谈下面将要分享的经验,为什么个人的 GitHub profile 非常重要。
如今许多千禧一代和 Z 一代开始逐渐认清现实了,当下找一份工作并不是一件轻而易举的事情。可能有时我们会觉得,在上一代的国际象棋游戏中,自己只是棋盘上的无名小卒罢了,但我们必须学会的一点是,如何通过自我营销来玩转这场游戏真的至关重要。
为什么我们这些程序员要选择做这样的工作?因为我们是建设者和创造者。
  • 我们干这一行是因为我们想要改变这个世界。
  • 我们干这一行是因为我们愿意无私奉献。
  • 我们干这一行也是为了取得个人收获。
  • 我们干这一行是因为我们热爱这门手艺。
由此可见,作为一名程序员,要想实现自己任何以上目标,我们都需要找到合适的方法,让需要我们服务的人能看见我们。毫无疑问,谋生并不是一件不费吹灰之力就自然发生的事情——更何况现在 Covid-19 病毒的阴影还笼罩着我们,谋生就变得愈发困难了。
为了给自己制定一个战略计划,很重要的一件事就是要开始学习。努力掌握自己的命运,作为一名软件开发人员,这最终会帮助你在提升专业技能和展示个人才能时,去探索那些未知的领域。
设计师和艺术家通常会用自己的作品集来展示过去的成果和创意,从而达到推销自己的目的。类似地,像 topcoder.com,带有星级评级的自由职业网站上的个人资料,以及 GitHub profile,这些都是程序员展示自我的作品集。这是一个机会,通过展示我们所擅长的专业技能来为工作打开大门。
当然在 GitHub 上拥有个人 profile 并不能保证你一定能获得理想的工作,但至少为你获得更多的机会铺平了道路。任何能影响招聘人员看法的额外刺激都是一个机会。
1 经营自己的品牌意味着什么?
不要过于积极地去打造自己的品牌。应该让品牌自然地与自己产生共鸣。让自我品牌经营成为一种潜移默化的习惯。
我真心相信上面这句话是正确的——如果我没有把自己的品牌发扬光大,我就不会获得今日的成就。其实每天我们都有机会去展示自己做了什么以及能做什么。如果能够很好地展示这些东西,我们就为自己推开了机会之门。
2 从人群中脱颖而出
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 为找工作做好准备。
3 整理你的 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:8080npm run dev# build for production with minificationnpm run build
单元测试是展示你知其所以然的重要环节  
现在已经是 2020 年了——有句话你可能已经听过无数次了——执行单元测试是程序员需要养成的一个重要习惯。如果你想在 GitHub 放一些有意义的实现,但该项目却没有任何单元测试,那么你可能就不应该提及它——因为这只会给你带来不好的口碑。程序员没有什么借口不做单元测试。
我们都知道,编写单元测试用例是一种习惯,而这个习惯可能对于大多数开发人员来说是很难培养的。编写单元测试用例能反映出很多关于你的信息——像我这样的招聘人员肯定希望看到单元测试的展示,以及关于如何执行测试用例的明确说明。
一个演示胜过千言万语  
就像谚语“一图胜千语”一样,加上一段演示视频的链接也是如此。例如,演示一下你的项目是如何工作的,这会给人一种非常专业的感觉。
4 其他 Git 风格的资源库
除了 GitHub,你也可以利用其他类似的工具,比如 GitLab 和 bitbucket——他们各有各自独特的卖点。但由于 GitHub 的广泛使用和网络效应,在社会认可度方面,Github 仍然是一个更好的选择。更何况,在 GitHub 上还有许多价值极高的开源项目,这些项目在 Google 搜索中排名都很靠前。
以下是 GitHub 评选出的 2018 年排名靠前的顶级 Git 资源库:
  • Microsoft/vscode
  • facebook/react-native
  • tensorflow/tensorflow
  • angular/angular-cli
  • MicrosoftDocs/azure-docs
  • angular/angular
  • ansible/ansible
  • kubernetes/kubernetes
  • npm/npm
  • DefinitelyTyped/DefinitelyTyped
5 最后的一些思考
相信你已经明白,可以做哪些切实可行的事情来提高你的声誉和获取理想工作的成功机率。这个过程也不仅仅只是创建一个美观的 Github 账户,他还能告诉你应该怎么梳理思路。
我们应该始终记住,面试的过程不仅仅是关于你创造了多少项目或者你知道多少种编程语言,它还涉及到人际交往能力以及文化契合度。
当然,没有 GitHub profile 也并不意味着你就不是一名优秀的开发人员。有许多程序员都有多年从事商业项目的丰富经验,但因为受保密协议所限制,他们也希望自己可以展示这些成功的项目,但却不能披露细节——但这并不意味着他们不能花一些时间在 GitHub 上从侧面对这些经验做一些描述和展示。
拥有一个工作之外的 Github profile 可能会给你带来一些专业优势。有优势总比没有好。虽然拥有一个挺棒的 Github profile 并不意味着你一定技术过硬,你仍然有可能在一些简单的问题上栽跟头,但是拥有一个好的 Github profile 通常意味着 next door 这样的招聘平台上有很多工作机会正等待着你。
雇主们都明白,一个人在工作和个人兴趣之间难以保持平衡。而有些人的 GitHub profile 紧跟技术潮流,并展示着意义非凡的开源项目,这些的确表明了他们愿意为自己热爱的技术投入个人时间——付出更多的努力来帮助开源社区,或者通过他们的贡献为社会提供更广泛的价值。
作为一名程序员,充实你的 Github 账户只是你打造自我品牌的武器库中的一件工具而已,但它的确可以给你带来一些额外的竞争优势。
作者介绍:
Timothy Mugayi,技术传教士,讲师,对创新技术充满激情,掌握多种编程语言的软件开发者,同时也是一名父亲和健康活动家。
英文原文:
Personal Branding as a Developer: Your GitHub Profile Matters More Than You Think
今日荐文
点击下方图片即可阅读
绩效不及格被劝退,50 岁 IT 技术主管删除公司全部存储信息后被判入狱

InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!
  • 点个在看少个 bug👇
继续阅读
阅读原文