BT

你的观点很重要! 快来参与InfoQ调研吧!

跟Zach Holman聊关于Github的一切
录制于:

| 受访者 Zach Holman 关注 0 他的粉丝 作者 Martin Monroe 关注 0 他的粉丝 发布于 2014年3月26日 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术
24:17

个人简介 Zach Holman就读于宾夕法尼亚州匹兹堡的卡内基梅隆大学,游历世界各地,在各种软件大会上向码农和其他技术专家讲述GitHub 的乐趣,一个帮助开发人员跟软件工程社区其他领域的成员相互协作的热门网站。

软件正在改变着世界。QCon致力于促进软件开发领域知识与创新的传播,为软件开发助力。QCon是由实践者推动的大会,面向在团队中有创新影响力的技术团队领袖、架构师、工程经理和项目经理。

   

1. 这里是旧金山QCon的现场,和我们在一起的是热门网站GitHub的创始人Zach Holman。

我没创立(found)它,只是早期员工中的一员。不过没关系,你可以说我发现(found)了它。

Martin: 那我们就将错就错,从这个话题开始吧。那么,能讲一下GitHub的创立吗, Zach。

GitHub有四位创始人,他们是在2008年开始的。所以,不管数学怎么样,我想现在它已经有5或者6岁了,并且从那之后它一直在增长。

   

2. 确切地说, GitHub是什么呢?

GitHub是一个帮助人们跟合作者分享代码的网站和平台,或者你也可以用它做开源项目。其理念是我们构建一堆工具,能让你跟同事,或者那些想跟你一起做点什么东西的人沟通起来更容易。

依照传统,那通常就是代码,所以我们有很多跟编程相关的工具,但还有很多人,像设计师和管理人员,以及很多使用它帮助项目向前发展的人们。

   

3. 你觉得GitHub成功的秘诀是什么?

GitHub成功的秘诀?我认为是在初期时,很多创始人都能把GitHub交到很多开源项目维护者手中。这让人们开始觉得GitHub是为开源项目准备的,并且开源可以使用GitHub让代码和程序互相帮助,然后它可能也会对他们的业务有好处。

那就是开端,并且我觉得自那之后,我们一直非常努力地让它尽可能的简单,尽可能的直接,尽可能的可用,我认为那形成了GitHub的主要驱动力。

   

4. 你会如何评价今天在QCon的讲演?

简直是场灾难。不!其实相当不错。房间里人比较多,那么多人在里面会觉得有点热,但挺有意思的。

   

5. 能这么受欢迎太好了。那么,你在宴会厅那边有什么特别有趣的经历要分享吗?

我总是喜欢提问。我是说提问是最有趣的环节。我宁可自己讲5分钟,然后留50分钟大家一起讨论其中的关键点。所以真的有些特别好的问题,关于我在演讲中简略介绍的内容的细节问题,关于管理人员和他们在组织中的位置,如何处理公司中的人力、员工问题。我觉得GitHub正在做的一些事情真的很有趣,但现在也很常见。我认为人们真的意识到了,市场上真的有一些有意思的事情出现了。我们不必沿用十几年来一直在用的方式做事。

我们可以开始重新思考一下远程工作的一些想法–那是个好例子。你可以有很多住在其他地方的人。GitHub有60%的人在美国,甚至世界的其他地方,那真的决定了我们的工作方式。

我们有办公室,但你不能认为所有人都会到办公室去,因为他们住的地方可能远在半个地球之外。所以那些是我比较喜欢在那种设定下聊的有趣的话题。

Martin: 你觉得是什么原因让你的讲演这么受欢迎?我是说我遇到过一个只有三四个听众的,哦,我不会说出来的,可怜的家伙。

我不清楚。我觉得GitHub比较有趣。我们是开发人员的工具。所以很明显,应该有很多开发人员对我们说的东西感兴趣。

开发人员在自己的内心深处都渴望成为黑客。所以他们总想知道“我不做什么可以提高5%的效率?”,并且看着其他公司和团队在做什么总是比较有趣的。

全息文化跟踪实际上也挺有意思的。Stripe 的Greg Brockman正好在我前面,他那里也有很多人。所以我觉得很多人也并不一定只对技术方面的东西感兴趣,还有公司发展文化方面的,我觉得能了解也很不错。

   

6. 你会给开发人员一些什么样的提示呢?

正确的那些。我不知道。我更多地是侧重于文化,我想,与其说– 我不是个出色的程序员。我必须首先承认这一点。

但我觉得真正有趣的是谈论的这些东西,并且大部分是我在演讲中试图传达的,一般而言。只是开始考虑职场文化。因为我想了很多的公司都不会想的东西。

并且它跟GitHub如何工作,或者一个不同的公司如何工作之类的事没关系。而是让你坐下来想想“我公司的价值是什么?我们能做些什么让公司变得更有趣吗?如果允许远程办公或者做类似的事情,我们能让员工更开心吗?”

所以我只是想让人们考虑他们自身的情况,并重新思考这些成熟的想法:一家公司意味着什么,以及成为一家公司的员工意味着什么。

   

7. 那么对于“成为一家公司的员工意味着什么”有什么新想法呢?

真是个好问题。我得说,从广义上讲,我认为员工应该比以往得到更多的权利。并且我不是指 “还政于民”那种政治运动之类的东西-尽管有可能是-但我觉得这和信任有关。

并且我认为你应该可以信任你的员工,他们真的关心公司,真的愿意做那些能给公司带来更多价值的东西。并且我觉得那种最起码的信任能产生很多东西。

如果你相信他们会努力工作让公司盈利,那你就可以说“是的!我不管你在哪工作,因为我相信你将为公司做出最好的表现。我真的不关心你什么时间工作,或者你是否早8点到岗。并且你做这些事情全是因为希望我们能跟大家建立一种开诚布公的关系,也就是说我们可以相互信任,共同把事情做好”

并且我很有信心认为雇主和雇员都不会利用这一点。它必须双向发展。

   

8. 你在GitHub中是什么岗位?

我的岗位发生了很多次变化。就像有些人说的,得看是什么时候。现在我做的大多是这一类事情。我到处去演讲,跟开发人员和公司探讨,这真的既有趣又刺激。

我喜欢旅行,以及所有那些有趣的事情。所以,很好玩。我从去年,或者前年开始,到今年秋天都在做这些事情。今年早些时候我或多或少地回到了开发岗位上,所以这是我近期最后一次演讲。那样我就可以回去写代码了。

并且我想说我终于可以做些真正的工作,而不是谈论工作了。所以,在GitHub.com上构建功能,并推出更多东西给大家用挺有意思的。

但真的得看是什么时候:我也许会回来做讲演,或者回到公司做些内部工作,回去写代码。挺有意思的。我真的喜欢那种灵活性。我可以在特定的时间点做那些对我来说最有趣的事情。

   

9. 现在回去做你的事情,将会介入什么类型的工作?

我会在GitHub.com上做几个全新的功能,这些功能已经等了有一段时间了。所以希望,在接下来的几个月内,我们能开始推出其中一些功能,做一些非常酷的东西。

   

10. 对。我猜那些是绝密吧?

是的,绝密。我们对此总是秘而不宣,因为看人们感到惊喜很有意思。而且通常都是这样的,即便我们把所有东西都想好了,但当它准备好准备推出时我还会觉得十分兴奋,可能需要一年的时间它才能完全准备好。

我不希望发生的是,因为它要把我搞疯掉了,但有时会最终期限会变化,并且谈到这个感觉很糟糕。

   

11. 你回去的时候会用哪些语言呢?

一般我会用Ruby,并且这是我用得最多的。我们GitHub大部分是Ruby加上一些C,当有必要提升速度时。我们这个相当无聊的技术栈真的让我觉得兴奋。

没有太多–我不用担心技术栈,它很稳定,我只需要努力作出真正有趣的东西和产品。所以这就是我超级感兴趣的主要原因:用Ruby做些后台的工作,在设计工作中做些前端的工作。

并且一旦我有了让这些东西如何在一起工作的好点子,就有Web设计师跟进,把它变得比我想的更好,找个写后台的兄弟把它弄的扩展性更好一点儿。回去写点儿代码真的很有意思。

   

12. 你有什么使用Ruby方面的提示吗?

没什么特别的。我用它已经有六七年了,所以我不知道- 我们使用Ruby的理念跟GitHub中的所有技术都一样。

我们不太愿意使用最华丽的东西– 比如想法,就像我们所做的真正高层的编程是非常标准的东西。我们尽量不花太多时间去关心有什么新东西出现。

Ruby确实是个灵活的工具。它可以做出我们想要用它做的大部分东西。我们只是让它保持原样,并以此为基础。

   

13. GitHub有移动版吗?

有一个移动Web版。所以那还是在主APP中,但它基本只是底线代码库的前端。并且大部分只是HTML。并且大概有70行JavaScript,大概就是那样。所以它真的很小,很简洁,并且那就是全部东西了。

   

14. 它是比普通版小很多吗?

是啊。那是因为长期以来GitHub.com 要处理的东西太多了-它真是一个大程序,我想。比如说,如果你考虑一个代码的diff,真的要渲染在页面上,如果你有语法高亮,然后你有一个真正的diff--就像那种红/绿版的diff--你必须把那些全都封在HTML中。有不同的标签做包装,像OK这个能用,这个不行。最终产生了大量的开销。并且那就是主要的问题-在我们有移动站点之前。在移动端浏览器上的负载应该跟通常桌面端的体验一样。

我们已经在DOM中加载了如此多的元素,很多移动终端在试图解析所有这些东西时会很慢。所以那就是打造移动端站点所持的理念。

那样我们可以去掉很多东西,简化体验,你不会得到通常能得到的所有东西,但能更快得到你想要的信息。

   

15. 对。你们是怎么打造一个产品的?你们用Ruby和其它什么东西吗?

几乎全是Ruby,只有在做一些更底层的东西,真的要求很快的速度时会有例外,用UC或Go之类的东西。但从产品的角度来看,通常是推出一个Ruby原型,一般是用Rails。我们只是从那里起步。我们尽量重点强调把东西从那里做出来。

我之前在演讲中说过,在代码上随便弄一下比想出好点子容易得多。在你把它真正放到代码中并真正开始构建一些东西出来之前。它只是想法,你可以说“好吧,那个不行。”然后你全在说“好吧,那样能行”,然后你就哪儿也去不了了。

但一旦你真正感觉到它,并开始在上面点击后,开展些讨论就容易的多了,你可以说“哦,因为这个所以那样不行”,或者“因为这个那样确实可以”,并可以以此为基础。它是很多的小型迭代。

   

16. 你觉得旧金山怎么样?它现在正在经历新的技术热潮吗?

可以这么说。我不知道这是好还是坏。我不善于判断全行业的时期。事情确实很疯狂。我是说作为旧金山市民,看到所有租金价格都高得离谱–出事儿了。

我不知道那是否意味着它是泡沫,或者只是城中有钱有名望的人的回归。我们会明白的,但有一部分是激动人心的,因为这里有很多聪明人,正在做一些真的很酷的东西,并且每个人都有一个新的创业公司,即将改变这个世界,并且我也置身其中。

我希望这不会变坏,因为确实有些疯狂的事情。我是指刚有人出资30亿要收购Snapchat,而他们说“不”。我的意思是这要是我已经去拉斯维加斯啦。

   

17. 你自己也跟着创业公司做了很多事情了。你参与过多少家创业公司了?

在来GitHub之前,我在另外一家公司做了大概两年半左右跟市场营销有关的工作。那家公司大概20人左右,那些就是我来GitHub之前的工作经验,我想。

   

18. 我想GitHub的开源性是帮开发人员避开很多绊脚石的一种办法。你有什么建议给他们吗?可以帮他们避开你们制作一个应用程序时可能会遇到的绊脚石的建议。

我想我刚才谈的比较多的一件事就是找出你要构建的东西来。并且这超越了编码和所有东西。只是向人们展示:“嗨,看我做的东西。酷不酷?”“不酷。”“垃圾,再回回炉吧”。

我觉得很多创业者都要尽力达成这一目标,在向任何人展示之前,我们推出的 “第一个产品”必须是完美的,因为第一印象就是一切。

在一定程度上确实是这样,但还有很多创业者和公司只是试图追求永久性的东西。并且当他们忽然醒悟试着解决时有人已经给他们来了重重一击。

我是说要尽可能快地把想法变成现实。我们GitHub内部有很多东西,我们真的为这个功能感到兴奋,而且我们知道它对所有人来说都是那么棒,所以它能帮我们赚很多钱之类的,然后我们经过一个月或者一年或者差不多的时间把它拿出来给内部员工用,然后我们才意识到我们完全错了。

这一点意思都没有,然后我们最终就把它干掉了。如果我们沿着这条路继续前进,得到完美的产品,就不会这样吗?所以就是要尽可能快地把它拿出来,然后只要一次又一次地不断迭代。

   

19. 我看到你会在2014年于澳洲召开的Ruby大会发表演讲。你会在那里向听众们传达什么样的消息呢?

可能是差不多的内容。实际上我讲的可能一样;我得想想。只是会有更多Ruby的笑话在里面,因为我是Rubyist,并且我爱那些Ruby人。

并且澳洲的Rubyist们很疯狂,我是说以那种最好的方式。大家相互都认识。是个了不起的社区。 不管怎么样,就是差不多的东西吧。

并且像墨尔本和悉尼都是充满乐趣的城市,还有很多其它城市,像柏林、阿姆斯特丹–他们都开始处处洋溢着创业文化,到处走走看看真的挺有趣的。

我是说,就像我爱旧金山一样,我认为它是世界上最好的地方,看着其他那些城市全都开始构建酷酷的东西真的让我觉得超级兴奋。甚至都不用关心硅谷是什么。并且我认为那是正确的发展方向。我们拭目以待吧。

   

20. 人们在GitHub上的时候,什么是存储库?它们是怎么一回事儿?它们有什么值得称道的?

存储库基本上就是项目的另一种叫法。它们看着你把代码推送到存储库中然后持有你所有的代码。它们还持有其他所有东西,比如问题、bug报告,文档等等之类的-它就是你的存储库。所以它就相当于是项目的中心,我想。

   

21. 有人在GitHub上做了一个贡献后会发生什么?

我们有一个专有词汇,我想。"贡献(Contribution)",表示如果你给另外一个项目做了贡献,或者给另外一个项目提了问题,你基本上是在试图帮助那个项目。

最显而易见的是在你的档案上,那一天会有个小点。它又有点回到创意上去了-你熟悉宋飞的日历吧-那是杰里宋飞“不要打破链条”的创意。

所以,在开源的情景中,我们尽量把GitHub上的贡献变得非常链式:“我给一个开源项目做贡献在一行里的天数就要有8天了” 。是种不错的小激励。

Martin: 像一颗金星。

是啊,完全正确。并且我也注意到这个了。一旦你开始那样想,它就不仅仅是编程了,它是一切。你甚至都不会在意真的做些事情。

就像你在家里必须要做的家务活一样。只要你做大概三分钟左右的样子,通常就会变成“哦,对。这个能做,我收拾一下这个,还要把这些活全干了。”

跟编程是一样的理念。在于你开始学更多以前从没学过的新语言。它只是试图让人们做一些没做过的新事情。

   

22. 那么在GitHub上如何开始一个项目呢?比如说你有了这个新创意,想要招募GitHub社区中的人帮你。该怎么把它搭建起来呢?

看情况。我脑子里浮现出来的是有很多项目正在开展。特别是那些非常知名的人发起的项目。简直是在作弊,有些人因为在GitHub和Twitter上有很多粉丝,他们就像开发人员中的超级巨星一样。不管他们做什么,都会有人蜂拥而至试图帮忙。

那就是人性吧,我想,不论好坏。所以看着开发的长尾效应真是有意思。我提一下我的项目–它基本上就是为了跑步做的。

所以我记录了我跑了多少公里,并且我用了一个服务,然后把那些导入到另一个服务中,所以我可以用另外一个服务。非常小众,用它的人不多,但能跟两三个志趣相投的开发人员挂上钩挺有意思的。

有时候看着这些事就是有趣,人们推动新的-在这里,是开源的存储库-并且说“这是我的爱好”。真的挺不可思议的。我甚至不知道。一些小项目和很多我不认识的人跟我的兴趣一样。

我只是把它推到GitHub上,然后,过了一段时间,你最终就会遇到各种不同的跟你兴趣相似的人。看着这些实在让人着迷。

因为我觉得相较于去帮助一些名人的存储库,那个更有意义,因为这里还有几百万的其他人。

但如果你跟一些品味一致的人建立了联系;他们的技术栈也跟你一致,那真的很有意思。

   

23. 那么原因究竟是什么呢?我有一个想放到GitHub上的项目。我要找什么?它不是存储库,不一定是贡献,或者是贡献?我怎么开始进入我的东西?

如果你有一个很好的创意,并且想开始些新东西,你只需创建一个新的存储库,然后很多人就会发Tweet,或者发封邮件给某个邮件列表,说“嗨。我有个很好的创意,如此这般之类的”。

然后我就可以访问你的存储库,检出来开始帮你实现它,或者,如果那是代码或者可能那只是问题并说“嗨,我有个想法。你怎么想?”然后在真正开始动手做之前开始对话。

   

24. 所以我真的不用有任何代码。我可以完全不了解如何编码,我只要新版的Mine Craft,太空时代版的Mine Craft或某些东西,可能我就可以招募到程序员,很快就会有自己的公司?

是的。我的意思是我们在GitHub内部也做了很多。我们会知道有些东西坏了或者那里有问题,并且还没人真的知道如何修好它,但你只要开始谈论并且说:“好吧,我们创建个存储库”,里面只有一个文件,它说“在这里做某事”或类似的一些东西。

然后你只是开始讨论:“这个看起来应该是什么样的?我们能用这个解决哪类问题?我们能得出哪种解决方案?”大多数情况下代码真的不是什么难题。

大多数时候关键是找出真正的问题是什么,以及真正的解决方案。并且一旦你找出了这些,就可以开始编码了。并且是满怀希望地一步步得到激励着每个人的解决方案。

   

25. 我不敢肯定,但对我来说GitHub真的变大了。我是说,GitHub的下一步计划是什么?你们会试图延伸到某些领域中,或者添一些人之类的吗?

我不知道。要看一看。公司肯定是变大了。现在我们有217名员工,并且还不错。我们有进入几个新领域的资源,如果我们公司太小就不行了。

比如说“你们俩-就做这个,三年后再看最终能做成什么样”,这样风险大得多。并且我们有几个那样的长期项目,已经做了大概两三年的样子了。

并且还算不错,差不多就是坐回去说:“好的,继续做吧,当它准备好后,我们就推出它。”所以有很多很酷的项目之类的东西我们仍然要做。我们会看到事情进展如何的,我想。

Martin: 我们对来自GitHub的Zach Holman采访就到这里了。Zach,非常感谢你和我们一起参加旧金山的QCon。

谢谢。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT