技术面试中常被问到是否参与开源,那如何清晰展示 GitHub 项目呢?

2017 年 10 月 28 日 Linux中国 作者:小米云豆粥
“你参与过开源项目么?”是目前 IT 技术面试中的常见问题之一。既然他们要 GitHub,你就得给。本文将阐述如何在面试中展示你在 GitHub 上的项目。
-- 小米云豆粥


本文导航
转载自 | https://thehftguy.com/2016/10/24/heres-how-to-make-a-good-github-project-for-your-resume/
 作者 | 伯乐在线 / 小米云豆粥
转载自 | 伯乐在线 / http://blog.jobbole.com/112322/

你面试的公司找你要 GitHub 链接,猎头找你要 GitHub 链接。

“你参与过开源项目么?”是目前 IT 技术面试中的常见问题之一。

既然他们要 GitHub,你就得给。本文将阐述如何在面试中展示你在 GitHub 上的项目。

以下的建议有两个用途:

◈ 应聘者可以学习怎么写软件的简介(不一定非要是 GitHub);
◈ 招聘者(程序员)可以学习可以从哪些关键点来评价一个程序员的水平和软件的质量。

 

When having a GitHub is mandatory, just like having a name.

链接一个特定的项目

在你的简历和每一份申请里面都放上你的 GitHub 链接。

该链接要直链到一个项目。不要给你 GitHub 的主页地址,那个页面没有有用信息,很难让人继续浏览。

你必须只展示一个项目。一个就够了,不需要更多。

这个项目将是你的“登录页面”,是招聘者看到的第一个页面。他们很少去看其他页面(也没有这个必要)所以该页面本身就应该展示一切信息。如果他们去看了其他页面,说明这个主页成功引起了他们的兴趣,他们想知道更多项目细节。

我们要写一个可以充分展示你的能力,并能给人留下好的第一印象的项目页面。

项目结构

用 5 秒时间看软件的架构就可以知道项目优劣。

你一眼就能看出来一个程序员没有经验,他们的项目往往没有结构。项目文件要么在随便一个地方或者都在根目录。

一个好的项目结构必须将源代码,测试,库文件,可执行文件分开放在不同的文件夹中

命名的细节,例如是用 ‘doc’ 还是用 ‘docs’ 并不重要。这里是 GitHub 项目的文件夹结构[1]: 

   
     
     
     
  1. .

  2. ├── build                   # Compiled files (alternatively `dist`)

  3. ├── docs                    # Documentation files (alternatively `doc`)

  4. ├── src                     # Source files (alternatively `lib` or `app`)

  5. ├── test                    # Automated tests (alternatively `spec` or `tests`)

  6. ├── tools                   # Tools and utilities

  7. ├── LICENSE

  8. └── README.md

 A well-organized project

software project structure

有一个项目简介文件

项目简介文件可以提供:

◈ 项目目标
◈ 截屏或视频
◈ 使用说明
◈ 软件下载页面
◈ ……

在简介文件里面放软件界面截屏

一张图比一千个字更能说明问题。

人们不会因为要看软件界面就去安装软件。请提供软件界面截图。

在简介中放视频

一张图能抵一千个字,那么一个视频顶一千张图。

Great demo from a random snake project on GitHub[2]

注意:GitHub 不允许插入视频,你可以使用动态图。

网页链接或安装文件链接

如果该项目是网络应用,请提供网页地址。当然,所有人都应该能访问该地址。

如果该项目是单机程序,请提供安装文件下载地址。如果安装文件看上去不专业,用户是不会安装它的。很多时候,是否专业跟发布方式有关。

整合 GitHub 工具

GitHub 提供了一整套免费工具用于编连,打包,测试和其他功能。这些工具在专业软件开发中都是必须的。

以前想要实现这些功能非常困难,但如今通过 GitHub 一切都非常简单。你没有理由不用它们。

GitHub-integration-icons

这是一个由 C++ 实现的四子棋的例子。按钮从左到右代表:

☉ 在 Linux 上编连( Travis CI [3]
☉ 在 Windows 上编连( AppVeyor [4]
☉ 单元测试和测试覆盖分析( Coveralls [5]

如何处理源代码?

“没人在乎你的源代码——得知这个事实的时候我也很吃惊。我在整理代码上花了不少时间,但发现没人在乎。重要的不是代码,而是产品” (出处[6]

比起猜,读一段软件功能描述要快 10 倍。比起自己弄明白软件用法,观看一个介绍基本用法的视频可以快 100 倍。比起逆向工程,读设计图表要快 1000 倍。你可以通过读源代码来搞清楚一切,但这个过程要费事得多。读源代码(解码源代码)是非常耗时的。只有在走投无路的时候才应该用。

◈ 经验教训 1:没人在乎你的代码,也不会有人去读你的代码。
◈ 经验教训 2:别指望别人会去读你的代码,也别强迫别人去读代码。

如果我没有像样的大项目要怎么办?

挺好的。简单的项目更容易展示,更容易解释,面试官也更容易理解。比如大家都知道四子棋是怎么回事。

即使第一眼看上去很简单,但每一个项目都包含了很多工作量:写一个好的用户界面,调整颜色,允许两个人一起游戏,加上对下一步棋的走子建议,加上 AI 选手等等。

这个游戏规则很简单但是要把它做成好的软件要做很多工作。这些都是你在面对面的面试中可以跟面试官深入探讨的地方。

你知道玩四子棋的时候先走的选手一定会赢么?(如果他不犯错的话)你知道如果第一个选手第一步棋不走中间的话,第二个选手一定可以将棋走成平局么?(来源:A Knowledge-based Approach of Connect-Four[7], The Game is Solved: White Wins, Victor Allis)

面试官真的会去看 GitHub 么?

事实上他们不会

GitHub Traffic Statistics

我们测试过了。这个图是我们发出一堆简历之后的数据统计。这三个点击是我自己点的。在写这篇文章的时候我没有登录就去点了 GitHub。我的错。

从我上次找工作的经验来说,经过十几个电话面试(每次电话有一个技术人员)和几个现场面试(4 到 7 个技术人员),只有一个人去看了我的 GitHub 页面。

结论:没人关心 GitHub,没人会看 GitHub。每人都会问,是因为别人也在这样做。

好处:既然没有人真的去看,你也可以拒绝参加这场 GitHub 的假面舞会。你可以用这个 hello world 终极版本库[8] 去回应所有的 GitHub 要求。这个版本库包含用一百种语言实现的 “Hello world”。

小抄

☉ 项目要有结构
☉ 要有项目简介文件
☉ 写一段说明软件功能的介绍
☉ 放上软件界面截图和使用说明视频
☉ 提供安装文件下载地址或者网络应用的网址
☉ 整合发开工具(CI,单元测试,打包工具等等)

这世上还有其他软件工程的好范例,不仅仅局限于 GitHub。

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达



登录查看更多
1

相关内容

GitHub.com 使用 Git 作为版本控制系统(version control system)提供在线源码托管的服务,同时是个有社交功能的开发者社区。 国外类似服务: Bitbucket.com
Gitlab.com
国内类似服务:
Coding.net
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
还在修改博士论文?这份《博士论文写作技巧》为你指南
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
史上最全的 Pinterest 面试资料
九章算法
6+阅读 · 2019年9月5日
网上搜不到的Airbnb面试资料
九章算法
12+阅读 · 2019年8月22日
Github标星4w+,如何用Python实现所有算法
七月在线实验室
5+阅读 · 2019年5月21日
春招已近,送你一份ML算法面试大全!
机器学习算法与Python学习
10+阅读 · 2019年2月22日
春招已近,这份GitHub万星的ML算法面试大全请收下
全球人工智能
4+阅读 · 2019年2月22日
一文教你构建图书推荐系统【附代码】
机器学习算法与Python学习
10+阅读 · 2018年9月16日
机器学习面试 | 这些题目一定会被问到
七月在线实验室
5+阅读 · 2017年12月10日
机器学习/算法19家公司面试总结(内含薪资)
深度学习世界
12+阅读 · 2017年11月14日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Adversarial Transfer Learning
Arxiv
12+阅读 · 2018年12月6日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
9+阅读 · 2018年3月23日
Arxiv
8+阅读 · 2018年1月12日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
还在修改博士论文?这份《博士论文写作技巧》为你指南
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
相关资讯
史上最全的 Pinterest 面试资料
九章算法
6+阅读 · 2019年9月5日
网上搜不到的Airbnb面试资料
九章算法
12+阅读 · 2019年8月22日
Github标星4w+,如何用Python实现所有算法
七月在线实验室
5+阅读 · 2019年5月21日
春招已近,送你一份ML算法面试大全!
机器学习算法与Python学习
10+阅读 · 2019年2月22日
春招已近,这份GitHub万星的ML算法面试大全请收下
全球人工智能
4+阅读 · 2019年2月22日
一文教你构建图书推荐系统【附代码】
机器学习算法与Python学习
10+阅读 · 2018年9月16日
机器学习面试 | 这些题目一定会被问到
七月在线实验室
5+阅读 · 2017年12月10日
机器学习/算法19家公司面试总结(内含薪资)
深度学习世界
12+阅读 · 2017年11月14日
相关论文
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Adversarial Transfer Learning
Arxiv
12+阅读 · 2018年12月6日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
9+阅读 · 2018年3月23日
Arxiv
8+阅读 · 2018年1月12日
Top
微信扫码咨询专知VIP会员