写点什么

在 Criteo 发展工程文化

  • 2017-04-12
  • 本文字数:1500 字

    阅读完需:约 5 分钟

高级管理层需要最优先考虑工程文化,并创造能支持搭建良好的工程文化的框架。我们需要价值观来推动文化发展,也需要能规范事情运作的规则来支持文化发展。

Criteo 的高级人员发展领导人 Manu Cupcic 在 QCon London 2017 大会上进行了有关 Criteo 发展工程文化内容的演说。InfoQ 通过问答、总结和文章的形式报道了这次大会。

Cupcic 认为,工程文化不仅仅只是一种价值观,它还应该包含可以约束我们如何完成事情的一系列规则。他是这样定义工程文化的:

做出分布式决定的过程。

我们要做很多决定,因此如何来做决定就非常重要。Cupcic 认为,自顶向下做出决定的惯例并不符合现在的情况。如今我们的产业变化很快,所以我们需要敏捷来帮助我们快速做出决定。

Criteo 的文化氛围非常轻松。在组织中没有负责发展文化的中心地带,但是有“框架”来“指导”如何发展文化。Cupcic 表示:“我们觉得从中心逐渐向外发展文化是没有用的,文化本身应该是分布式的。”

在 Criteo 有工程师和经理组成的智囊团,来自各方的新想法可以反馈在共鸣板上。智囊团每两周会面一次,任何人如果想参与讨论中来,仅需要预订好时间档就可以发表或讨论主题。Cupcic 解释说,工程师和经理将倾听、讨论并给出意见和反馈。他们也会建议发言人向组织中的一些特定人员谈论话题或听取一些建议。Cupcic 表示,发言人可以预订下次会议来讨论这一系列事情的进展,同时也能帮助想法逐渐变得成熟。

Criteo 还有由高层经理和关键人物组成的技术领袖小组。如果他们喜欢呈现给他们的想法,他们非常愿意帮助实现这些想法。

在 Criteo,有两个价值观帮助定义文化:授权(Empowerment)和实验(Experiment)。Cupcic 提出,这些价值观比上面提到的小组更重要。因为如果没有小组,文化依然可以发展,只是可能过程并不顺利,比如人们在尝试一些新想法的时候忘记要去咨询关键人物的建议,追究原因是因为没有专门的技术领袖小组来指导他们。但是如果没有了价值观,文化就不会发展,或不会向着正确的方向发展,因为没有人引导它向正确方向改变。

授权,即文化是每个人的责任。Cupcic 指出,没有授权,就不可能有分布式决定。他们会通过奖励机制鼓励员工的授权,比如说如果有人能解决问题,他们就能得到提升的机会。

实验的作用是在小范围内先进行尝试,并获得经验。Cupcic 表示,改变文化就是改变习惯。他建议不要太快推进实验,应该慢慢获取更多数据并尝试不同的方法。

Cupcic 举例介绍了 Criteo 的员工是如何提升工程文化的。“领航者”计划旨在通过分享最佳实践,让协作变得更加简单。在这个计划中,人们要去其他的团队分享自己的想法,还要收集其他团队的想法并带回自己的团队。

这个计划的想法在由工程师和经理组成的智囊团中进行过讨论,他们研究了如何更加简单地交换不同团队的员工,“领航者”计划通常需要进行多久等。技术领袖小组也研究过员工交换的规则定义。在两个小组研究讨论之后,领航者计划在“全体员工”会议上进行了介绍。

Cupcic 说,这个计划已然成为了 Criteo 文化的一部分。它帮助提升了灵活性,促进了移动性,并主张弱化“我们 vs 他们”的观点和行为。

Cupcic 认为文化实在是太重要了,所以我们不能听天由命,应该先做好准备。要建立良好的工程文化需要很多时间,因此越早开始越好。高级管理层需要最优先考虑工程文化,但他们不能亲自参与推进工程文化。Cupcic 认为高级管理层应该帮助创造能支持搭建良好的工程文化的框架。

查看英文原文 Evolving the Engineering Culture at Criteo


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-04-12 19:001140
用户头像

发布了 218 篇内容, 共 72.1 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

flask sqlalchemy使用简述

芥末拌个饭吧

sqlalchemy python 3.5+ 10月月更

读书笔记 | 你最终能走多远,取决于见识

宇宙之一粟

读书笔记 10月月更

【一Go到底】第十六天---跳转控制goto&return

指剑

Go golang 10月月更

Linux 中 Grep 命令的常见示例,非常全面!

wljslmz

Linux grep 10月月更

如何在 SAP BTP Java 应用里使用 SAP HANA 数据库

汪子熙

云原生 Cloud SAP 10月月更 btp

Go RPC入门指南:RPC的使用边界在哪里?如何实现跨语言调用?

王中阳Go

php Go RPC RPC框架 10月月更

跟着卷卷龙一起学Camera--双摄04

卷卷龙

ISP camera 10月月更

Python进阶(二十四)Python中函数的参数定义和可变参数

No Silver Bullet

Python 函数 可变参数 10月月更

PriorityQueue 源码解析(二)

知识浅谈

Priority Queue 10月月更

长安链源码分析之网络模块net-liquid(1)

长安链源码分析之网络模块 net-liquid(2)

STM32L0 系列 EEPROM 读写,程序卡死?

矜辰所致

EEPROM STM32L051 10月月更

「CSS畅想」有一天,我遇到了一个奇特的路灯,眼里一下子有了光

叶一一

CSS JavaScript 前端 10月月更

「趣学前端」玩转CSS的2D转换,也许能有个代码纸片人

叶一一

CSS 前端 10月月更

谈谈PHP switch case和其他语言的区别

芥末拌个饭吧

php Go 10月月更

2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。 你可以按 任意顺序 返回答案。 要求时间复杂度O(N)。 输入: nums = [1,1,1

福大大架构师每日一题

算法 rust 福大大

「趣学前端」开耍CSS的3D转换,不会玩滑板但能画滑板

叶一一

CSS 前端 10月月更

Python还不会用日志模块?本文给你答案

芥末拌个饭吧

python 3.5+ logging模块 10月月更

python程序能打包吗?看这篇就知道了

芥末拌个饭吧

python 3.5+ pyinstaller 10月月更

「CSS畅想」当我拥有了一个小夜灯,我的CSS副属性被激活了

叶一一

CSS JavaScript 前端 10月月更

跟着卷卷龙一起学Camera--双摄03

卷卷龙

ISP camera 10月月更

Goroutine是什么?进程、线程、协程又是什么?有什么区别和联系?

王中阳Go

Go 线程 进程 协程 10月月更

「趣学前端」提到布局,我第一个会想到的是flex

叶一一

CSS 前端 10月月更

Docker搭建私有镜像仓库与WordPress

okokabcd

Docker

TSDB在高速公路大数据平台的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

CorelDRAW 2019 软件应用项目(一)

张立梵

设计师 CorelDRAW 2022 10月月更

跟着卷卷龙一起学Camera--双摄05

卷卷龙

ISP camera 10月月更

【一Go到底】第十六天---函数

指剑

Go golang 10月月更

可能的二分法

掘金安东尼

算法 10月月更

【LeetCode】用栈操作构建数组Java题解

Albert

算法 LeetCode 10月月更

在Criteo发展工程文化_文化 & 方法_Ben Linders_InfoQ精选文章