早在2000年,当时hh.ru很小,被人们亲切地称为“国家职业俱乐部”,只有3%的俄罗斯人可以访问Internet,我们当然没有移动开发。 当时的智能手机只是遥不可及的梦想。 多年过去了,技术并没有停滞不前,HeadHunter不断发展壮大。 我们一直试图走在最前沿,并在开发过程中使用最新的方法和解决方案。

如今,hh.ru不仅仅是一个拥有职位空缺和履历表的网站。 我们创建和使用顶级技术,在人力资源技术领域开发出色的项目,并尽最大努力简化数百万人的生活。 为此,我们只需要高科技的移动应用程序,而hh中有四个。 两个在Android上,两个在iOS上,分别针对雇主和求职者。 移动开发人员是我们时代的超级英雄,也是技术的骑兵。 本文将告诉(并展示)移动团队成员的生活和工作方式。

#workday
对我们来说,重要的是要努力工作。 因此,我们使用有效的开发管理方法,为每位员工提供最新的设备,并创建最方便的工作区。
我们如何工作?
我们遵循敏捷和看板的原则:我们没有严格的期限,开发本身以连续不断的方式呈现。 这使我们能够显着提高生产率:例如,当我们使用Scrum时,每月发布一次,并过渡到每周一次的新模型。 我们非常重视常规流程的自动化,我们不喜欢多余的身体运动。
每个团队将30%的时间花费在“技术税”上-加快开发流程,删除旧代码并引进新技术。 每位员工都有自己的发展计划,技能表和持续的团队支持。 我们每个人都可以分享我们的印象,想法并发表评论。 新功能的开发已经在早期阶段进行了讨论,开发人员自己决定将是什么。 该功能的生命周期包括五个阶段:构思,计划,开发,演示和反馈。 在开发过程中,我们使用Slack作为主要的沟通手段,Jira帮助控制任务,并且为了清晰显示我们有看板。

每天早上,我们都会举行站立式演讲(阅读:计划会议),在其中分析和讨论重要主题。 如有必要,您可以随时预约与团队分享想法,寻求解决问题的帮助并获得支持。 在最初的几个月中,为新移民分配了一个老师,这有助于他们习惯和了解工作流程的细节。
我们正在做什么?
iOS:对于iOS平台,我们已经开发并正在不断改进两个应用程序:对于申请人和雇主,将通用组件分配给框架。 75%的代码是用Swift编写的,而25%的代码是用Objective-C编写的。 自2016年以来,仅以Swift语言和VIPER架构编写了新功能。 在服务层,我们坚持使用SOA方法。 我们遵循SOLID的原则,我们编写单元测试。 两种语言都有代码样式,我们在工作中使用静态分析器和linter。 对每个请求池进行测试和检查,并通过CI服务器+快速通道自动进行应用程序的组装和布局。 与QA合作,我们使用XCUITest编写UI测试。 我们使用代码生成,Xcode的模板。
Android:为此平台还开发了两个应用程序。 在过去的两年中,已经用Kotlin语言进行了开发,其中70%以上的代码都用Kotlin语言编写。 Android开发团队使用最先进的技术堆栈,该堆栈会定期进行强制改进。 现在已成为RxJava 2,Toothpick,Moxy和Cicerone的引擎盖。 在应用程序开发中,我们始终使用多模块架构。 这些模块是根据Clean Architecture和SOLID的原理实施的。 为了方便起见,因此,我们尝试尽可能地使流程自动化,编写和使用模板,用于代码生成的插件并应用到我们的工作中,UI测试几乎涵盖了所有主要脚本。 在编写它们时,我们使用高级框架Kakao,Kaspresso和DSL进行灯具设计(
此处有更多详细信息)。 使用Marathon在Kubernetes集群中的模拟器上运行测试。 已经为应用程序开发了独特的样式指南。
测试:每个团队都是跨职能的,并且从构思到发布都致力于该项目。 我们的测试人员在团队内部合作,并从开发的最初阶段一直到生产发布,一直参与功能方面的工作。 到目前为止,可惜的是,并不是整个测试过程都已实现自动化,但是我们正在为此努力:不久的将来的计划将包括自动测试的全面覆盖。
在研究功能或错误修复时,我们使用探索性测试以及测试人员确定的回归量。 根据任务,专家可以选择测试所需的方法和工具。 统计数据和分析事件也很方便-测试人员可以在测试平台上完全访问应用程序和代码库。
我们在哪里工作?
hh.ru办公室位于莫斯科,在Alekseevskaya和VDNH地铁站之间。 童年时代的许多人都梦想着进入外太空,而梦想部分实现了。在我们的办公室中,有5层分区的开放空间。 移动开发团队是技术部门的一部分,该部门占据了整个楼层。
开发分为23个团队,其中4个仅处理移动应用程序。 今天的hh Mobile拥有25架战斗机,到今年年底,我们计划将人员扩大到35名左右。每个团队都有一个内部客户-产品负责人,其任务是确保没有一个项目而不会感到无聊。 同时,如果事实很有趣,我们准备对员工实施任何想法。
我们没有发现任何障碍:团队坐在一起-讨论和讨论新出现的问题更加方便。

宽阔的开放空间通过架子和书本与植物的架子划分为命令区域。 如果愿意,您可以藏在棕榈树后面。

我们尝试始终保持相同的波长。 在我们的平房里,每个人都有一块木板。

每层楼都有一个安静的港口,里面有新鲜的水果,蔬菜,饼干,茶和咖啡-厨房。 在那儿,您可以用咖啡机犯罪,随意取食物,然后自己榨鲜榨果汁。 当您咀嚼饼干或破坏香蕉时,您可以与同事聊天-我们喜欢聊天。

兰波沃!

生态很重要。 我们追求环保,因此,我们支持并倡导有益的举措:我们收集“好瓶盖”(从瓶子中),“好东西”,废纸,电器,电池和塑料进行回收,我们还使用回收纸杯。

一楼有一间体育馆,因为众所周知,体育是和平的,我们是非常和平的人。 在DOOM的加载屏幕上显示:“不断移动,地狱吞噬了那些闲散的人”。 我们要搬到这里:

工作空间
增长是不可避免的,更多的人=更多的机会,因此我们尝试调整每个人的工作空间,以使每个人都感到愉快。 我们进行了一项调查,结果确定了2组-开放空间的拥护者和孤独的拥护者。 根据结果,我们修复了所有楼层:一方面,我们将这些空间合并在一起;另一方面,我们设置了电话交谈用的摊位,配有软椅的会议室用于团队会议以及处理需要最大程度地集中注意力的复杂任务。
行动小组的工作场所非常简约,因此每个人都可以根据自己的喜好进行布置-放照片或贴纸,然后从家里拖着吉他和喜欢的玩具。 工作空间区域使您可以幻想并尝试设计。 如果桌上的混乱根本不是一团糟,那就是一个实验。 每个团队成员都具有:
- MacBook Pro,其他显示器,其他笔记本电脑充电

- 令人惊叹的Herman Miller Aeron椅子,听话并能对座位的弯曲做出反应(就像House博士一样!)

- Kinnarps和Soft效果转换表,高度可调。 通过轻松的移动,办公室桌子变成了优雅的吧台。

为了控制应用程序在所有可能的移动设备上的有效性,我们创建了一个时尚的宝物箱:最流行的iOS和Android设备存储在该处,还有几个过时的模型。 这是一个非常精巧的柜子:每天早晨,他为所有智能手机和平板电脑充电,几天一次,他用紫外线布置末端,破坏微生物。
如果需要测试应用程序或单个功能,则可以从架子上取出必要的神童,然后将其放回原处。

我们工作多少?
在hh.ru中,有一个8小时工作日和一个免费小时,任何人都可以随意花费。 我们很灵活,对我们来说最主要的是结果。 为了跟上趋势并保持沟通交流,您需要跟上早上起床,并在12:00至18:00到办公室。 在不同的团队中,站立时间通常在10:30至12:30之间的不同时间开始。 在极端情况下,您始终可以通过VPN进行远程工作。

我们如何放松?
谁知道如何很好地放松,那很好。 而且我们专业休息:我们在乒乓球,赛艇,足球中举行公司比赛,下班后我们将看电影。 我们拥有自己的演讲者俱乐部,每个人都可以练习他们的演讲(不需要满口的石头),一个令人惊叹的按摩室,并且每周两次举行瑜伽课。 我们还组织很酷的活动。 好了,有些同事甚至一起去度假!
这就是我们征服卡兹别克的方式:



我们如何学习?
我们一直在寻找新知识,彼此分享并安排内部会议,任何人都可以讨论与工作有关的任何话题。
在任何无法理解的情况下,我们都会将开发人员送至会议-听,聊天,分享经验。 如果您想发言,我们会帮助您进行准备,运行和演示。
还有更多! 每年我们都会开设一个编程学院-这是为期六个月的编程和相关主题培训。 我们的顶级专家在那里演讲,还为学校的讲师和会议上的演讲者举办演讲讲习班和培训。
团队的一部分,船的一部分
我们正在积极发展,我们的国家正在涌现新的机动部队,因此我们正在不断寻找新的战斗机!
在链接上查看当前的空缺。
我们真的很高兴为专家降温。 分享信息,推荐我们,然后自己来。