在小型的开发团队(超过20人)中,似乎应该不会出现不团结,编写通用代码以及做出技术决策的问题。 但是我们都知道事实并非如此(更不用说像我们这样的团队了,这里有80多人)。 为了解决这些问题,三年前,我们开始举行每周一次的内部DevForum开发者大会。 在猫的帮助下,您将了解到它如何为我们提供帮助,为什么其他格式(例如每周一次的会议或Sprint评论)以及创建它的说明并不总是有效。

三年来,我们积累了很多很好的内容。 因此,将根据DevForum的演讲撰写一系列文章 :
1.不带盒子的薛定inger猫:分布式系统中的共识问题。
2.基础设施即代码:初识。
3.基础架构即代码:如何克服XP问题。
4.服务器之间如何达成共识:Raft分布式共识算法。
5.马已经死了-哭了:从tslint过渡到eslint。
6.为c#模型生成Typescript合同。 (进行中...)
...
什么是DevForum,它可以解决什么问题?
DevForum是我们每周为Dodo IS开发人员举办的内部活动。 它已经在星期四运行了三年。 开发人员聚在一起,花了一个小时互相沟通。

在这次会议上,我们讨论与整个团队有关的技术问题。 一个小时的时间,两个半小时的报告,时间用于提问和回答。
内部会议解决什么问题?
为了朝着实现一个共同目标前进,对我们而言,保持对公司重大问题的关注非常重要。 对于所有渡渡鸟的整体同步,我们在星期一每周召开一次会议。 所有员工,合作伙伴/加盟商都在场,会议记录可以
在公共领域查看。 为了与企业和合作伙伴保持同步,我们安排了每两周一次的
Sprint评论 。 对于IT团队一个单一的关注点和定期的同步化,您需要更多地沉浸在技术“肉”中。 这就是我们在DevForum上所做的。
以下是问题及其解决方案的列表:
- 分享知识 。 现在我们的团队中有80多个开发人员。 他们每个人都有自己的背景,自己的工作特点,自己的沉浸度。 我们的团队按产品划分。 可能会发生两个独立的团队需要经历同样的困境。 当他们有机会彼此分享自己的最佳做法,想法,成功,反之亦然时,情况就会变得更好。 不踩别人耙子的可能性很小。
此外,我们的团队正在不断扩大,新来的人来了并获得了定期升级和知识共享的现成工具。 - 培训 。 在这里,您可以学习自己不能做的事情,也可以教。 培训是与知识共享密切相关的一点。 无论我们是否喜欢,我们都必须不断提高技术水平。
- 命令的技术同步(不要与命令的日常同步相混淆) 。 当您只有三个人时,随时了解所有信息很容易。 现在我们更多了。 有时,我们会遇到这样的问题:团队并行开发一种产品,但不知道每个产品做什么。 结果,出现了冲突,重写了别人的代码,等等。 如果有些人这样做,而另一些人抛出,则开发过程可能会延误。 在DevForum,我们还专注于团队的技术同步,并在团结中挣扎。
- 改变的工具 。 您可以来这里改变历史进程。 在这里,您需要举例说明。
一个例子。 假设我们有Oleg。 他坐在基础设施中,并与其他人一起进行Autonomy项目。 当项目充分发挥潜力时,简单开发人员的生活将变得更加轻松。 他们将停止拉动基础架构,并将自己做所有事情。 您自己做所有事情,您不依赖任何人,很好。
Oleg准备在公司中进行更改。 但是他知道,仅仅写关于Slack所做的更改是不够的。 有必要在公开场合讲述,解释,回答问题,写文章,采取一系列行动,否则一切都不会改变。 Oleg来到DevForum,并将其用作变更工具。
- 演出前进行培训 。 在这里,您可以在大赛前练习。 同样,以奥列格(Oleg)为例。
一个例子 。 奥列格想在大型会议上发言。 他需要在YouTube上享有荣誉,名望和成千上万的观点。
他来到我们身边,并诚实地谈论他的宏伟目标。 反过来,我们为他提供了一个(实际上)无痛培训的平台。 如有必要,我们会提供帮助,提示和指导。
进入DevForum的门槛(不同于mitap或会议)是最小的。 奥列格(Oleg)需要准备一个主题,准备幻灯片半小时,然后在适当的时候来。 这是进行排练的好地方。 训练猫,即 在我们身上。 我们将提供反馈,并浏览幻灯片,您可以查看我们的笑话。
在DevForuma之后,该报告可能已经被扔到了本地mitap上。 而且很可能他们会带走他。
有点复古:DevForum是如何产生的
这种格式来自哪里? Korotenechko。 三年前,我们公司首次尝试定期引入Sprint Review。
看起来像这样:每个人都聚集在一个房间里,绝对是所有东西,然后轮流告诉对方过去几周做了什么。 那时,我们只有20个人,但请想象一下,聆听并查看业务代表的代码以及开发人员查看比萨店建筑物的感觉是什么。 我们很快意识到,人们只听他们感兴趣的主题,而在其他主题上,他们却痛苦地陷入了电话。
我们面临着这样一个事实,即向远非如此的人们展示具有深远技术意义的事实。 他们来看看收银台是如何开始的,我们向他们介绍了使用Polly框架在服务之间实施重新托盘的经验。 我们很快意识到这种格式对人们没有多大用处,因此Sprint Review拒绝了这种格式。 在某个时候,它只是被取消了,日历会议仍然存在。
一群主动的人认为:向技术人员展示技术知识真是太酷了。 有一个会议,一个人,一个愿望,一个主题。 因此,我们开始每周一次聚会,直到今天一直如此。
三年来,格式发生了一些变化。- 我们开始记录我们的表演。 格式本身已经进行了三年,我们已经记录了两年。 所有这些都存储在一个地方,如果需要,您可以查看。
- 我们离开了演示的格式,因为得出的结论是,准备和演示本身比演示的格式花费更多的时间。
- 我们转到了易于准备的演示文稿格式,实际上是40分钟的时间(尽管这里当然取决于主题和演讲者的复杂性)。
- 最初,每个开发人员都在DevForum上发表演讲。 在某个时间点,我们假设不是每个人都讲话,而是团队中的代表。
- 然后,我们走得更远,不再烦恼,建议与那些现在“什么都没有发生”的团队交谈。
- 最初,我们每小时适合四个主题,但得出的结论是,无论报道多么有趣,到一小时结束时,我的脑袋里都只有稀饭。 因此,现在我们在DevForum上讨论一两个主题,一个报告25分钟,一个问题5分钟。
- 最近,我们决定稍微扩大主题范围,有时还会邀请外部发言人。
我们知道,DevForum并不是一种超级独特的格式,我们的许多同事都尝试过类似的方法。 但是,不幸的是,这样的例行会议常常不扎根,很快就变得过时和枯燥。 我们的DevForum可以使用三年-为了分析,收集专业知识并与您分享创建和维护此格式的经验,这是很长的时间。
如何在公司中组织DevForum
您将需要6基本内容:
1.了解DevForum的任务和格式。
更多细节要了解是否有必要在家中运行DevForum,可以查阅此格式在Dodo中解决的任务。
这些是程序员的沟通,培训和自我实现的任务。 DevForum是一种灵活的机制,可以一次或多次进行更多工作以实现不同的目标。
我们三年来开发了两种经过验证的语音格式。 您可以采用:
报告 :一名开发人员准备发言,而其他人则提出问题。
一个例子 。 曾经,主题是“结构日志记录”,他们在其中讨论了serilog,它在我们项目中的使用以及它如何帮助更好地使用Kibana中的日志。 它还讨论了通过NLog进行结构日志记录以及在.NET CORE项目中使用通用ILogging接口的问题。
演讲之后,有一个问题环节,所有参与者都知道将这个lib添加到新项目中是多么容易。 我们花了30分钟。 再过半个小时,我们讨论了当天的日志记录级别,例如Debug,Info,Warn,Error等,尤其是什么级别描述了系统中的情况。 在问题会议上,提出了原木中的噪声错误问题,尤其是与转盘有关的噪声错误。 从DevForum开始,所有新的微服务项目都完全使用Serilog,并且它也出现在我们的服务模板中。
决策 :存在一个以某种方式影响每个人的问题。 人们提供了可能的解决方案来专注于一件事。
一个例子 。 我们聚集了DevForum来讨论完成的定义,并希望稳定用于生产的代码的质量。 但是,当有多个命令同时处理一个通用代码时,该怎么办呢? 解决方案是使所有完成的用户案例定义通用。 拟议的国防部是一个有争议的观点。 我们聚在一起讨论是否需要它。 做出了一般性决定。 为了实现它,我们在任务跟踪器(Kaiten)的清单中添加了一个项目,并在关闭任务时将其作为必填项目。 然后,一些团队通过添加自己对他们很重要的观点来进一步加强国防部。

2.强大而负责的组织者。
更多细节必须考虑的其他因素是组织者不断参加活动。 来自开发人员或了解技术部分的人员很重要。 他们将不得不帮助参与者制定主题,寻找新的演讲者,甚至有时通过提问来保持讨论。
在我们的案例中,我们有3个开发人员的组织者,以及一个积极帮助IT品牌团队。
3.获得您的IT部门管理层的同意。
更多细节除了目标和组织者之外,活动成功的一个重要因素是缺乏来自上层的反对。 这个过程纯属基层倡议,可以说是爱好者们做的。 管理层的帮助可能是有益的,而反对将是灾难性的。 尽管如此,人们在工作时间聚集在一起,使用办公场所和设备。 至少不应禁止这样做。
4.会议空间和设备的可用性。
更多细节该空间可以是办公室中的会议室,也可以是虚拟会议场所,Skype或Google Meet中的一般电话会议。
我们总是聚集在办公室里,这是“永远到此为止”的会议室,但与此同时,我们广播了Google普通会议的所有内容,这也是相同的,并且在两次会议之间不会改变。
我们的谈判规模很大,可容纳20至30人。 有一个投影仪和一个声音输出系统,用于远程呼叫。 大家都知道,DevForum在星期四下午4:00到下午5:00在此会议室举行。

由于我们的开发是部分分布式的,因此我们一定会吸引远程工作人员参加。 它还允许演讲者从计算机上显示其屏幕,并连接到股东大会。 演讲者可以在一般会议室或任何其他方便他们的地方。 我们都会听到他们的声音,并看到他们的屏幕。
指定的永久空间使会议对于参与者而言更加可靠和可预测。
5.在场听众。
更多细节为了吸引参与者,我们在#devforum松弛中有一个永久通道,所有开发人员都可以肯定坐在那里。 我们甚至将此频道包含在新开发者清单中的必需频道列表中。 另外,新手辅导人员确保他们进入#devforum渠道。
有会议公告,讨论之后,主题选择和主题讨论。
为了让人们参与论坛的生活,我们组织了民意调查,请发言人提供反馈,并在第二天早晨发布会议记录。
同样重要的是,该活动是自愿的和可选的。 是的,它是在工作时间举行的,但是如果有人想工作或此时还有其他重要事情要做,他可能会想念。
事件后发布示例:

会议后的讨论示例:

6.演讲者和要讨论的话题在场。
更多细节这是组织中最重要,最困难的部分。 在这里,我们面临着问题,无论是寻找发言人还是话题的可用性。
这只是组织者与人们互动的活动的简短列表:
- 我们会提前寻找主题,并制定超过一周的绩效计划。 首先,我们在本周初搜索主题,而在星期四,我们不得不发言。
- 我们进入命令通道并明确询问:DevForum是否有任何主题?
- 我们与程序员进行私人对话,鼓励他们表演。 我们证实演讲者参与的价值:对主题的深入理解,演讲经验,公益,未来文章,会议的材料。
- 我们将频道主题放入讨论中,人们会感兴趣地进行讨论。 知识渊博的开发人员可以做出回应并充当发言人。
- 我们响应重要的社会事件,独立安排有问题的发展主题的讨论。
- 我们与参与者一起观看过去的会议。 参加会议后,总有话要说。
- 继许多人参加的对我们来说很重要的会议的结果之后,我们正在组织讨论,形式为“最新Highload ++的3篇最佳报告”。
- 我们邀请外部发言人。
其他重要的事情
似乎一切都很简单(反之亦然,不清楚),因此我将列出组织中必须考虑并牢记的其他功能。
组织者需要与演讲者合作。 我们通过准备演讲的帮助来解决对说话的恐惧。 要求事先提出主题,甚至以草稿形式,并附上演讲的确切日期,以制止懒惰或混乱。
有时没有。 有时发现的东西太多了,有时发现的东西很少。 在这种情况下,您无法明确取消活动。 我们必须设法找到话题或为自己说话。 组织者也是开发者,因此我们总是有话要说。 您可以使用技巧,安排更多免费的讨论。
视频和声音质量。 这纯粹是技术性的时刻,但对人们而言,声音的良好状态(提前检查连接和互联网)非常重要,并且屏幕上的代码演示易于阅读。 即使是最有趣的话题,但存在技术缺陷,也会使观众疏远。
我们积累材料。 会议必须记录下来。 我们有一个视频档案,上面附有演示文稿和其他材料。 YouTube上有播放列表。 我们将所有记录都放在我们的文档系统中,在该系统中可以进行全文搜索,然后您可以找到感兴趣的主题并结识。
专门针对那些没有您在其中使用单个代码工作的经理的开发团队,其中开发人员有兴趣了解正在发生的事情,对于那些想要开发并帮助他人成长的人来说,那些信任在他们内部很重要的团队。
来自Dodo Pizza Engineering的人性化