Акторы
В Aviasales очень много бекендов написано на Elixir, в этом языке принято писать приложения основанные на акторной модели. Чтобы лучше понимать о чем говорят коллеги, я решил разобраться в ней получше.
Делаю пет-проект, намеренно переусложняя архитектуру акторами, читатю статьи, смотрю доклады. Вот парочка прямо хороших:
+ Моя жизнь с актерами
+ Написание масштабируемых и временами распределённых систем
#проектирование
В Aviasales очень много бекендов написано на Elixir, в этом языке принято писать приложения основанные на акторной модели. Чтобы лучше понимать о чем говорят коллеги, я решил разобраться в ней получше.
Делаю пет-проект, намеренно переусложняя архитектуру акторами, читатю статьи, смотрю доклады. Вот парочка прямо хороших:
+ Моя жизнь с актерами
+ Написание масштабируемых и временами распределённых систем
#проектирование
Forwarded from FEDOR BORSHEV
«Ты сделал говно»
Во всех коллективах, где я работал, самой большой ценностью для меня было услышать эту фразу. Не пассивное неодобрение, не мягкую критику, а именно «ты сделал говно». Неважно — про код, тексты, письма клиентам или результаты переговоров.
«Ты сделал говно» — это же самая обычная обратная связь. Когда коллектив видит говно, но не кричит о нём, его участники как бы соглашаются: да, у нас можно делать говно, и мы никого не будем учить делать неговно, пусть сами разбираются.
Представьте, если первоклассник принёс учителю решение, что 2 x 2 = 3, а учитель в ответ выражает просто мягкое неодобрение, но не говорит, что правильно будет 4? Математика никогда не откроется ребёнку как точная наука, скорее ощущение будет «ну, я что-то делаю, что-то, наверное, получается».
Когда я нанимаю людей, при первом же удобном случае провожу их через ситуацию «ты сделал говно»: ловлю на ошибке и подробно и спокойно разбираю её. Если новый сотрудник воспринимает такой разбор с благодарностью, значит, наши ценности совпадают и мы, скорее всего, сработаемся. Если злится, закрывается или доказывает мне, что никакой ошибки на самом деле не было, — вряд ли.
Важно — именно «ты сделал говно», а не «ты — мудак». Критиковать можно только работу, но не личность.
Во всех коллективах, где я работал, самой большой ценностью для меня было услышать эту фразу. Не пассивное неодобрение, не мягкую критику, а именно «ты сделал говно». Неважно — про код, тексты, письма клиентам или результаты переговоров.
«Ты сделал говно» — это же самая обычная обратная связь. Когда коллектив видит говно, но не кричит о нём, его участники как бы соглашаются: да, у нас можно делать говно, и мы никого не будем учить делать неговно, пусть сами разбираются.
Представьте, если первоклассник принёс учителю решение, что 2 x 2 = 3, а учитель в ответ выражает просто мягкое неодобрение, но не говорит, что правильно будет 4? Математика никогда не откроется ребёнку как точная наука, скорее ощущение будет «ну, я что-то делаю, что-то, наверное, получается».
Когда я нанимаю людей, при первом же удобном случае провожу их через ситуацию «ты сделал говно»: ловлю на ошибке и подробно и спокойно разбираю её. Если новый сотрудник воспринимает такой разбор с благодарностью, значит, наши ценности совпадают и мы, скорее всего, сработаемся. Если злится, закрывается или доказывает мне, что никакой ошибки на самом деле не было, — вряд ли.
Важно — именно «ты сделал говно», а не «ты — мудак». Критиковать можно только работу, но не личность.
Напомню, я работаю в команде веб-платформы. Мы обычно не решаем продуктовые задачи, а готовим инфраструктуру для других фронтендеров.
Где-то в конце лета мы внутри команды обнаружили, что не понимаем куда движемся. Краткосрочные цели понятны, а вот чего хотим добиться через три месяца, через год — не ясно.
Мы сели и усиленно подумали 🤣 результатом стали некоторые глобальные цели команды, и небольшие «проекты» которые соответствуют этим целям.
На этой неделе расскажу подробнее 😌
Где-то в конце лета мы внутри команды обнаружили, что не понимаем куда движемся. Краткосрочные цели понятны, а вот чего хотим добиться через три месяца, через год — не ясно.
Мы сели и усиленно подумали 🤣 результатом стали некоторые глобальные цели команды, и небольшие «проекты» которые соответствуют этим целям.
На этой неделе расскажу подробнее 😌
Цели мы сформулировали в формате «мы верим, что так должно быть».
Первое — легаси должно депрекейтится или переписываться. Это не значит, что мы постоянно переписываем все на свете. Нет, продукт может жить много лет — он меняется, развивается, рефакторится.
Но есть участки кода, которые совсем устарели. Например, у нас осталось немного кода на CoffeeScript. Поддерживать и развивать это нет никаких сил — мы считаем это легаси и при первой возможности выкидываем или переписываем.
В эту категорию могут попасть не только кусочки кода, но и целые продукты. Например, «Карта низких цен» устарела и технически и продуктово. Сейчас она законсервирована — не развивается, не поддерживается, просто доживает свой срок.
#кейс
Первое — легаси должно депрекейтится или переписываться. Это не значит, что мы постоянно переписываем все на свете. Нет, продукт может жить много лет — он меняется, развивается, рефакторится.
Но есть участки кода, которые совсем устарели. Например, у нас осталось немного кода на CoffeeScript. Поддерживать и развивать это нет никаких сил — мы считаем это легаси и при первой возможности выкидываем или переписываем.
В эту категорию могут попасть не только кусочки кода, но и целые продукты. Например, «Карта низких цен» устарела и технически и продуктово. Сейчас она законсервирована — не развивается, не поддерживается, просто доживает свой срок.
#кейс
Случилось удивительное — я завел англоязычный твиттер
https://twitter.com/kamyshev_dev
Вдруг вам очень хочется читать мои твиты на английском 💁♂️
https://twitter.com/kamyshev_dev
Вдруг вам очень хочется читать мои твиты на английском 💁♂️
Twitter
Igor Kamyshev (@kamyshev_dev) | Twitter
The latest Tweets from Igor Kamyshev (@kamyshev_dev). Software Engineer at https://t.co/W7bZa44Zn7
ru @kamyshev_code. Phuket 🇹🇭
ru @kamyshev_code. Phuket 🇹🇭
Другая наша цель — консистентность нового кода и архитектуры. Это нужно, чтобы снизить фактор автобуса в командах, упростить кросс-командные код-ревью, уменьшить время на адаптацию новых специалистов и в целом ускорить разработку. Превратить эту цель в проект сложно.
Мы пишем новый код в новом месте, и контролируем консистентность подходов автоматическими проверками — пишем кастомные правила для линтеров, которые проверяют, что все пользуются платформой одинаково.
С другой стороны, мы движемся к этой задаче со стороны процессов. Раз в две недели собираем всех фронтендров на часовой синк, где рассказываем о новостях и решениях. Примерно раз в пару месяцев собираемся на внутренний фронтендовый митап.
#кейс
Мы пишем новый код в новом месте, и контролируем консистентность подходов автоматическими проверками — пишем кастомные правила для линтеров, которые проверяют, что все пользуются платформой одинаково.
С другой стороны, мы движемся к этой задаче со стороны процессов. Раз в две недели собираем всех фронтендров на часовой синк, где рассказываем о новостях и решениях. Примерно раз в пару месяцев собираемся на внутренний фронтендовый митап.
#кейс
Третья цель — удачные технические решения переиспользуются. Тут все просто — писать что-то еще раз всегда (почти) дольше и дороже, чем взять готовое.
Мы делаем кучу внутренних библиотек: UI-кит, штука для работы с аналитическими событиями, небольшая тулза для работы с куками и несколько других. В них сконцентрирован не только код, но и подходы, которые мы рекомендуем использовать продуктовым командам.
А почти весь новый код продуктовые команды пишут в репозитории, где уже есть инфраструктура для его создания. То есть, если одна из команд хочет сделать виджет, который должен рендерится на сервере, они просто берут готовую инструкцию и из хелперов собирают себе SSR.
#кейс
Мы делаем кучу внутренних библиотек: UI-кит, штука для работы с аналитическими событиями, небольшая тулза для работы с куками и несколько других. В них сконцентрирован не только код, но и подходы, которые мы рекомендуем использовать продуктовым командам.
А почти весь новый код продуктовые команды пишут в репозитории, где уже есть инфраструктура для его создания. То есть, если одна из команд хочет сделать виджет, который должен рендерится на сервере, они просто берут готовую инструкцию и из хелперов собирают себе SSR.
#кейс
Ноябрьский выпуск подкаста!
Полина Гавра — самая главная по HR в лучшей компании на свете. Я никогда не встречал такой крутой HR-команды, как в Aviasales и очень хотел узнать как это работает. Мы поговорили про зарплаты, бенефиты, найм, увольнения, внутреннее устройство HR-департамента и как заставить высокомерных разработчиков тебя уважать.
Слушайте, пишите фидбеки 💙
Полина Гавра — самая главная по HR в лучшей компании на свете. Я никогда не встречал такой крутой HR-команды, как в Aviasales и очень хотел узнать как это работает. Мы поговорили про зарплаты, бенефиты, найм, увольнения, внутреннее устройство HR-департамента и как заставить высокомерных разработчиков тебя уважать.
Слушайте, пишите фидбеки 💙
О, там к посту кнопка комментов не приложилась, вот тут будет👇
Пишите фидбеки 💙
Пишите фидбеки 💙
kamyshev.code pinned «Ноябрьский выпуск подкаста! Полина Гавра — самая главная по HR в лучшей компании на свете. Я никогда не встречал такой крутой HR-команды, как в Aviasales и очень хотел узнать как это работает. Мы поговорили про зарплаты, бенефиты, найм, увольнения, внутреннее…»
Астрологи объявили неделю подкастов 🤣
Сходил поговрить истории про собеседования 👇
Сходил поговрить истории про собеседования 👇
Forwarded from Пять Франков
🎧 Подкаст #105
👨💻 Игорь Камышев — ведущий телеграм-канала @kamyshev_code, где он делится интересными заметками об архитектуре и коде — рассказывает, как попал в Aviasales и выработал иммунитет к собеседованиям.
Таймкоды
- [00:19] О себе
- [00:51] Путь в Aviasales
- [02:18] Другие собеседования
- [06:30] Сколько нужно собеседований, чтобы перестать волноваться
- [06:48] Было ли что-то общее у собеседований
- [08:38] Как отличить плохие задачки от хороших
- [12:05] Какие собеседования запомнились
- [17:52] Как понять, что компания тебе не походит
- [21:27] Как грамотно слиться с собеседования
- [22:57] Какая разница, где красить кнопочки? Как выбрать компанию
- [24:56] Взгляд с другой стороны: опыт найма
- [28:15] Эффективны ли тестовые задания
- [34:41] Что чаще встречается: вопросы или задачки
- [33:04] Что почитать или посмотреть перед собеседованием
- [36:03] Самое важное
🎧 Слушать подкаст на Anchor [37:36]
🎙 или в Apple Podcasts
или на любой другой популярной платформе.
Ссылки
- Канал Игоря: @kamyshev_code
Слушать еженедельный фронтенд-дайджест FrontoWeek.
👨💻 Игорь Камышев — ведущий телеграм-канала @kamyshev_code, где он делится интересными заметками об архитектуре и коде — рассказывает, как попал в Aviasales и выработал иммунитет к собеседованиям.
Таймкоды
- [00:19] О себе
- [00:51] Путь в Aviasales
- [02:18] Другие собеседования
- [06:30] Сколько нужно собеседований, чтобы перестать волноваться
- [06:48] Было ли что-то общее у собеседований
- [08:38] Как отличить плохие задачки от хороших
- [12:05] Какие собеседования запомнились
- [17:52] Как понять, что компания тебе не походит
- [21:27] Как грамотно слиться с собеседования
- [22:57] Какая разница, где красить кнопочки? Как выбрать компанию
- [24:56] Взгляд с другой стороны: опыт найма
- [28:15] Эффективны ли тестовые задания
- [34:41] Что чаще встречается: вопросы или задачки
- [33:04] Что почитать или посмотреть перед собеседованием
- [36:03] Самое важное
🎧 Слушать подкаст на Anchor [37:36]
🎙 или в Apple Podcasts
или на любой другой популярной платформе.
Ссылки
- Канал Игоря: @kamyshev_code
Слушать еженедельный фронтенд-дайджест FrontoWeek.
Несмотря на коронокризис, мы растем и ищем целую кучу (ВОСЕМЬ!) фронтендеров в разные команды Авиасейлс.
15-16 декабря проведем инкридбл фронтенд хайринг ивент. В первый день — техническое интервью, во второй день — интервью с менеджером. По результатам сразу оффер (ну или не оффер, кек). Быстро, четко, кайф!
Ремоут-ферст, страховка, спорт, английский, зарплата в долларах и вот это все в комплекте.
Регистрируйтесь 💙
https://event.aviasales.ru
15-16 декабря проведем инкридбл фронтенд хайринг ивент. В первый день — техническое интервью, во второй день — интервью с менеджером. По результатам сразу оффер (ну или не оффер, кек). Быстро, четко, кайф!
Ремоут-ферст, страховка, спорт, английский, зарплата в долларах и вот это все в комплекте.
Регистрируйтесь 💙
https://event.aviasales.ru
Работа в Авиасейлс
Работать в Авиасейлс — это жалеть, что не пришел сюда раньше!
Ищу несколько фронтендеров-джуниоров для помощи в небольшом проекте 🤗 напишите мне, пожалуйста.
Продолжим историю про цели фронтенд-департамента Авиасейлс 🤗
Четвёртая цель ближе всего к людям — мы хотим использовать классные современные технологии.
Во-первых, используя актуальные технологии мы избавляемся от головной боли с поддержкой.
> Например, один проект мы собираем через Gulp и вроде все хорошо, но gulp-sass не поддерживает кастомные имплементации sass. А node-sass умер и хотелось бы заменить его на dart-sass. Это причина, почему нам придётся отказаться от Gulp, хоть он и решает все наши задачи отлично.
Во-вторых, инженеры веселее, когда им дают современные технологии. А веселые разработчики — это разработчики, которые хорошо перформят. Можно тысячу раз повторить, что мы собрались не веселиться, а работать работу. Но работа без драйва — это полная херня.
#кейс
Четвёртая цель ближе всего к людям — мы хотим использовать классные современные технологии.
Во-первых, используя актуальные технологии мы избавляемся от головной боли с поддержкой.
> Например, один проект мы собираем через Gulp и вроде все хорошо, но gulp-sass не поддерживает кастомные имплементации sass. А node-sass умер и хотелось бы заменить его на dart-sass. Это причина, почему нам придётся отказаться от Gulp, хоть он и решает все наши задачи отлично.
Во-вторых, инженеры веселее, когда им дают современные технологии. А веселые разработчики — это разработчики, которые хорошо перформят. Можно тысячу раз повторить, что мы собрались не веселиться, а работать работу. Но работа без драйва — это полная херня.
#кейс
Четыре месяца у меня получалось делать ежемесячный подкаст 😞
А в этом месяце не получилось — сначала я долго не мог найти подходящего гостя, потом первая запись провалилась из-за моей технической глупости, вторая попытка мне не понравилась (получилось не натурально, потому что говорили по второму кругу), а потом оказалось что она все равно снова провалилась технически и смонтировать ее я не могу.
Простите, если кто-то ждал. В январе будет следующий выпуск. Я учту все технические косяки и, надеюсь, получится хорошо.
С Новым годом 🎊
А в этом месяце не получилось — сначала я долго не мог найти подходящего гостя, потом первая запись провалилась из-за моей технической глупости, вторая попытка мне не понравилась (получилось не натурально, потому что говорили по второму кругу), а потом оказалось что она все равно снова провалилась технически и смонтировать ее я не могу.
Простите, если кто-то ждал. В январе будет следующий выпуск. Я учту все технические косяки и, надеюсь, получится хорошо.
С Новым годом 🎊
Я часто делаю маленькие статические сайтики и мне надоело каждый раз настраивать для них сборку. Поэтому я сделал темплейт — https://github.com/igorkamyshev/land-lord
+ маленькая система компонентов, чтобы было удобно
+ конфиги торчат наружу, чтобы легко настроить под себя
Ставьте звездочки, пользуйтесь с удовольствием, приносите фидбеки 💙
+ маленькая система компонентов, чтобы было удобно
+ конфиги торчат наружу, чтобы легко настроить под себя
Ставьте звездочки, пользуйтесь с удовольствием, приносите фидбеки 💙
GitHub
GitHub - project-cemetery/land-lord: It's deprecated in favour of Parcel 2
It's deprecated in favour of Parcel 2. Contribute to project-cemetery/land-lord development by creating an account on GitHub.
Валя из Авиасейлс (мы работаем в одной команде) ведет замечательный канал — @valya_reads_issue
Там много интересных и полезных заметок 🤗
Там много интересных и полезных заметок 🤗
Я часто пишу как замечательно работать в Авиасейлс, но никогда не рассказывал как мы решаем, кто подходит на эту работу мечты. Пришло время это пофиксить!