
SKB Kontur是俄罗斯最大,最古老的IT公司之一。 到10月底,她已经30岁了,所有员工的总数已超过8000。
根据My Circle雇主评估服务收集的估计,2018年7月,Kontur与Yandex在重量级公司中
排名第一 。
“ Kontur”成立于叶卡捷琳堡,当时这座城市仍被称为斯维尔德洛夫斯克。 但是,IT和现在的IT是两个不同的领域。 一切都以光速发展;遗产和规模并不总是有助于竞争。
因此,我们试图找出哪个“ Kontur”实际上是古代恐龙或高科技公司,并与负责公司开发人员的亚历山大·古鲁贝夫(Alexander Golubev)进行了交谈。
亚历山大·古鲁贝夫(Alexander Golubev)SKB Kontur是做什么的?
-站在Kontur的发源地的Andrei Mikhailov说,这一切都始于出售薪金和劳务会计程序。 在90年代初,时间很艰难,在“电路”中他们做了不同的事情。 甚至出售设备和打印机。
然后将程序制作为台式机,并用C ++ Delphi编写,通常只满足一个特定客户的需求。 然后,当然,每个人都重写并转移到了网络上。 渐渐地,所有多余的东西都消失了,但是到目前为止,主要的事情仍然是-工资和会计软件。
没错,这只是方向之一。 我们生产适合所有业务需求的产品。 证书,工作流程,电子签名,报告。 产品太多,以至于计算出实际上有多少是一项艰巨的任务。 估计值的范围在30到60之间。由于存在问题,将什么作为一种产品考虑在内。
叶卡捷琳堡“轮廓”办公室“但是有任何机车产品吗?”很长一段时间是Kontur.Ekstern。 在2000年代初期,可以通过Internet提交纳税报告。 尽管没有人真正拥有互联网,但我们仍然在网上下注。 他们是对的:产品出手,公司开始迅速发展。
七年前,当我到达时,公司规模缩小了三倍。 现在大约有一千人从事发展。 然后有一个三百人。
-应对增长困难吗?为什么呢 现在增长仍在继续。 人员,产品和客户越来越多。 我们每年增长四分之一。 我们扩展流程,我们从闲置中拒绝,我们发明新的。 显然,我们正在某种程度上应对。
我们喜欢我们开发自己的产品。 团队中的人员-程序员,分析师,测试人员-都将产品视为自己的创意,提供想法和改进。 我们对与我们的主要工作无关的外部订单不感兴趣-这与Kontur无关。
关于技术和语言
-与大型企业一样,您可能仍然对代码的质量和清洁度有很高的要求。 因此开发人员没有工具崇拜吗?-当昨天或现在闪闪发光的学生进入公司时,他对特定语言有更多的承诺。 他尝试过,某种东西开始为他解决,他对此非常精神化。 当然,他想朝一个方向努力和发展。 真的很好
hackathon“轮廓”编程僵尸团队但是随着经验的增长,人们会理解语言是一种工具,并且可以更改工具。 您将开始使用算法,存储库,队列,协议,API来构建体系结构,而其中语言并不重要,而更高层次的事情则很重要。
因此,狂热地专注于一种语言的惯犯要少得多。
-我遇到了您的空缺要求,看来您真的在使用现有的一切。-是的,我们不只使用非常底层的东西。 在汇编程序中,他们不会写轮廓。
大多数服务器代码都是用C#编写的。 基础架构和某些产品中包含一些Java,Go和Node.js。 移动应用程序-在Kotlin,Swift和C#(Xamarin)上。 围绕数据科学的所有事情都是用Python和R编写的,没有它们就没有地方。 根据任务,我们使用适当的关系,文档,列或键值数据存储:MS SQL Server,MariaDB,PostgreSQL,MongoDB,Cassandra,ClickHouse,Redis,Kafka,HDFS。 我们还有自己的发展:例如,Kanso是具有二进制日志语义的分布式容错数据仓库(类似于Google GFS),Zebra是文档内存数据库,Echelon是分布式容错作业队列。 我们已经在生产中使用它们很多年了,也许有一天它们会以
开源形式出现。
我们使用带有Flow的TypeScript或JavaScript编写客户端代码。 主要框架是React,为此我们为前端
指南编写了一个
组件库 ,但在其他地方使用Angular。 但是要确定谁是赢家(TypeScript或JavaScript)尚不可能。 战斗还在继续。
-你觉得呢?-因为我来自后端,所以我倾向于TypeScript(尽管我当然在JS上写了很多东西,即使没有React也是如此)。 对于习惯于静态键入的人,TypeScript更熟悉。 无论如何,几乎所有用于前端或Node.js的代码都是用类型编写的。
2018年夏季Confur大师班-Contour开发人员内部会议但是总的来说,我对语言的态度不是宗教。 哪些工具更适合特定任务,应该使用那些工具。 我通常在Erlang上写过硕士学位。 2011年,当我来到Kontur时,甚至在Erlang上编写了一种产品。 但是当他的主要思想策划者离开时,寻找替代专家存在问题。 因此,重写为经过验证的C#。
“以及如何确定将使用哪种语言?”开发经理和团队负责人具有相当大的自由度;他们可以自由选择工具和技术。 但是由于产品并非一帆风顺,因此他们与“邻居”,经验更丰富的同事讨论选择方案,并查看他们是否可以找到专家。 有自由,但是我不能说我们每天都在尝试新的语言。 我们需要用于工业发展的成熟工具,以便以后我们可以开发和维护自己的产品。
我们有一个设计审查实践。 如果您要启动一个新项目或对当前项目进行认真的修改,请进行介绍并参加一个特殊社区的会议,酷炫的工程师会为您提供反馈。
当然,如果您确定没有人为您做出决定-将没有最后通and和禁令,它们不会夺走您的薪水。 但是,尽管如此,团队还是决定选择一项有争议的技术,但必须为风险做好准备。 该项目可能与基础架构的一部分不兼容,或者某些功能无法集成到其中,那么每个人都会感到非常痛苦。

通常,所有内容都会讨论。 一个月前,有个想法用F#编写新服务之一。 在这种情况下,我尝试进行对话,然后问:“为什么要使用F#? 您将在哪里找人?” 最后,他们说服了该人继续使用C#。 也就是说,说服-是的,要订购-否。
-您是否尝试过自己用F#写作?不,但是在这种讨论中我并不孤单。 我们有一个工程建议:七位很棒的工程师。 这些人是根据公司内的成功案例选出的。 他们在许多项目中都赢得了信誉。 他们还参与了开发部的开发项目(这是使大多数Contour开发人员团结在一起的部门)。
-您曾尝试收集此建议中的各种堆栈吗?多样性是一个好点,但不是我们的主要目标。 由于工程师很酷,所以他们有足够的视野。 他们用C#编写代码,但是理清Java问题不会成为问题。
理事会没有多元化,但不应认为所有讨论都在其中进行。 除了工程建议外,我们还有专业社区。 例如,前端有他们自己的领导者,他们自己的社区有很高的技能。 开发前端的决定由混合团队(包括工程委员会的代表)决定。
工具包
大多数团队将YouTrack用作任务跟踪器。 一些团队使用Trello和Jira。 我们用Visual Studio,Visual Studio Code,Rider,WebStorm等编写代码。 我们经常将JetBrains产品用于不同的任务。
我们将TeamCity用作CI系统,在自己的Houston系统或Kubernetes的控制下,通过Octopus将服务部署到私有云。 我们通过Graphite收集指标。 对于按指标的警报,我们使用Moira。 在ELK中收集,存储和查看日志。
日常通信转到Slack和Telegram。 有员工-自己的内部社交网络。 它发布有关产品,职位空缺,社交生活和体育赛事的新闻。 您可以在那里预定会议室并撰写文章。 这正在成为流行的沟通渠道。 在线上正在讨论越来越多的事情。
近年来,我们一直在GitHub上开发基础架构解决方案。 最著名的开源产品是
Moira的紧急通知系统,除我们以外,它还用于Avito和Yandex.Money。 最大的是
东方 。 这是用于在.NET平台上开发微服务的一组工具,该工具可帮助它们彼此通信并自动收集其日志,指标和分布式跟踪。
关于公司架构

最大的办公室“ Kontur”位于叶卡捷琳堡。 随着公司的成长,需要越来越多的员工,因此公司在不断扩大。 开发办公室已经在新西伯利亚,彼尔姆,伊热夫斯克,喀山,Innopolis,顿河畔罗斯托夫和圣彼得堡设有办事处。 此外,开设新办事处的举措通常来自员工本身。 几位很酷的工程师计划搬到圣彼得堡-然后我们在这个城市开设了一个办事处。
绝大多数员工都在办公室工作,但是由于可以在城市之间分配团队,因此Kontur今年决定开放招聘远程工人。 我们仍在学习如何以这种格式工作,并且有越来越多的此类员工。
“ Kontur”分为三个主要领域-产品开发,销售和客户服务,内部服务。 在拥有近万名员工的公司中,关系是尽可能水平地建立的:我们正在积极努力维护员工之间的旧关系和新关系的出现。
产品团队聘用了不同专业的员工:程序员,测试人员,分析师,界面设计师,营销人员,专家,经理……一个团队可以看到新的初创公司,成长的产品通常分为几种服务并由几个子命令来开发。
团队是独立自主的:领导者尽量不要以不必要的指示,官僚作风和规矩来干扰他们。
团队的领导者角色不同。 Timlids负责开发质量。 开发经理(通常是前工程师)负责构建产品创建过程。 项目经理不仅从事开发,而且还从事销售,促销,市场营销以及与合作伙伴的沟通。 仍然有产品线经理。 他们决定发布新产品或扩展旧产品。
关于招聘
-很难找到你吗?-困难,但可能。 例如,有一个大型的学生实习系统,现在全年开放。 例如,今年夏天,有140名学生被实习,大部分留在了公司。
“我听说过你的面试官行会。” 告诉我这是什么?这些是聘用程序员的各个专业的工程师。 例如,对于后端开发人员,他们分三个或四个阶段进行技术面试:他们测试编写有效代码的能力; 使用算法和数据结构的能力; 创建架构的能力。 中级和高级用户也在测试他们在技术上的视野。
该行会现在包括大约90个开发人员。 要到达那里,您需要选择要执行的阶段(代码,算法,体系结构),并以“从属”身份进行几次采访(通常由一对“领导”和“从属”工程师进行采访)。 通过此选择后,一个人就会落入面试官行会的行列。
如果每个参与者每周进行一次访谈,我们认为这是正常的。 这样人们就可以完成工作并为雇用程序员做出贡献。
行会评估候选人的技术水平,并将报告转发给我或我的代表。 我们进行最后的面试,检查更多可能的软技能,一个人对工作价值的重要性,他能从错误中反映多少。
夏季黑客马拉松海报节-这样的系统是否使流程更快?当然,它变得更快,更容易理解。 以前,存在以评分形式列出的团队优先级列表。 艾哈尔(Eichar)走了下来,然后将队伍提供给了候选人。 结果,一个团队可以与他交谈并拒绝,另一个团队可以交谈并拒绝第三者。 无法理解一个人会进行多少次采访。 技术技能的评估也很模糊-团队关注各种事情。
现在,一个人经历了四个阶段,并进行了四十分钟的最后面试。 十分钟后,我们已经提出要约或拒绝。
持续三天,最多四天。 以前,期望是两到三周。
-您是否在各个方向拨打相同的电话?不,所有这些阶段都主要与后端支持者有关-磨刀者和激战者。 对于前端招标,这些阶段分为一个大的采访。
总的来说,这不仅对我们的人类技术很重要。 当然,有一定的界限,是技术上的最低限度。 但更重要的是,一个人是否能够适应和发展。 从某种意义上说,我们的开发商具有发展的狂热。
没有双眼,没有发展欲望的人不适合我们。 即使我们接受这样的人,很可能我们也不会一起工作。
-新人来了。 接下来是什么?他们最终在Butcamp并在那里进行了适应。 Bootkamp由两部分组成。 第一阶段-培训-持续两周:为期三天,全面了解“ Kontur”,包括产品和营业时间-咖啡厅在哪里,会议室在哪里,沉浸在文化,传统,假期中; 又半个星期来熟悉技术和工具。 例如,开发人员重复执行干净的代码,异常处理,使用功能编程元素,测试以及TDD,SOLID,DI。 他们研究如何安排基础结构和公共服务,以便与其他开发人员说相同的语言。
办公室站立除了培训,初学者还与团队负责人和开发经理进行沟通。 Timlids和经理可以自行开始交流,因为这是开放信息,是下一组附带的信息。 Butcamp的注册每三周发生一次。
结果,在这两个星期中,候选人将确定他将去哪支球队进行实习。
实习已经是第二阶段。 在试用期内,一个人可以访问多个实习岗位。 平均来说,一个团队有3周,大约3周。 或者,他可以立即选择一个团队并留在其中。
-关于首都,叶卡捷琳堡是一个小城市。 琼斯(Jones)来之前还没来得及搬走,西尼奥尔人(Siniors)离开去了阳光普照的国家?-是的,人们不仅要来,还要离开。 Kontur在教育方面投入了大量资金,但它绝不会束缚人们,也不会强迫他们签订任何义务的合同。 当然,当人们离开时,我们很难过,但几乎总是保持联系。
有很酷的工程师退出Contour,现在在Facebook,Amazon和Google上工作。
当然,要保留它们,厨房里没有足够的东西和更多的薪水。 需要突破性的任务。 我们有大型,高负荷的系统,复杂的产品任务以及重要的开源项目。
我们监控市场并支付相应的薪水,这样就不会出现有人提出有竞争性要约的情况,并且我们开始像锅里的蛇一样旋转。
关于员工的内部盗窃
“轮廓”中的工作区当启动新项目时,我们首先开始寻找内部人员。 内部招聘通常在幕后进行。 一位经理来找我,要求他在团队中找到一个不在他那里的人。 碰巧他们来到Kontur成为整个团队的定居者,他们说:“我们想为您工作。” 然后,我朝指示的方向说:“发现积压的产品,获得延迟的产品-整个团队已经出现。”
但是总的来说,团队之间过渡的话题对Contour来说有点痛苦。 这是因为它们在很大程度上彼此独立,而且工作人员也被独立征聘。 当然,有时会发生员工未经事先同意而突然移动的情况。 不同的领导人对此有不同的态度。
有人很镇定-毕竟,一个人继续使公司受益。 有人更嫉妒,他说:“车队处境艰难,但我仍然被人们带走。” 有人说:“我不反对奉献,但我首先会和我说话。 无需直接去找员工说服。”
关于水平移动性的讨论已经进行了很多年,观点各不相同。 每个人都可以理解。 我本人认为,在公司内部为某人提供东西比在外面放松要好。
公司内部有很多机会。 例如,一位产品分析师,一名受过教育的心理学家,看到了在Kontur内部从事专业工作的机会:现在,我们有一名专职心理学家,向其他人讲述如何改变他的工作。
但是,这个问题当然是一个微妙的问题。
如何应对倦怠
能源转型-Hackathon 2018-您经常面对员工的精疲力尽吗?我不会经常这样说,但是我遇到了。 我们试图帮助自己。 我们提供了在项目之间切换,改变角色,职责的机会。 您可以与同一位专职心理学家会面或拜访Skype:他会建议如何做。
, . , , . — .
— ?, . , . .
, . , , , .
, . — , . , — , , , . , , , .
, , , , . , , . , — , - .
.

, , . , . , , . .
, , , .
— ? , -?, . - , .
, . , . , .
— , . — , . , . . , , , . , - , .
— «» , ?
, . . , . .
— « », — , -. , , ICFP Contest. , . , .
, , , . , «» . , .
— - ?? , . Bentley , , . , , , . «» , . - , , — , .
— ?, . — . , .
. , . data science , . , . .
— «» , ?, , , . . !
— , ?— , , - , . , .
, .