`

怎么用GitHub来判断一个程序员的能力

阅读更多

 

阅读这篇文章之前请首先确认知道GitHub是什么,参考链接 http://zh.wikipedia.org/wiki/GitHub

 

建议为每个候选者建立一个GitHub的Repository, 然后让其从3-5个Assignment选择一个,并在给定的Repository上进行开发, 时间控制在3-5天, 由于Git提供非常详细可track的提交记录, 我们可以清楚的知道候选者的开发过程, 一个理想的DEV熟悉敏捷开发流程, 并且基于GIT进行开发的时候至少会产生数十次提交.

 

敏捷开发中一般流程如下:

BA(业务分析) 产出 User Case

DEV 理解 User Case 并开始做Module Design 产出 Design Document

DEV 根据 Design Document 开始拆分Story 产出 Story Card

DEV 估计 Story Point 产出 SP Marked Story Card

DEV 领取 Story Card 并拆分出 Task List

DEV 按照 Task List 编写每个Task的Test Case(和User Case Match)

DEV 实现 Task的Test Case并Commit到Git

 

其中最能够体现出一个DEV的能力的地方包括,  Module Design,  将Story Card 拆分为Task List, 以及TDD的开发流程.

 

通过观察这些提交我们就会了解到这个开发人员的技能情况, 并且可以防止从互联网拷贝的情况发生, 因为TDD开发过程是渐进并伴随大量重构动作.

 

 

我们可以通过以下角度来评估一个候选者:

1.提交频率, 好的DEV通常会频繁的提交代码以避免和其他人的冲突.

 

2.提交的完整性, 好的DEV每次提交必然是一个可以运行的版本, 其中应当不包括测试用例失败,大量注释掉的代码,Check style warning以上的所有提示.

 

3.Task划分能力, 好的DEV能够将一个完整的Story划分成为若干可以独立交付的Task, 并将每一个作为提交单元

 

4.TDD的实践, 好的DEV的测试用例(UT)应该是领先于代码, 避免看到编写大量的代码之后一次性补完TestCase, 为覆盖率而测试, 或者为测试而测试

 

5.提交注释, 好的DEV够说明清楚自己的提交的目的以及改动

 

6.重构, 好的DEV的开发过程应该伴随着大量利用IDE的小规模重构, 如抽取方法, 提取父类, Inline, 抽取成员变量...等等, 通常重构技能越熟练说明开发人员越有高质量代码的开发经验


分享到:
评论

相关推荐

    简洁的程序员万能简历模板

    3、内容方面,一目了然的工作履历可以让HR快速判断你的能力是否匹配。 4、工作经历和项目经历后面,一定要罗列出你的贡献和成果。 5、除了联系方式外,Blog/Github链接也要记得检查。 6、切记不要盲目摘抄模板里的...

    如何识别真正的程序员

    本文将深入探讨这一主题,帮助你理解如何判断一个人是否具备真正的程序员素养。 首先,真正的程序员通常对技术有深厚的兴趣。他们不仅满足于掌握现有的技能,还会积极学习新的编程语言、框架和工具,保持与时俱进。...

    在Github上3天就star过百的程序员简历模板.zip

    雇主往往需要在短时间内了解大量候选人的情况,而简历为他们提供了一个快速了解你背景的途径。通过简历,雇主可以获取关于你的学历、工作经验、技能和其他重要信息的概要,从而判断你是否符合他们的需求。 除此之外...

    程序员简历模板,包含学习经历,工作经历

    总的来说,一份高质量的程序员简历应具备以上所有要素,通过清晰、专业的展示,使招聘者能够快速评估求职者的综合能力,从而增加获得面试邀请的可能性。对于求职者来说,根据模板填充并个性化自己的简历,是成功求职...

    程序员英文简历模板—单页单色风格61.zip

    "程序员英文简历模板—单页单色风格61.zip"提供了一个简洁且专业的模板,适合想要在国际舞台上寻找工作的技术人才。 首先,我们来看简历的基本结构。一个有效的程序员简历通常包括以下几个部分: 1. **个人信息**...

    程序员通用简历模板-简历模板

    - **具体和量化**:使用具体数据和案例来证明你的技能和成果,如性能提升的百分比、处理请求的速度、节省的成本等。 - **成长历程**:即使没有显赫的成绩,也可以分享你的学习和解决问题的过程,展示你的学习能力和...

    GitHub Copilot AI pair programmer:资产还是负债.docx

    - **构建测试数据集**:基于现有的人类程序员提供的解决方案构建了一个测试数据集,用于评估Copilot的性能。 - **实验过程**:将Copilot置于真实的编程环境中,让其独立解决上述问题,并记录其生成的解决方案。 ###...

    六分钟八法则塑造优秀程序员

    - 针对一个不熟悉的关键字(例如“yield”),查阅官方文档和相关教程。 - 实践该关键字的应用场景,编写示例代码加深理解。 **实践意义**:掌握更多的关键字可以拓宽编程思路,增强解决复杂问题的能力。 #### 4. ...

    Chess_Battles:用Java编写的两个棋手下棋的程序; 我使用 GitHub 编写的第一个程序

    《Java编程实现:棋盘对弈的智慧——Chess_Battles详解》 在计算机科学的世界里,游戏编程一直是吸引程序员的一...对于想要提升自己Java编程能力,尤其是对游戏开发感兴趣的开发者来说,这是一个不容错过的学习资源。

    毕业设计进销存管理系统C源代码实现,很好的毕业设计参考

    【标题】中的“毕业设计进销存管理系统C源代码实现”指的是一个基于C语言编程的毕业设计项目,其目标是构建一个进销存管理系统的软件。进销存管理系统是企业管理中不可或缺的一部分,它用于跟踪和控制商品的进货、...

    浅谈编程能力的培养与提高.doc

    尝试参与一些小型项目或挑战,比如编写一个简单的网站、开发一个应用程序或是解决特定问题的小工具。通过实践,不仅可以巩固所学知识,还能在解决问题的过程中锻炼思维能力和创造力。 **2. 阅读优质代码** 阅读...

    algorithm note

    GitHub是一个开源项目托管平台,因此在GitHub上找到的资源往往更加全面和更新。对于想系统学习算法的学生或程序员来说,这份算法笔记绝对值得一读。同时,通过GitHub上的反馈和讨论,可以与世界各地的开发者共同学习...

    C# 基本小程序算法

    这些基础知识对于初学者来说至关重要,它们有助于提升编程思维和问题解决能力。 首先,我们来讨论"水仙花数"算法。水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153是一个水仙花数,因为1...

    github_leetcode

    "GitHub LeetCode" 是一个基于 GitHub 的项目,旨在收集并整理各类编程问题,特别是与算法相关的题目,以帮助程序员提升技能并准备面试。这个项目主要关注 Python 语言,因此所有提供的解决方案都用 Python 实现。在...

    Algorithm-BOJ-PSJ.zip

    在Baykon在线判断平台上,程序员可以通过解决各种算法问题来提升自己的编程能力,而Java作为一种广泛使用的编程语言,更是成为了众多开发者的选择。本文将围绕"Algorithm-BOJ-PSJ.zip"这个压缩包,探讨如何利用Java...

    打地鼠游戏

    可能需要一个单独的线程来处理游戏逻辑,确保游戏不会因为用户界面的更新而卡顿。 此外,音效和音乐的集成也是提升游戏趣味性的关键。Windows API提供了多媒体功能,可以让程序播放各种声音效果,如击中地鼠的响亮...

    SwiftSideslipLikeQQ, 再造 “手机QQ” 侧滑菜单.zip

    在iOS应用开发中,设计和实现一个类似“手机QQ”的侧滑菜单是一项常见的需求,它为用户提供...这对于想要提升Swift开发能力的程序员来说,是一个宝贵的资源。同时,参与开源项目也是提升个人影响力和贡献社区的好方式。

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    GO語言WEB編程基礎教程

    综上所述,Go语言以其出色的并发处理能力、快速的编译速度和简洁的语言特性,成为了Web编程领域中一个非常有竞争力的选项。对于希望开发高效、稳定Web应用的开发者来说,掌握Go语言将会是一个重要的技能。

    Java-snake贪吃蛇代码分享

    【Java-snake贪吃蛇代码分享】是一款基于Java编程语言开发的小型游戏,适用于初学者进行编程实践...同时,通过阅读和理解别人的代码,可以锻炼自己的代码阅读能力和问题解决能力,这对于任何程序员来说都是宝贵的财富。

Global site tag (gtag.js) - Google Analytics