开发人员Perekrestok.ru。我们的工作以及团队中寻找的人

今天,我们想谈谈在线超市Perekrestok.ru的IT团队中的招聘人员,以及我们的工作是如何“内部”安排的。零售业是一个具有自己有趣特征的行业,现在它取决于我们的工作,是否每天都会为成千上万的人提供产品。在这篇文章中,我们请团队负责人发言,他们讨论Perekrestok.ru的项​​目,工作方法,以及如何加入团队以及他们在面试中提出的要求。



谢尔盖// iOS-teamlead



我要说的一切都与我们在线超市的新应用程序的开发有关。我想立即指出,绝大多数开发人员都是从某种小型初创公司或总体而言从外包开始的。这有助于他们发展所谓的广度-毕竟,他们不断面临许多非常多样化的任务和广泛的技术。

我们有一个内部产品团队,我们在谈论“深入”的增长,因此,我们已经习惯了对此类专业增长感兴趣的那些人。

我们生产的产品可供成千上万的人使用-这里有足够多的不同用户故事和行为方案,因此对产品的要求非常严格。当然,针对此类情况的经典组合:可靠性,性能,可扩展性,模块化,可维护性和可测试性。

为了确保所有这些,我们以Uber-RIBs体系结构为基础,只保留了模块接口和完全重新设计的DI,并使用了DIP链接进行路由,并将单向数据流放在顶部。尽管飞行正常(有趣),但我们仍要完成。

该计划是要制作一个带有支架,Diplink和屏幕目录的高级调试屏幕,每一个屏幕都可以使您快速进入并更改moki或切换状态。是的,就在运行时。

为了加快工作速度,我们开发了自己的设计系统。我们非常注意UI的流畅操作。我们支持“黑暗”主题。

我们的团队以这样一种方式构建,即没有人从事完全狭focused的工作,他们说,Sasha负责此按钮,而Pasha只负责整个体系结构。实际上,这种情况使得每个人都在做所有事情,但要在预定的准则和模块模板的框架内进行,否则我们将陷入民主的无政府状态。

拉斯兰// Android-teamlead



关键的开发点之一是软件体系结构设计。在此阶段犯下的错误的代价正在成倍增长,因此我们的首要任务是软件灵活性,这使我们能够同时满足业务需求和用户需求。

我们坚持使用MVI方法,由于透明度和状态完整性,它使我们能够降低调试和测试的成本。事情很好,但有一个缺点:新员工的入职门槛非常高。因此,我们的目标是降低这一门槛。 “ 10分钟规则”对此有帮助,它指出我们必须在10分钟内向初学者解释所有方法。即使他从未遇到过单向数据流。

这有助于修改实现MVI的标准方法,并开发了我们自己的解决方案,结果更快,更重要的是更容易实现。

关于球队我能说些什么。这是一个关于“爱”的故事,关于一起工作,所以我们不能仅仅将一个人视为一组特定的能力。我们范式中的人是他对未来的职能,他可以成为我们团队中的人。

Jan // Innopolis团队负责人



到目前为止,我们拥有10名员工中最年轻的团队,自2019年12月以来我们一直参与该项目,我们位于Innopolis。我们有不同的任务,我们是事实上的跨职能团队,致力于B2B部门,后台和商店橱窗(前端)。

通常,在我们的团队创建之前,X5已经在Innopolis拥有一个办公室,大约在技术园区一层的三分之一处,但是来自其他网络的团队却坐在那里。今天的perekrestok.ru也在这里

,最值得注意的是(远离莫斯科的影响)团队参与项目的程度很低。首先,有必要在其团队中快速创建多个流程,同时将其与公司中普遍接受的流程联系起来。而且-称职的人员配置也可以提供帮助。

但是这里有一个包子,Innopolis的那个包子是一个IT城市,因此我们在人员方面没有任何问题,应聘者的人数不仅很大,而且素质很高。

我们从堆栈(我们拥有PHP,PostgeSQL,JS)开始寻找人才,而不仅仅是因为人们渴望单调地坐着工作,而是为了制作出好产品而对它感兴趣。理想情况下,具有自己的见解和表达各种问题观点的能力。

伊万//团队负责人项目整合团队



我们的团队已经存在了大约六个月,是开发人员(后端+前端),测试人员和团队负责人,现在我们已经达到了可以从头到尾解决所有任务的水平。尽管经验很短,但我们在业务任务和技术(与主窗口,系统之间的交互,API的组织,细分为微服务,优化,重构)方面都受到信任。我们正在寻找可以帮助我们解决新问题的人,他们不仅拥有必要的知识,技能和改进产品的愿望,而且会分享我们的工作方法。

有时,根据项目的不同,业务分析师(和系统分析师)也会相互联系。我们开发和实施与系统(内部和外部)交互以及用户体验变化相关的项目。

如果它是清晰的,我们做了opt.perekrestok.ru(一个平台企业的订单,因为从URL清晰),zoo.perekrestok.ru(一个单独的展示柜,您可以在其中为喜爱的野兽取食),介绍了一种选择类似产品的机制。而且,由于移动开发团队的支持,他们还提出了订购步行快递食品的应用程序。此外,我们简化了交付地址的选择(以前比较复杂,是的),将整体式工具锯成若干微服务,并显着简化了发布组装机制,该机制允许每周推出一个版本,而不是十个版本,我们尝试实现完全持续集成,因此这一过程成为永久和连续的。

现在,我们正忙于替换移动应用程序的API,并重新设计网站的某些页面,以进行重构。

亚历山大// //领队物流系统



我们正在朝着交付方向以及与此相关的一切工作。我们开发了一个Android应用程序,通过该应用程序,快递员可以运送和发送订单。由Kotlin和Java使用。这是与收银机和付款系统集成的主要任务。

我们的工作涉及快递应用程序,用户界面和订单路由-通常,有足够的任务,而且它们实际上是不同的。例如,对于快递应用程序,我们制作了REST API,现在正在进行操作以处理订单,付款,日志,路线维护和事件警报。用于物流和订单传递-与TMS(运输管理系统)系统集成,用于自动创建路线和分配订单,以及用于查看和管理地图上路线的界面工具,该系统用于对仓库中的订单(从手推车和行进到汽车)进行会计和运输信使。以及用于计算交付成本的业务逻辑的详细实现-它还取决于区域和特定时间段,以及将订单转到区域,已经有某种便宜的订单了所有这些都被考虑在内。

将来,我们将使用API​​来实现服务,以封装整个逻辑和交付操作,并将其从整体转移到微服务。想要与我们一起工作的人将需要对PHP,Laravel,PostgreSQL和(最好是)golang有良好的了解和理解。还将有用于处理地图和表格数据的界面任务,在这里,候选人将需要具有HTML,CSS,JS和某种Vla框架的良好知识。

我们计划编写用于处理统计数据和创建报告的新工具(postgreSQL,RabbitMQ,MongoDB,PHP),并与CAN BUS汽车总线集成,以获取和处理我们车队的技术参数和指标。

德米特里// Teamlead团队仓库系统



我的团队正在开发WMS(仓库管理系统)。在大多数情况下,这是PHP(Laravel)的后端开发,但我们也开始使用Go。
对于数据库,我们使用PostgreSQL。这是我们要解决的主要任务:

  • 仓库管理:对用品进行分类,将货物放入牢房,质量控制,注销等。
  • 订单处理:预订任务的预订,创建和任命,按任务选择货物。
  • 与BO(货物的订单和主数据)和X5 ERP系统(价格,交货,注销等)集成。为了与BO集成,我们使用RabbitMQ。
  • 我们正在为Android上的TSD开发应用程序。本地TSD应用程序在webview中打开一个用jQuery和kickout.js编写的一页应用程序。
  • 我们为仓库员工开发和维护运营报告。

// -



什么是网站开发团队?现在,这是后端和前端领域的两个专家团队,其任务是开发和支持主要站点perekrestok.ru及其所有内部业务流程,但不包括交付,仓库(WMS)和移动API(其他同事专注于此)。

我们是一支具有丰富经验和知识的专家团队:已经有一些领先的专家已经形成,而那些刚开始从事IT事业并从实习生成长为开发人员的人。我们在架构解决方案和交叉编码方面互相照顾。如果有任何疑问,我们不怕寻求同事的帮助。毕竟,我们尽力互相支持,并且我们知道,实现共同的目标,我们每个人在理解产品和成为技术专家方面都将变得更好。

我不禁为自己感到惊讶并为我们感到骄傲的是,团队中的动力非常强大:我们谁都不关心项目的命运。每个人都对将任务付诸生产感兴趣,并且会毫不犹豫地与PM和QA交流所有问题。

我们会定期审查路线图。这有助于我们更好地了解我们的发展方向,并专注于现在或将来会带来利润的任务。

罗曼(Roman)和西缅(Semyon)将向您详细介绍他们的球队。

罗马//团队负责营销和商务团队



我们的团队由团队负责人和后端开发人员组成。我们主要从事窗口www.perekrestok.ru后端部分,其后台(CRM / CMS)的开发,以及网站B2B版本opt.perekrestok.ru的开发

我们大多数团队都是跨职能的,因此任务位于不同的区域。它可以是:产品搜索,与内部和外部系统集成(支持B2B,我们的WMS,B2C和B2B忠诚度和支付系统的ERP,有关购买或更换商品的建议),营销活动的管理和计算,市场,电子邮件/短信通知,分析报告,数据供稿等。

以下内容可帮助我们解决大多数任务:现代PHP框架(Laravel,Symfony,Yii)方面的专业知识;手臂从肩膀长出;能够分析PHP和SQL查询的工作;了解同步和异步系统交互之间的区别;与同事分享知识的意愿。

我们足够大胆的刺猬,以免害怕数百行裸露的SQL(是的,有这样的事情)。有时,我们不得不怀着渺茫的希望走到遗留代码的底部,然后以成功重构的旗帜从遗留代码中回来。一旦我们将全文搜索索引的更新速度从1小时更新为365次至10秒。我们喜欢剖析和研究应用程序负载统计信息。而且我们了解到,迟早数据和用户的数量将超过临界值,并且我们希望微服务能够实现水平扩展并减少系统节点的强大连接性。

精液// Teamlead网站和店面



大家好!我是团队负责人,我会尽力介绍一下我们团队所从事的团队,任务和项目本身。

我们正在开展一个展示项目(perekrestok.ru网站),我们也将该项目称为“ FD”,即“前台”。用户(买方)所面对的只是FD:搜索,目录,订购,个人帐户,在线支付,各种库存机制,食谱,标语等。

该站点上有很多功能,我们会不断添加新功能并修改现有功能。我们拥有一支非常强大的产品和设计团队,他们可以监控趋势并为我们生成有趣的任务。除了开发新功能外,我们还进行重新设计,创建促销平台,优化和(当然)纠正错误,以及帮助其他团队审查其对展示项目的合并请求。

对于前端,我们选择了VueJS并已经使用了一年,我们正在为其上编写新的内容,并且正在逐步替换旧的代码。在后端,我们尝试摆脱使用Laravel标准的ActiveRecord模型,但对于CPU却过于渴望。自定义数据库查询和拒绝不必要的反射使生产率提高了一个数量级,这对“到第一个字节的时间”有积极影响。

现在,我们的团队正在研究一部史诗-这是对移动设备上的浏览器的完全重新设计的订购。我们与其他团队一起致力于优化和完善后端体系结构,以实现水平扩展的可能性。

在团队中,每个人都强烈参与该项目,当发生某种紧急情况时,每个可以联系以解决问题的人。

丹尼斯// Teamlead第三线支持



我领导第三线的技术支持团队,我们在这里招聘这些人员来完成快速解决产品问题的任务。如果该站点发生了问题,首先,该业务转到第一和第二行,然后,如果需要程序员的干预,他们会来找我们。我们的人员具有全面的能力-如何查看队列系统,分析JS,PHP中的错误,分析向第三方服务的数据传输。

在团队中,我们已经招募了全面发展的人,正如已经提到的,那些人非常耐压力,您必须根据紧迫性和优先级经常进行切换,这不应该太压力。好吧,您可以想象支持和压力在原则上是如何关联的。

从最简单的类型(“样式或笔画无法绘制”)到“促销代码不起作用”或已下达订单但仓库未收到订单的事实,可以尽可能地应对需要响应的错误。因此,您需要追溯历史,或者金额与最初的金额有所不同-您需要跟踪订单路径并准确了解问题出在何处以及什么阶段。

还有一些标准的东西,例如错误“ 500”或“ 404”“,您需要监视并响应它们。

除了抗压力之外,对于这样的人来说,重要的是,他们知道如何使用框架,同时他们了解如何工作和理解框架,以便他们可以阅读并编写精美的代码。为了能够分析信息,不仅要完成任务,还要考虑这将如何影响相邻的生态系统。

通常,第三条线的开发是团队核心,他们了解整个系统并了解一切工作原理,不仅查看他们的代码,而且了解可能在哪里发生错误。这样的人很快就成长为团队负责人;几年之内从大三成为领导者是很正常的。

Rinat // Innopolis的团队负责人开发团队



当我将人们聚集在团队中时,选择不是针对特定任务的。我将更多地关注每位专家的经验和技能。我相信团队中的每个成员都有自己的超能力,而解决团队中的常见问题时,最好能充分展现这些能力。这可以被认为是协同效应。

正是在Perekrestok.ru中,我实现了梦想-完全从头开始组建一支团队,并与每个人的技能保持平衡。结果表明,我们进展顺利,积极加入并帮助了莫斯科的主要团队。

如果您查看提出的每个参与者的要求,那么这是技术堆栈中的好知识。我欣赏一个人不仅可以在额头上完成任务,而且可以证明自己决定的利弊。我也欢迎人们对此进程抱有广阔的视野和参与。

我们在数据库上有很多工作,每天每段代码被调用数十万次。因此,选择团队时的强制性问题是对sql的深入了解,以及对编写复杂度最佳的代码的候选人的良好算法准备。

一个非常重要的要求是我们做出决定的责任。因为在零售中,错误的代价可能很高,每个人都应该了解这一点。

我们的项目正在积极开发中,每天我们都会打破出席人数和订单数量的记录。因此,我们在莫斯科和Innopolis都需要专家。该公司的计划宏伟,绝对不会令人厌烦。

顺便说一下,项目内部称为“ XO”。X-十字路口,O-在线。


All Articles