软件开发是团队合作。本文探讨为何要找优秀队友,如何找到以及如何保持好的一面。
译自How Community Helps Developers Grow,作者 Heather Joslyn。
Tim Lehnen 在高中时就开始捣鼓网页设计,使用早期版本的 WordPress 和 Drupal(一种开源内容管理系统(CMS))进行实验。
在 Reed 学院学习英美文学和哲学期间,他在该学院的用户服务部门工作,并接了一些兼职网页设计工作来支付学费。
2008年毕业后,他的计算机技能对付账单非常有用。在过去的9年里,他一直在 Drupal 基金会工作,目前担任首席技术官。
听到Lehnen的故事,你可能会说他是一位自学成才的开发者。但你说得不对,他对 The New Stack 说。自学成才,他说,"有点意味着社区教学。"
作为初出茅庐的开发者,他经常将自己的问题和最棘手的问题带到在线论坛,包括Drupal.org上的论坛。通过这种方式,他说,"你逐渐建立起技术技能。但你也逐渐与社区建立起某种友谊,并开始理解谁是导师。"
当他以工程经理的身份加入 Drupal 基金会时,同事问他是如何对这个 CMS 感兴趣的。
他回答说:"嗯,其实,我在高中时问过你一个问题。你帮我弄清楚了如何建立我的第一个网站。"
"我们的社区中还有一些人今天仍在社区中,但在那时,他们不是正式大使或正式倡导者,而只是导师和愿意分享知识的人。我认为所有软件学科都存在这种情况。"
"开发是一项团队运动"
从你第一次在谷歌上搜索答案和代码片段开始,你就在寻找开发者社区。
无论是长期存在的开源项目 Drupal 的贡献者和维护者(每年有 7000 到 10000 名贡献者)- 还是向 Stack Overflow、GitLab 或其他面向开发者的论坛提问的新手 - 如果不向其他开发者学习,你走不远。
"开发是一项团队运动,"GitLab 的开发者关系和社区副总裁埃米利奥·萨尔瓦多(Emilio Salvador)对 The New Stack 说。"最终,你只能和你的队友一样出色,对吧?因此,拥有一个强大的社区很重要。"
今天的开发者社区与几十年前出现的社区不同。"想想不同技术的爆炸式增长,之前甚至不存在的云,开发语言等,"萨尔瓦多说。"社区变得更加专业化。"
而开发者通常同时参与几个社区,而过去他们只专注于一个或两个。
参与的选择也更多了 - 线上和线下。全球新冠疫情迫使开发者聚会和会议为 2020-2022 居家办公时代重新定义自我。
"新冠疫情的一个意外积极后果是,让每个人都有可能访问只有住在同一地点才能联系到的社区和人员,"萨尔瓦多说。
然而,只在网上遇到其他开发者会遗漏很多有价值的信息,比如无法通过肢体语言来了解另一个人。
"后疫情时代,我们正处于可以获得线上线下双世界最佳结合的阶段,"他说。"所以我们不需要每周或每月都举行线下聚会,因为我们可以在线维持这些关系。"
但是随着世界开始在现实生活中再次交往,他补充说,现在也有机会亲身建立联系。
萨尔瓦多提供了一种在线和线下参与之间架桥的策略,例如在会议上。一个开发者可以通过"在线与社区合作,只审查代码,提出建议,提供反馈"来开始。
"到了有机会面对面见这些人的时候,他们会知道你是谁。这为每个人的关系建立都省去了许多麻烦。"
支持开发者社区
每月,GitLab 与成千上万参与程度不同的人进行互动。有些人直接为项目做出贡献,有些参与该组织的论坛,有些参加线下聚会或在 Discord 上建立联系。
萨尔瓦多的开发者关系团队处于技术和倡导的交汇点,将 GitLab 与更广泛的用户社区连接起来。该团队的核心任务是培养和维持一个充满活力的开发者、贡献者和用户社区。这包括创建教育内容、组织活动和研讨会、开发计划和提供知识交流与协作的论坛。
萨尔瓦多说,开发者关系团队背后的工程师致力于通过指导、组织社区贡献者成团队以确保他们的成功,以及认可他们有影响力的贡献,帮助开发者成为 GitLab 社区中充满活力的成员。
Nils Brock和他在 DW 学院的同事需要社区的驱动力,于是寻求 GitLab 的帮助。DW 学院是一个帮助世界各地发展自由媒体系统的组织,发现它所服务的社区广播记者,特别是发展中国家的记者,在新冠封锁期间难以为听众服务。
Brock 对 The New Stack 表示,DW 学院的合作伙伴告诉该组织,"'我们无法告知我们的社区,他们已经因当地封锁而关闭,我们无法外出,我们没有在家工作的工具。' 所以这就是我开始考虑 OK,让我们为这个目标群体制定一个解决方案的原因。"
作为一名记者,Brock成为Colmena的项目总监,这是一个帮助用户协作、录制和编辑音频和文本以及创建播客的软件平台。Colmena在西班牙语中的意思是"蜂巢",它旨在在移动设备上运行良好,并能够离线工作,这体现了世界各地许多创作者只能访问移动设备而不是台式机,并且网络访问质量较差的现状。
Brock说,在新冠疫情期间为Colmena找到开发者是一项挑战。"当新冠疫情高峰期时,可用的开发者不多,"他说。"他们要么已经找到工作,要么要求非常高的日薪。"
该项目在巴西、突尼斯以及最终与阿根廷的一个合作社联系上了开发者。"他们中的许多人之前从事公共基础设施工作,或对开源感兴趣,并渴望为社区做点什么。然后吸纳社区本身就是一个难题。"
Brock说,Colmena周围的开发者社区推荐 GitLab 作为托管该项目开源存储库的最佳平台。GitLab可以轻松地在不仅仅是开发者,还有全球各地提出建议或报告错误的 Colmena 用户之间进行协作。它还提供了一个wiki 功能,帮助团队保持文档更新和组织良好。
Brock说,项目在开始阶段文档是一个挑战。项目的早期版本工作得很好,但它脆弱,无法轻松扩展。当新开发者加入Colmena时,他们无法理解前任开发者构建该平台的方式。
Brock说,新开发者告诉组织者,他们非常困惑,以至于必须从头开始重建平台的某些部分。这是一个艰难的教训,他说,这个教训让团队接受了 GitLab 的 wiki:"在这一点上,通过更坚决的文档工作,我们本可以更有效率。"
Colmena 现在处于测试阶段,计划在 4 月正式发布。Brock 说,通过 GitLab,该团队对他们正在发展的开发者社区感到满意。"它更像我们希望互联网成为的样子......一种共同寻找解决方案的方式。不要总是将商业视为重中之重。"
那么你想加入开发者社区吗...
如何找到开发者社区?也许最好的方法,也是最有可能产生深远持久联系的方法,就是为一个开源项目做贡献。但选择哪一个呢?
萨尔瓦多指出,全世界有大量聚会正在举行。他说,入门的过程基本分两个步骤。
"首先,找到你感兴趣的技术,"他说。"社区关系需要时间建立;如果你对技术本身不着迷,你不会长期参与该项目。"
"第二,在你的社区里找出那些技术的良好倡导者,"萨尔瓦多说。"找个当地人。特别是在开始阶段,建立和培养那些人际关系非常重要。"
在寻找项目时要有策略。例如,GitLab维护了一个开源项目目录,这些项目非常适合探索。但除了迷人的技术之外,萨尔瓦多说,选择应该由其他因素驱动。
他建议你检查你感兴趣的项目的状态墙。"如果你的项目有成千上万的开发者试图为其做贡献,那么在正确的时间与正确的人进行接触对你来说将非常困难。"
相反,从小处着手 - 但不要太小。"找一个有一定吸引力但不算太多的项目,"他说。"对项目及其背后的维护者做一点研究。"
现在科技会议在后疫情时代已经重启,你可以考虑参加。即使是专注于单一技术的小型活动,也可以提供与你试图加入的社区亲身接触的机会。
开发者社区礼仪
与任何一群人一样,开发者社区都有自己的社交准则和礼仪。这里有一些要做和不要做的事项:
对你的时间承诺要诚实,并坚持下去。
"你必须问自己,你愿意在时间方面付出多少,而不仅仅是试用一两天然后去做其他事情,"萨尔瓦多说。
要坚持一致。
"来来去去不好,因为它不帮助在社区内建立关系。"
他警告说,你的行为会发出强烈的信号。"社区,特别是大社区,会看到大量的人来来去去。你必须展示出承诺,然后在该社区中树立自己的名声,这一点很重要。"
要有耐心和稳定。尤其是要有耐心。
萨尔瓦多说,与任何其他关系一样,这是一段旅程。"你不可能一夜之间成为社区的骨干成员。你需要通过找出愿意提供帮助而不仅仅是寻求帮助的合适人选来建立信任。然后,最终,事情会自然发生。"
要做喷泉,不是排水沟。
美国国家橄榄球联盟堪萨斯城酋长队的老将锋端 Travis Kelce 经常谈到他大学橄榄球教练的建议对他改变了观点。教练说,你在生活中遇到的人要么是喷泉,要么是排水沟。要做喷泉,不要做排水沟。换句话说,要成为慷慨的滋养之源,而不是一个吸收能量的需求之沟。
同样的明智建议也适用于开发者社区。"这意味着要开放、诚实,并愿意比满足自己的利益更多地帮助他人,"萨尔瓦多说。
他还说:"最终,人们会把你看作是社区的另一个成员,一个开放、慷慨的人。" 萨尔瓦多说,如果你没有建立这样的声誉,你可能会被排除在社区之外。
阅读文档。并补充它。
Drupal 基金会的Lehnen建议:"在发布问题前搜索一下,确保它还没有被处理过。而且,在缺陷报告中填写别人需要的所有信息。"
Lehnen指出,任何社区都"会有一些礼仪和规范。其中一些涉及如何使用你拥有的工具------缺陷的正确格式和标签以及这类事情。"
谦虚地寻求帮助。
Lehnen说,在寻求帮助之前,确保你已经"用尽自助服务"。"只是为了证明你致力于尝试。"
当你提出请求时,他补充说:"不要要求一个答案;要求一个方法。不是:你能为我做这个吗?而是:你能展示给我看吗?"
他建议要考虑别人的时间。"不要认为一个大型开源软件项目的维护者能停下来帮你解决你的草坪护理网站的一个问题。"
另一方面,Lehnen补充说,如果你已经树立起正直的人格,"如果你已经在那个社区中,帮助编写文档,他们可能会,他们可能会觉得,很酷,你太棒了。是的,我会帮你解决你的那个小网站的问题。"
谦虚地提供帮助。
Lehnen指出:"工程师特别容易犯如果你有正确答案,你的语气就不重要这个谬误。"
他说,开发同理心和其他社交技能对技术人员来说应该与学习新编程语言或掌握新工具一样重要。
他提供了一个在开发者社区进行交流的技巧。
"最简单的思考方式是进入每次对话时都要想,我可以为这次对话贡献什么?
"也许你想贡献开源项目,房间里有一个维护者。你最好的首次互动可能不是'嘿,我发现了一个错误,你能修复它吗?'但一个好的互动是'嘿,我发现了一个错误,我已经修复了它。'"
本文在云云众生(yylives.cc/)首发,欢迎大家访问。