大家好! 我叫Roman,今天我将在一个分布式布局团队中分享我的经验。 我将向您介绍我们构建的流程,以及由四个人组成的团队如何满足由30多个产品和20多个产品团队组成的整个单元的布局需求。

我还将讨论如何:
- 监控分布式团队的工作;
- 在不同项目中实现代码一致性;
- 公平分配任务;
- 保持高质量的工作;
- 不要堆积未完成的任务;
- 为了防止倦怠和发展员工。
而不是加入
我认为有必要立即说明为什么我们在Tinkoff Business中拥有专门的布局设计师。 毕竟,有一种观点认为任何Web开发人员都应该能够胜任。
在许多公司中,开发人员都在自己排版。 但是,首先,并不是所有的开发人员都喜欢排版并且做得很好。 其次,对于开发人员而言,布局并不是始终具有最高优先级,而是将重点转移到了代码上。 如果没有重点,那么细节的质量和态度就会受到影响。
因此,我们有专门的布局设计器,但他们没有附加到特定项目,因为并非所有项目都能始终提供布局任务。
以前怎么样
以前,该过程非常简单。
在我的单元中,有四个排字机和一个特殊的聊天室,所有感兴趣的人都在上面扔拼图进行布局,然后我们慢慢对其进行排序。 总的来说,该系统可以运行,但是当然也有缺点。
例如,可以抛出一个任务,但是没有一个排字员响应该消息。 任务的作者再次开始在聊天室中书写-他们说,谁来接任务? 另外,没有计划和了解谁在做什么,什么时候被释放以及他沉浸在什么项目中。
为了使即使在每个人都很忙的情况下,来自作者的消息也不会悬而未决,我开始回答所有消息,并想知道谁能在何时执行此任务。 同时,他确定了谁参与了哪些项目,谁知道什么任务最好。 历时约一个月,系统开始更好地运行-对任务的即时反应使客户完全满意。
的确,这种方法仍然无法解决许多问题。 例如,很难预测负载,方法没有统一性,没有计划,每种方法都独立存在,并且独立解决了问题。 除了聊天之外,没有单个进入布局的入口,也没有人与新项目进行讨论来评估设计,因为尚不清楚谁将在何时进行该项目。
在与负责人举行的会议中,我们决定组建一个由所有布局设计师组成的新布局团队,我们与他们共享任务以构建流程并为所有项目提供布局。
这就是它的来历。
建立团队
给出:来自不同城市甚至国家的四种排字机。 在同一堆栈上有30多个项目,但是由于项目的性质,通常具有不同的体系结构,设计和组件的不同版本以及有时会实践其方法的不同开发团队。
首先,我们仅与布局设计师进行了私人聊天。 这使您可以在不需要太多紧急情况的情况下快速解决团队问题,并且可以随时提出问题,向同事寻求帮助或查看工作。
控制权
如果员工不坐下,该如何控制员工的工作?
通常,根据技能水平和对员工的信任水平,可以有不同类型的控制。 我不会详细介绍它们,您自己将学到一切。
我很幸运-所有的人都同样出色,默认情况下拥有100%的信心。 因此,该系统只需要控制,同步动作和了解全局即可。 为此,我们引入了每天最多10分钟的每天早上致电,在此期间每个人都说了昨天的工作以及今天的工作。
这些短语仅用于任务和项目的同步,并不意味着分析问题,困难,轻率或其他问题-如有必要,所有这些都以单独的短语或讨论中的形式提交。 监视此情况并停止所有将呼叫转移到有关天气的长达一个小时的对话中的尝试非常重要。
代码一致性
我们正在从具有不同代码和质量的完全不同的项目中接收任务,因此有必要为所有项目实现单个高层布局的交付,而不管源数据如何。 为此,通过一般性讨论和投票,我们制定了布局规则和准则,这是我们团队中严格遵守的原则,并建议所有其他人使用。 甚至属性的顺序也被注册。
是的,如果您编写宽度以上颜色的CSS属性,则会收到注释,并且PR不会变暗。 这可能看起来很奇怪,因为在大多数情况下,属性的顺序不会影响最终结果,但是我们要记住:许多项目都是一个高质量的项目。 因此,我们必须拥有最大的订购量。 无处不在。 甚至顺序也是属性的顺序。
我必须马上说确定订单是个好主意。 它允许您编写更加结构化和周到的CSS。 例如,有一个用于分组属性的规则。 如果您编写display:flex,则所有相关属性(align-items,justify-content)都应并列描述,以使您更容易理解正在发生的事情。
现在,我们逐渐得出结论,我们将所有规则都放在了短篇小说中,以减少对审阅的非关键评论的数量,并使审阅者能够专注于真正重要的事情,例如体系结构。
顺便说一句,我们的linter配置位于公共领域,也许对您有用。 下载配置文件 。
任务分配
这样,沟通就建立了,游戏规则是固定的,但是怎么玩呢? Vanya为什么只执行简单的任务,而Pete变得复杂,甚至是从一个长期没有人参与的项目中呢?
实际上,有些项目是:
- 不断需要布局;
- 不断需要布局,一切都在不断变化;
- 这些是很久以前写的,并且又开始发展。
这就提出了另一个问题:如何平等,公平地分配任务?
正义有必要吗?
您可以使用管理资源并严格地说:“ Petya,您执行这些任务,没有人喜欢它们,但现在,我们将把这些有趣的任务与Vanya一起处理。”
当然,这是可以做到的,并且在一段时间内甚至可以奏效。 但是,这样做有几个缺点:
- Petya开始有点不喜欢我们,这意味着他很少参与团队合作。
- Petya可能有朝一日会被烧死并辞职,甚至没有事先警告,我们的资源将会空洞。
- Petya在复杂项目中拥有最大的专业知识,现在剩下的每个人都将需要大量时间来了解Petit的项目。
看来您不应该这样做。 但是该怎么办?
首先,您需要选择几个组,通过这些组可以中断所有传入的任务。
对我们来说看起来像这样。
项目A,B和C不断产生数百项任务,并准备为我们提供来年的工作。 还有其他项目每几周执行一次或两项任务。 由于资源有限,我们同意一个人一直在从事项目A,B和C,第四个人承担其他项目的所有任务。 看来所有资源都是分布式的,您可以工作。
但是同样,当一个不断从事项目A的人不知道项目C中发生了什么时,我们又遇到了一个问题。
为了解决这个问题,我们引入了两周的值班时间。
从星期一到接下来的两周,Petya负责项目A,然后继续进行项目B,然后是C-因此他定期进行活动更改。
看起来像这样:
这给了我们什么? 首先,所有的人都精通所有项目,并且可以轻松地相互替换。 其次,还有更多有趣的项目,这是他们最喜欢的任务,它另外可以激励,给予力量并且不允许从同一工作中疲倦。
此外,为了取消人工法规,我们同意项目本身将工作置于优先地位。 也就是说,我们选出一个人,然后他执行项目所赋予的任务。 这非常方便:我们不需要优先考虑团队,也无需考虑订单顺序。 这是由项目,其团队和产品经理完成的。
没错,您可以找到问题所在。 一个人了解所有不定期出现的项目的任务-他不从事现任值班的任何重大项目。
看来他可能会受到任务的轰炸,并且客户将从各个方面被拉走,结果将被禁止工作。 为了消除这种风险,我们在特殊页面上设有此类任务。 当出现下一个任务时,它将添加到列表的末尾。
这是此类页面的示例:

所有任务及其状态均可见。 客户可以随时跟踪进度并了解大约何时可以执行任务。
当然,每个人都有最紧迫的任务,并且每个人都希望转弯。 尤其是在这种情况下,发明了以下机制:如果客户“着火了”,并且他想让自己的任务更快地工作,那么他必须与上面列出的人达成一致。 如果他准备出任自己的位置-没问题,请交换列表中的任务。
您可能认为这是一个比较薄弱的地方,应该使我们吃饱,但是六个月以来,它一直在起作用。
当然,情况可能有所不同,但是没有人取消手动法规和行政资源;)
质量控制
每个人都会犯错误。 我还没有看到一个从来没有错的开发人员或布局设计师。 如何将此类错误的数量降至最低?
为此,我们积极采用设计评审的做法。 它包括什么?
布局上的工作完成后,布局设计者会与设计者联系,并在屏幕上向他显示工作结果。 这使您可以立即解决几个问题:
- 如果不正确的内容渗入版面,设计人员可以尽快看到版面设计者的错误和自己的错误。
- 立即解决诸如“悬停或聚焦时应如何显示?”之类的问题。 当然,除非这些条件没有反映在设计中。
- 还有一个很大的附加优点:设计人员可以看到结果看起来不是最佳的,并且可以在线进行更改。
在实施这种做法的最开始,我们担心工作会因为以下原因而放慢:
- 设计者不到位;
- 设计师病了,没有其他人知道;
- 在审查过程中,设计师决定完全更改布局。
但是实际上,这种方法效果很好,并且我们已经在大多数项目中实施了该方法。
复习
我们很好地抽调了布局团队,您可以开始工作! 但是不,还有一件事。 我们采用了交叉审核的做法。
这意味着任何人都可以查看您的PR,并对它们发表评论。 只是,老实说,许多开发人员不喜欢钻研布局审查,而是愿意将“不看”向上—如果只有布局会尽快下降并且他们可以编写更多的逻辑。
为避免这种情况,我们有一条规则:每个布局设计器都必须将所有布局设计器添加到其所有池请求中。
如果您没有从其他排字机收到至少一份更新,则PR无法冻结。 不错,但是似乎存在大量PR形式的交通阻塞风险,因为员工可以不适当地查看同事的代码,这会减慢工作速度。
为了防止这种情况,我们提醒您有必要每天两次在10:00和15:00对同事进行一次审查。 当您藏起来时,您会看到有多少PR正在等待您的分析。

我们试图将这一数字保持在最低水平。 为此,我们还有一条很好的审查规则。 如果您仔细查看了PR,那么它就没有冲突,并且没有“正在运行”状态-这意味着您必须做出反应:“向上”或“正在修订”。 如果您发表评论,但未表明您的立场,则意味着您尚未完全观看PR。
另外,他们的游泳池要求还有其他个人责任。 这是什么意思?
您完成了布局,一切都按照布局进行,一切都很漂亮,但是没有功能。 而且也无法将此类产品投放到产品中。 因此,您无法冻结开发。 并且您有公开的PR,有aruvs,看来您已完成工作。 此外,开发人员走近您,并说:“让我们等几天,我将逻辑直接上传到您的分支机构中,然后立即使用该功能,而且它是可撤销的?”但是,没有! 因此它不起作用。 而且它不应该。
直到您的PR布局未终止之前,该工作才被视为完成。 在这种情况下该怎么办? 是的,这非常简单:开发人员创建了自己的分支,他打算在其中编写逻辑,并且我们模仿了他的分支中的布局。 获利
每个排字机都独立监视其PR-s,并处理以下情况:当无处可冻结,未收集构建时,企业决定推迟启动日期,依此类推。 直到PR死亡,他的工作才完成。
我们会不时安排电话调查:谁有多少个未公开PR,以及需要审查多少PR。 该数字始终小于10,我们力争使数字小于5。此类民意调查确认,聊天中的自动提醒仍在起作用,并且员工正在对此做出响应。
现在,人们感觉到工作做得非常好,您可以坐着,不断地研究任务如何从一种状态转移到另一种状态(顺便说一句,我们严格遵循此方法),但是开发呢? 排版表? 不知道网络不会停滞不前吗?
发展历程
为了使团队不仅在项目之间的专业知识方面而且在技能方面均得到发展,我们每周都有一项特殊的职责,称为“绿旗”。 如果本周您是一个危险的信号,那么您每天都会花时间寻找有关排版,方法或只是技术的有用信息,并在我们的私人聊天中添加指向文章的链接。 通常在早晨或午餐后立即进行。

信息是在您喜欢的资源上获取的,例如,在同一“哈布雷”上。 这非常方便,因为您知道您的同事每天都会在聊天中发送指向热门文章的链接,而您只需要在下班后的晚上阅读它。
值得一提的是:尽管每个人都支持这项活动,但许多人每天都忘记这样做。 因此,我们每周也引入另一项职责,旨在激发绿色信号,不要忘记我们的职责。 而且,如果您仍然忘记绿色标志,检查员可以放弃自己的信息。 有趣的是,但是这种方法可以正常工作,有时两个服务员都可以在聊天中添加有效性。
如果您担心值勤的次数,那么一切都还不错。 稳定一位员工有一项职责-这是他所从事的项目。 并定期添加第二只手表-绿旗或绿旗激励器-实际上,这只是一种形式。
总结
因此,我们只是从零开始收集了一个分散的,最重要的是一个工作的布局团队。 让我们记住是什么帮助了我们:
- 私人聊天使您可以快速解决所有新出现的问题。
- 日常交易可帮助您跟踪谁在做什么并了解全局。
- 固定的工作规则和严格遵守这些规则可以在所有项目中保持代码一致性。
- 两周的全天候轮班使您可以参与所有项目并提供公平的自动任务分配。
- 通过设计审查,您可以确定到达客户的结果的质量。
- 我们确保定期进行审查,并且未完成未完成的工作。
- 负责任的每天都会在聊天室中发布新文章以进行开发,讨论新的方法和做法,尝试并应用。
所有这些都帮助我们完成任务并提供整个单元的布局。 您的团队中有哪些活动?