这是一篇抒发个人意见的文章,内容来源于作者自己和其他挖掘程序员才能的招聘者的个人经验。
我曾经在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能够为招聘人员提供以下几方面的信息:
个人拥有一个Git profile是极有帮助的,因为招聘人员至少可以在一定程度上判断你是否遵循了最佳编码实践或编码原则。是的,有些招聘经理会询问你是否对开源项目有贡献,或者是否积极地参与了诸如StackOverflow等网站的在线讨论。
而且技术招聘人员总是倾向于从你的社交媒体资料中寻找关于你的个人信息——当然你的GitHub profile也不例外。
接下来,就让我们看看如何让个人GitHub profile为找工作做好准备。
拥有完整的个人资料会给招聘人员一种严于律己的印象。你可能会说找工作凭借一份漂亮的简历或LinkedIn资料就足够了,但它们并不能全面清晰地展示你的能力——而程序员能力最好的证明就在编写的代码中。
拥有一个既定目标或愿景是很关键的,并且针对你所希望接触到的目标受众对你的Github profile进行优化和裁剪也是至关重要的。
一旦你决定了你的目标受众是谁,就是时候开始决定你以何种方式展示自己了。
让我们来看看,内容最精简的情况下,你在Github profile中至少也应该包含哪些关键信息。
请在profile中添加你的照片,然后加上一段简短的个人简介,以及其他能展示你工作的相关网站链接。
如果你正在找工作,照片中你必须看起来整洁大方,不修边幅的形象是会减分的。直至今日,企业的招聘过程仍然是偏主观人性化的,因此第一印象很重要。请务必不要使用一些通常你无论如何都不会发给雇主的照片。
还得确保的一件事是,你在GitHub profile上的照片看起来轻松自然,请避免使用过于正式的照片,但仍然要保持专业的形象。当你拿不定主意时,可以将半休闲(semi-casual)着装风格作为参考目标。
使用@链接到其他你希望招聘人员注意到的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来克隆一份公共的资源库,然后再向原始资源库发送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放一些有意义的实现,但该项目却没有任何单元测试,那么你可能就不应该提及它——因为这只会给你带来不好的口碑。程序员没有什么借口不做单元测试。
我们都知道,编写单元测试用例是一种习惯,而这个习惯可能对于大多数开发人员来说是很难培养的。编写单元测试用例能反映出很多关于你的信息——像我这样的招聘人员肯定希望看到单元测试的展示,以及关于如何执行测试用例的明确说明。
就像谚语“一图胜千语”一样,加上一段演示视频的链接也是如此。例如,演示一下你的项目是如何工作的,这会给人一种非常专业的感觉。
除了GitHub,你也可以利用其他类似的工具,比如GitLab和bitbucket——他们各有各自独特的卖点。但由于GitHub的广泛使用和网络效应,在社会认可度方面,Github仍然是一个更好的选择。更何况,在GitHub上还有许多价值极高的开源项目,这些项目在Google搜索中排名都很靠前。
以下是GitHub评选出的2018年排名靠前的顶级Git资源库:
相信你已经明白,可以做哪些切实可行的事情来提高你的声誉和获取理想工作的成功机率。这个过程也不仅仅只是创建一个美观的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
领取专属 10元无门槛券
私享最新 技术干货