Марина Звягина

Марина Звягина

Неделя
Jun 7, 2021 → Jun 13, 2021
Темы

Архив недели

Понедельник


Всем привет! На этой неделе с вами Марина Звягина. Последние 1.5 года работаю в компании vivid.money в платформенной команде. Буду рассказывать о том, как устроена работа в компании, расскажу про нашу iOS команду и поделюсь интересными кейсами из своих проектов.

Несколько фактов обо мне
notion image

- Родилась и выросла в Липецке; - Жила 2 года рядом с космодромом Плесецк; - Закончила НИЯУ МИФИ, направление «Информатика и вычислительная техника»; - Работаю программистом уже более 6 лет, никогда не работала кем-то ещё;

- Всего работала в 5 разных компаниях от гос конторы, где средний возраст сотрудников лет 60, до стартапов с кучей плюшек и собственными бариста; - Люблю низкоуровневое программирование (писала на 5 различных языках ассемблера, столько я вспомнила 🤔, может их было больше);

- Ненавижу UI и вёрстку: прям совсем. И более того, на работе не помню, когда последний раз занималась визуальной составляющей приложения;

- Обожаю скрипты(ruby, bash, python - главное не делать ничего руками) и всё заменяю ими. Недавно подумала о покупке квартиры, так вот, у меня есть скрипт, который мониторил, свободны ли квартиры, которые мне нравятся;

- Ну и самый главный факт: у меня есть супер собака 🐶, её зовут Рей Скайуокер и она просто чудесная, я очень постараюсь не спамить её фотками.

Как-то так получилось, ещё стараюсь планировать, заниматься несколькими проектами сразу и всё успевать. Думаю как и всем это даётся мне с переменным успехом, нервным тиком и адскими недосыпами, но меня это пока не сильно напрягает.

В качестве компенсации отсыпаюсь по выходным, выключаю телефон на время отпуска и беру тренировки по фигурному катанию 2 раза в неделю.

🔥Тред #1
А здесь должен быть твит о том, что будем обсуждать. На самом деле не хочу выделять под каждую тему целый день и обсуждать что-то одно. Каждый день будут твиты на следующие темы:

- Полезные технические(околотехнические) штуки, с которыми я сталкивалась, и они могут быть полезны кому-то ещё;

- Интересные факты о моей команде в Vivid;

- Истории из жизни моих коллег (очень хочется, чтобы вы окунулись в атмосферу, в которой я работаю, потому что для меня мои коллеги как семья, настолько они все разные, интересные и душевные);

- WWDC - я планирую смотреть и конспектировать интересные для меня темы, особенно понравившиеся выложу в твиттер.

🔥Тред #2
3 полезных команды в Vim, которые упрощают мне жизнь. Я просто обожаю этот редактор, первые 2.5 года работы я программировала только в нём. Сейчас я его использую, чтобы быстро посмотреть и отредактировать небольшие файлы.
 Хочу поделиться с вами полезными для меня хоткеями.

p.s. Все команды работают только в английской раскладке; p.s.s. Все команды нужно выполнять, находясь в нормальном режиме (Это тот режим, в который попадаешь по умолчанию при открытии файла). В него можно вернуться, нажав Esc.

- Удаление строки: дважды нажать клавишу "d"; при этом строка окажется в буфере обмена, можно переместить курсор в другое место и нажать "p" - строка вставится после курсора
notion image

- Вставка пустой строки после текущей. Достаточно просто нажать "o". Важный момент - буфер обмена не затирается
notion image

- Отмена последних действий. Здесь достаточно нажать клавишу "u". Команда пошагово отменяет все действия с открытия файла.
notion image

🔥Тред #3

Вторник


Доброе утро) Начнём день с факта о нашей команде Факт №1 Ни одна iOS встреча не обходится без объедания вкусняшками

У нас есть еженедельные встречи, перед которыми мы запасаемся едой, будто пытаемся съесть сладкого на месяц вперёд, а ещё у нас есть ежедневные вечерние чаепития в 17, где мы просто болтаем 🙃

#WWDC21 Дождались 🎉 С iOS 15 можно будет настроить сепаратор для таблиц в SwiftUI!
notion image

Продолжу тему еды, это небольшая часть нашей ios команды на обеде p.s. Мы только и делаем, что собираемся вместе поесть)
notion image

Как заставить всех разработчиков проходить design review. Тут все довольно просто - дизайн ревью должен быть встроен в процесс таким образом, чтобы его нельзя было избежать.

Для нас было важно 2 пункта: - Ревью не должно блочить релиз (явные несоответствия дизайну отсекались при тестировании, более детальный анализ для нас не был критичным); - Задачи на дизайн и на правки по дизайн ревью должны заводиться автоматически.

Для управления проектами в vivid мы используем youtrack. У нас есть отдельные доски для мобильных разработчиков, бэкенд разработчиков, дизайнеров и так далее. В youtrack есть возможность создавать кастомные workflow на js.

В итоге у нас получился следующий процесс: ПО добавляет тег к задаче, для которой нужно дизайн ревью -> После того, как задача перешла из колонки Test в Staging(ожидание релиза) -> Создаётся задача на доске дизайнеров, к которой линкуется изначальная

-> После того, как дизайнер перевёл задачу в Done, на изначальной доске создаётся новая задача, в которую копируются все комментарии и файлы из задачи дизайнера

Это позволяет не забывать про дизайн ревью и учитывать все пожелания дизайнеров.

! В следующем твите будет сам скрипт и комментарии к нему

🔥Тред #4

Среда


Привет всем! Начнём день с разбора кода. Скрипт для youtrack, который сейчас у нас используется для создания задач на доске разработчиков после того, как дизайнер переводит задачу в Done #youtrack #js #automation
notion image

notion image

notion image

Факт №2 По выходным мы играем вместе в волейбол
notion image
notion image
notion image
notion image

Правда, как можно видеть из опросов, нам не всегда удаётся собраться)

Как заонбордить нового разработчика за 10 минут? У нас так и происходит. Всё, что нужно сделать разработчику, чтобы приступить к работе - скачать репозиторий и запустить скрипт. Внутри выкачиваются все необходимые для разработки инструменты, сертификаты, внешние зависимости

Вот что новый сотрудник видит в Notion: Initial setup Setup Xcode Install it Open it Set command line tools: Xcode → Preferences → Locations → Command Line Tools Install brew

Setup Gitlab https://urlToOurProject Sign in to GitLab using your work email Add SSH-key to GitLab Execute /usr/bin/ssh-add -K Setup environment Clone the repository Execute setup script from root folder

А сколько времени уходит у вас на то, чтобы настроить проект с 0?
🤔 32.2% 0-30 минут
🤔 16.9% 30-60 минут
🤔 50.8% > 60 минут

Четверг


Не Xcode'ом единым живет мир! Есть альтернативные системы сборки, которые также пригодятся и в iOS разработке. Например, Bazel. Его активно использует Telegram. Также Bazel умеет собирать Android и бэк. bazel.build

Ускорение билда проекта с помощью bazel: engineering.linecorp.com/en/blog/improv…

Мы любим новые интересные технологии, поэтому конечно решили попробовать Наш разработчик Слава Редькин собрал тестовый проект

Его впечатления: Как быстро удалось разобраться? - Долго, много недокументированных штук Насколько удобно собирать? - В итоге получается 1 команда Как думаешь, на сколько сложно было бы перевести наш проект? - Очень сложно, в Bazel нет поддержки SPM и xcframeworks

Как итог - технология интересная, в ней хочется разбираться, но пока она больше для энтузиастов

🔥Тред #5
Кстати, у нас есть статья на хабре с более подробным описанием процесса онбординга: habr.com/ru/company/viv…

🔥Тред #6
#WWDC21 Наконец-то! Теперь есть отдельный тип AttributedString с собственными атрибутами developer.apple.com/documentation/…
notion image

Пятница


Факт о команде № 3: Раз в пол года мы собираемся всей ios командой на неделю в офисе, каждый вечер пьём сидр, играем в настолки или ходим куда-нибудь. Это помогает лучше взаимодействовать, узнавать людей вживую, а ещё всегда появляется куча смешных историй)

Как найти работу своей мечты? Давайте разбираться. Чтобы попасть в компанию мечты, нужно определиться с тем, что делает привлекательной работу именно для вас.

Список того, что я обсуждаю на собеседовании: - Прошу рассказать подробнее про продукт и его ценность; - Какой состав команд, распределение ролей в команде; - В какую команду собеседуют меня; - Есть ли возможность принимать решения относительно продукта;

- Прошу рассказать про архитектуру проекта, стек технологий используемый в компании; - Процессы в компании: методологии разработки, общие встречи, командные встречи;

- Обязательный вопрос про бэкенд (есть ли разработчики внутри команды, если нет, как взаимодействие с ними происходит; насколько быстро внедряются новые фичи, доступность тестового окружения);

- Если собеседование в стартап спрашиваю про критерии успешности продукта и сроки для оценки, какие действия в случае провала, есть ли запасные идеи; - Блок вопросов про тестирование,что есть на проекте: unit тесты,ui тесты,интеграционные тесты;есть ли тестировщики, ручные/авто?

- Проводятся ли а/б тесты; - Проводятся ли UX тесты на реальных пользователях; - Насколько прозрачна аналитика, приводятся ли результаты, основные метрики, на которые ориентируемся (конверсия в заказ/заявку/число транзакций/средний чек - зависит от сферы деятельности компании);

- Составляется ли план развития сотрудников, какие критерии повышения в компании; - Тимбилдинги: есть ли они, проводятся ли на уровне компании или просто выделяется бюджет, отношение сотрудников к тимбилдингам;

- Средний возраст сотрудников (я люблю работать в молодых, дружных и весёлых коллективах); - Сроки релизов конкретных фич: кем устанавливаются, на основании чего? - Есть ли наставничество, в каком виде; - Какие ожидания от меня? Какой идеальный кандидат на эту позицию?

- Как давно разрабатывается проект? - Какие есть проблемы на проекте? Конечно, это не даёт 100% гарантии идеальности работы, но ответы на эти вопросы дают понимание о том, что меня ждёт.

🔥Тред #7
Факт о команде № 4: У нас есть свой Фреймворк для собеседований Мы долго и трепетно улучшали процесс собеседования, чтобы к нам попадали не просто лучшие разработчики, для нас важно, чтобы человек был частью команды Мы даже написали об этом статью habr.com/ru/company/viv…

Суббота


Всем хороших выходных! 🙃Самое время попробовать что-нибудь новое. Поэтому краткая инструкция, где и как можно отслеживать перфоманс приложения. В vivid.money мы используем следующую связку: Telegraf -> Prometheus -> Grafana #telegraf #docker #performance

В телеграф отправляем данные с мобильных устройств, у него достаточно много input и output плагинов, мы используем statsD формат, в нём есть возможность на уровне типа метрик определять: хотим мы аггрекировать данные или нет, есть теги и 95й процентиль

Теги удобно использовать для отслеживания изменений по версии приложения и по платформе 95й процентиль - 95% пользователей не превышает значение. Например: 95% времени авторизации = 2 секундам. Это означает, что у 95% пользователей время авторизации <= 2 секунд.

github.com/influxdata/tel… - основные input форматы telegraf

Prometheus используется в качестве бд, можно заменить например на influxDB Grafana - строит графики по данным из бд

Здесь есть Docker Image, который быстро развернуть и можно попробовать на своём ноуте github.com/samuelebistole…

Если вдруг захочется поэксперементировать, примеры отправки данных: statsD формат: echo "myapp:32|g" | nc -C -w 1 -u localhost 8125 echo "myapp:100|ms|#iOS|#ver,1.41" | nc -C -w 1 -u localhost 8125

json формат: curl -i -XPOST 'http://localhost:8080/telegraf' --data-binary '{"value1": 42, "value2": 42}' В json формате, ещё нужно подключить плагин github.com/influxdata/tel… в telegraf.conf

и добавить в команду запуска докера порт 8080 docker run --ulimit nofile=66000:66000-d --name docker-statsd-influxdb-grafana-p 3003:3003-p 3004:8888-p 8086:8086 \
 -p 8080:8080-p 8125:8125/udpsamuelebistoletti/docker-statsd-influxdb-grafana:latest

🔥Тред #8

Воскресенье


Всем хорошего воскресенья! Надеюсь, сегодня вы также как и я отдыхаете) Поделюсь своим секретом отдыха. Лучший отдых - спланированный отдых.
notion image

Я вообще всё люблю планировать, но раньше отдых оставляла без планов, в итоге ты вроде и поотдыхал, но толком и не понимаешь, что ты сделал полезного.

Вот такой у меня план на воскресенье: 💚Спать не меньше 10 часов 💚2 часа гулять в парке с собакой 💚Читать книгу за завтраком 🤍Поехать на 4е занятие в школе дрессировки собак в группе

Вообще по выходным стараюсь больше проводить времени на воздухе, общаться с друзьями и никуда не спешить

🔥Тред #9

Ссылки