GitHub的研发管理之道:异步工作方式 创新的工作环境

 

GitHub是一家著名的开源托管平台公司,员工人数当前仅有35人,它的成功离不开公司在研发管理上的创新之处。GitHub工程师ZachHolman分别写了三篇博文,对GitHub公司的研发管理之道进行了阐述,三篇博文分别是《HowGitHubWorks:HoursareBullshit》、《HowGitHubWorks:BeAsynchronous》、《HowGitHubWorks:CreativityisImportant》,CSDN已对第一篇文章进行了全文翻译。为了让大家对GitHub的研发管理方法有一个更全面的了解,CSDN对这三篇博文进行了整合,内容如下:

别用时间衡量程序员的工作

在诸多企业中,时间是决定生产效率的一个主要因素。但GitHub的衡量标准则是:高质量代码。ZachHolman认为一天高效的代码编写工作,远胜过一周不在状态的、懒散的工作状态。

为了让员工每天可以更高效的工作,GitHub允许员工有更灵活的工作时间,为员工营造了一个宽松的工作环境。在这个环境中,他们可以工作更长的时间,并一直保持对工作的激情。他认为限定员工在办公室中办公的时间会影响他们的工作状态。

在GitHub中工作的员工,有的可能在上午7点就来到办公室工作;也有的在下午3点才来。有的人觉得在家工作比较高效。如果员工不喜欢在办公室工作,他们可以不用每天来公司(虽然大多数情况下,每个人都会来公司)。

GitHub之所以采用如此“松散”的工作制度,原因有二,一是工作在宽松的环境中,可以使员工在他们喜欢的时间和地方工作;二是GitHub希望创造一个可以使员工最高效率工作的工作环境。因为每个人高效工作的时间都不相同,所以GitHub不会强迫任何一个人。事实证明,GitHub如此的管理方法,确实收到了很好的效果。

ZachHolman认为当用时间来衡量员工工作时,他们的工作就会变成更多的时间编写更少的代码。

异步工作方式

GitHub通过两种方式来实现异步工作,分别是网络聊天室、代码评审工具PullRequests。

GitHub在初创的头两年中,并没有固定的办公地址。Campfire网络聊天室是该公司主要的“办公环境”。虽然现在GitHub已有固定办公场所,但Campfire仍是平时解决问题的主要沟通工具。通过聊天工具可以实现异步工作。即便你外出就餐,回来后通过查看留言即可了解外出期间发生的相关工作事件;你可以通过发消息询问某同事一个问题,而不用担心是否会打扰他,他方便之时,自然会给你回复;你即便不在公司,通过聊天室也犹如像在办公室工作一样。

GitHub开发工作流中离不开PullRequests(GitHub自己开发的代码评审工具)的使用。假如你想对代码库进行了修改或添加一个新特性,你可以延伸出一个新条目,在PullRequests中新建一条PullRequest,你的同事会在以下三种情况下复查你提交的代码:1.他们受到这些改变的影响;2.他们对这些改变很感兴趣;3.当他们时间充裕时。之后,我们可以在部分机器上运行调试这部分代码。如果一切运行正常,即可在主库中进行修改。通过PullRequests,就必要为此再开会了。ZachHolman不建议通过开会来开展审查工作。因为开会不仅会使参会者无法进行其正实际进行的工作,同时会议内容很容易被遗忘,即便当时已做了笔记。正如RoR之父在GettingReal一书中总结的:“会议有害”。

GitHub的经验也说明了,取消会议,让有责任心的员工根据他们的时间安排工作的优先权,可以使他们完成重要工作的同时,更高效率的完成其他工作。

创新的工作环境很重要

一个富有创新的工作环境可以让人们兴奋。兴奋是很容易传染,可以由一个项目传染到另一个项目。即便其中某个项目没有赚到钱,被它传染的另一个项目也可能会使公司大赚一笔。

GitHub公司中很多员工喜欢喝酒。公司便在办公室中为他们准备了可以随时取用的啤酒。对于GitHub来说,酒是该公司创新环境中重要的一个因素,GitHub也从中获益良多。

在GitHub发起的酒会上,来自洛杉矶乃至全世界的人济济一堂,不仅可以很好地宣传公司的产品,同时也会让人感到在GitHub工作是件令人兴奋的事(这也是寻找优秀员工的绝佳机会,大家一起喝上几杯,远比正儿八经、充满压力的面试过程更容易招到靠谱的人)。在公司内,因为对酒的爱好,员工之间除了是同事关系之处,还是朋友。员工之间更加真诚,更加互助。酒是社交关系的润滑剂也许缘由于此吧。同时酒吧也是一个人才聚集的地方,通过集思广益,便会萌发出极具创造力的点子。据统计,很多令人眼前一亮的产品点子多诞生于洛杉矶的酒吧中。

营造创新环境,GitHub采取的另一项措施便是鼓励员工与众不同。GitHub中以Ruby为主要开发语言,公司中大部分开发人员全天使用Ruby。GitHub鼓励员工不要受限于现在的工作流程。公司在办公室为从没有接触过硬件开发的员工开设了一个Arduino(开源电子原型设计平台)商店。GitHub每月会组织员工举行健身俱乐部活动,还会针对在Twitter上谁拥有最多的粉丝进行激烈的辩论,同时鼓励员工在公司内部发表演讲,谈谈从古怪编程语言到爬山生活中点点滴滴。员工对生活中的不同领域发生兴趣,有利于他们从不同角度思考问题。个人提高了,公司也随之提高了。

创造力具有自我引导作用。可以说很多人都不能明确说出自己到底喜欢做什么。如果你喜欢做某件事情,那就放手去做吧。事实证明,只有真正喜欢一件事的人才会把这件事做得很漂亮。在GitHub中,员工可以利用PullRequests尝试他们所有的新想法,其他员工可以在此原型的基础上不断进行迭代,这是构建新产品的一个伟大方法。

像IBM这样的大公司可能比较重视资金的投入,但对于一个创业公司,这是行不通的。一个创业公司可能不必限定工作时间,不必开过多会议,员工的代码可以进行点对点的审查,从而创建一个很有趣的公司。同时注意你的公司不应该只开发你自己的产品,应该集思广益,让员工投入到产品的创新过程中。