Архив недели
Понедельник
Всем привет!
На этой неделе с вами Марина Звягина. Последние 1.5 года работаю в компании vivid.money в платформенной команде.
Буду рассказывать о том, как устроена работа в компании, расскажу про нашу iOS команду и поделюсь интересными кейсами из своих проектов.
Несколько фактов обо мне
- Родилась и выросла в Липецке;
- Жила 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" - строка вставится после курсора
- Вставка пустой строки после текущей. Достаточно просто нажать "o". Важный момент - буфер обмена не затирается
- Отмена последних действий. Здесь достаточно нажать клавишу "u". Команда пошагово отменяет все действия с открытия файла.
Тред #3
Вторник
Доброе утро)
Начнём день с факта о нашей команде
Факт №1
Ни одна iOS встреча не обходится без объедания вкусняшками
У нас есть еженедельные встречи, перед которыми мы запасаемся едой, будто пытаемся съесть сладкого на месяц вперёд, а ещё у нас есть ежедневные вечерние чаепития в 17, где мы просто болтаем 🙃
#WWDC21
Дождались 🎉
С iOS 15 можно будет настроить сепаратор для таблиц в SwiftUI!
Продолжу тему еды, это небольшая часть нашей ios команды на обеде
p.s. Мы только и делаем, что собираемся вместе поесть)
Как заставить всех разработчиков проходить design review.
Тут все довольно просто - дизайн ревью должен быть встроен в процесс таким образом, чтобы его нельзя было избежать.
Для нас было важно 2 пункта:
- Ревью не должно блочить релиз (явные несоответствия дизайну отсекались при тестировании, более детальный анализ для нас не был критичным);
- Задачи на дизайн и на правки по дизайн ревью должны заводиться автоматически.
Для управления проектами в vivid мы используем youtrack. У нас есть отдельные доски для мобильных разработчиков, бэкенд разработчиков, дизайнеров и так далее.
В youtrack есть возможность создавать кастомные workflow на js.
В итоге у нас получился следующий процесс:
ПО добавляет тег к задаче, для которой нужно дизайн ревью -> После того, как задача перешла из колонки Test в Staging(ожидание релиза) -> Создаётся задача на доске дизайнеров, к которой линкуется изначальная
-> После того, как дизайнер перевёл задачу в Done, на изначальной доске создаётся новая задача, в которую копируются все комментарии и файлы из задачи дизайнера
Это позволяет не забывать про дизайн ревью и учитывать все пожелания дизайнеров.
! В следующем твите будет сам скрипт и комментарии к нему
Тред #4
Среда
Привет всем!
Начнём день с разбора кода.
Скрипт для youtrack, который сейчас у нас используется для создания задач на доске разработчиков после того, как дизайнер переводит задачу в Done
#youtrack #js #automation
Факт №2
По выходным мы играем вместе в волейбол
Правда, как можно видеть из опросов, нам не всегда удаётся собраться)
Как заонбордить нового разработчика за 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/…
Пятница
Факт о команде № 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
Воскресенье
Всем хорошего воскресенья!
Надеюсь, сегодня вы также как и я отдыхаете)
Поделюсь своим секретом отдыха. Лучший отдых - спланированный отдых.
Я вообще всё люблю планировать, но раньше отдых оставляла без планов, в итоге ты вроде и поотдыхал, но толком и не понимаешь, что ты сделал полезного.
Вот такой у меня план на воскресенье:
💚Спать не меньше 10 часов
💚2 часа гулять в парке с собакой
💚Читать книгу за завтраком
🤍Поехать на 4е занятие в школе дрессировки собак в группе
Вообще по выходным стараюсь больше проводить времени на воздухе, общаться с друзьями и никуда не спешить
Тред #9