Это заключительный эпизод курса «Паттерны и практики написания кода». В нём бэкенд-инженер Юра Афанасьев расскажет про истоки возникновения паттернов, а также объяснит, как урбанизм и проектирование городов помогли в создании книги «Паттерны проектирования». Напоследок Юра также разберёт два фундаментальных правила, описанных в книге «Design Patterns».
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Последние из группы Поведенческих паттернов: Хранитель и Шаблонный метод
В одиннадцатой серии курса «Паттерны и практики написания кода» вместе с бэкенд-инженером Юрой Афанасьевым завершаем тему Поведенческих паттернов. Последние два подхода, которые разберем в эпизоде: Хранитель и Шаблонный метод. Подробнее про их реализацию в коде, преимущества и недостатки — в эпизоде.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Всё о назначении и применимости Наблюдателя и Цепочки Обязанностей
Это десятая серия курса «Паттерны и практики написания кода»: вместе с бэкенд-инженером Юрой Афанасьевым продолжаем изучать тему Поведенческих паттернов. В новом эпизоде разбираем два подхода, связанных с отправкой и обработкой событий: Наблюдатель и Цепочка Обязанностей.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
В новом эпизоде курса «Паттерны и практики написания кода» вместе с бэкенд-инженером Юрой Афанасьевым продолжаем тему Поведенческих паттернов. На рассмотрении следующие два подхода: Команда и Посредник — разберёмся, какие задачи они решают, как выглядят соответствующие UML-диаграммы, а также какие особенности следует учитывать при реализации в коде.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Это восьмая серия курса «Паттерны и практики написания кода», где вместе с бэкенд-инженером Юрой Афанасьевым открываем новую тему — Поведенческие паттерны. Данная группа самая обширная из всех изученных, поэтому в новом эпизоде постепенно разберём первые два подхода: Стратегия и Состояние.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Бизнес-категории Авито Услуг разительно отличаются и каждую из них развивает отдельная команда. Запросы на аналитику от заказчиков к таким командам часто похожи — преобразуясь в ad-hoc задачи, они несут в себе одну неочевидную угрозу статичной работы.
Как поступить, чтобы такого не допускать?
Привет, я Алексей Авраменко, тимлид команды аналитики в Авито Услугах, и ниже мои 10 способов решения этой проблемы:
Решайте проблемы заказчиков. Когда коллеги приходят с задачей «Выгрузите ушедших пользователей», важно понять, что они хотят оценить. Например, если это эффект от новой инициативы, то его лучше покажет динамика активных клиентов, которая уже есть в дашборде. Естественный отток происходит всё время и список ушедших пользователей ничего не даст без анализа динамики. Задавайте вопросы, чтобы решать проблемы стейкхолдеров, а не выгружать чиселки.
Делайте автоматическую базовую отчетность. Этот процесс должен стать постоянным. Сегодня достаточно одного отчёта, завтра будет фокус на новой стороне продукта — и придётся добавить новый.
Минимизируйте хаос. Избегайте вмешательства заказчиков в середине спринта. Мотивируйте их следовать процессам: приходить на брейншторм и планирование, создавать задачу, описывать проблему и ожидания. Не все заказчики дойдут даже до планирования — срочность и важность задачи могут быть преувеличены.
Унифицируйте решения для похожих задач. Группируйте запросы коллег по общим признакам и метрикам и решайте одну задачу, которая покроет сразу все потребности.
Предвосхищайте вопросы. Иногда вы лучше заказчика знаете, что ему надо, и можете предугадывать проблемы. Думайте наперёд, чтобы сэкономить время на добавлении нового поля/ разреза/ функциональности или вообще на изменении решения.
Отказывайте. Даже если вы любите ваших заказчиков, иногда надо говорить «нет», но обязательно с объяснением причины: «нет, потому что…».
Планируйте задачи хотя бы на квартал вперёд. Так вы получите фокус и синхронизируетесь по ожиданиям с заказчиками. Планирование даст вам дополнительный аргумент для приоритизации задач.
Уточняйте причину срочности. Когда заказчик врывается с запросом «Срочно! Посчитайте мне длину удава в попугаях!», обязательно выясните, какие запланированные события зависят от этих данных. Иногда оказывается, что встреча по физиологии удава стоит через 3 недели. И даже для перестраховки длину удава достаточно получить в течение следующего спринта.
Создавайте инструменты для самообслуживания. Для простых однотипных задач можно сделать удобный инструмент и инструкцию к нему. Так заказчики часть проблем смогут устранить сами при косвенной поддержке с вашей стороны.
Будьте эмпатичным. Не оставляйте заказчиков один на один с их проблемой. Дайте им хотя бы минуту внимания и несколько идей, что им может помочь.
Делитесь в комментариях, какие способы уже были в вашей работе.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
В cедьмой серии курса «Паттерны и практики написания кода» разберем три последних подхода в теме Структурных Паттернов: Мост, Заместитель и Приспособленец. Вместе с бэкенд-инженером Юрой Афанасьевым посмотрим, как паттерны реализуются в коде и в чём состоит их ключевое назначение.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
В новом эпизоде отрытого курса «Паттерны и практики написания кода» вместе с бэкенд-инженером Авито Юрой Афанасьевым продолжаем тему Структурных Паттернов. Разберём два новых подхода — Декоратор и Фасад, поговорим про UML-диаграммы паттернов и их реализацию в коде, а также рассмотрим основные преимущества подходов.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Задачи Структурных Паттернов: Адаптер и Компоновщик — в чём суть?
В пятой серии открытого курса «Паттерны и практики написания кода» мы начинаем новую объёмную тему — изучение Структурных Паттернов. Она состоит из семи подходов. В эпизоде вместе с бэкенд-инженером Юрой Афанасьевым погрузимся в особенности работы Адаптера и Компоновщика.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Порождающие паттерны Prototype и Singleton: а минусы будут?
В новой серии открытого курса «Паттерны и практики написания кода» мы завершим изучение порождающих паттернов знакомством с двумя шаблонами — паттерном Прототип и паттерном Синглтон. Вместе с бэкенд-инженером Юрой Афанасьевым разберемся, почему паттерн Prototype — простой в реализации — используется редко, а паттерн Singleton — самый критикуемый.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
В новом выпуске подкаста «Свободный слот» обсуждаем сложные решения тимлида — те, что бьют не по метрикам, а по нервам. Чтобы разобрать эту непростую тему, ведущие Саша Прокшина и Паша Федотов встретились с Олегом Федоткиным, CTO в «Циан». Как принимать решения, когда нет правильного ответа? Уволить или дать шанс? Сохранить команду или пойти на реорганизацию? Согласиться на даунгрейд ради себя или тянуть дальше? Выделите свободный слот в своем расписании, чтобы вместе с ребятами найти ответы на все вопросы.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Новая серия курса «Паттерны и практики написания кода» целиком посвящена разбору достаточно громоздкого паттерна — Абстрактной Фабрики. Вместе с бэкенд-инженером Юрой Афанасьевым на примерах разберем, что это такое и как она реализуется.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Модерация объявлений, коммуникация внутри сервиса, меры безопасности — рассказываем о SafeCom в новом выпуске «AviTalk». На этот раз экспертизой делится Антон Тупиков, технический лидер дирекции SafeСom Авито. Вместе с ведущей Стасей Кошман говорим о найме в SafeCom, интересных кейсах из работы сервиса и способах стать детективом внутри Авито. Антон также поделится историей собственной карьеры: от первых проектов до перехода в Авито.
Чтобы ничего не пропустить, включайте видео и делитесь мнением в комментариях.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Порождающие паттерны: какие они и в чем их назначение?
В новой серии третьего сезона курса «Паттерны и практики написания кода» перейдём от теории к практике и погрузимся в мир прикладных паттернов. В предыдущем видео мы узнали, что паттерны делятся на три группы: сегодня вместе с бэкенд-инженером Юрой Афанасьевым начнём рассматривать первую из них — порождающие паттерны.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Всем привет! Это третий сезон курса «Паттерны и практики написания кода». Первая серия вводная: в ней бэкенд-инженер Юра Афанасьев знакомит вас с историей паттернов и их функциями, а также рассказывает, как с ними правильно работать.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Бинго разработчика: ставь лайк зачеркивай, если было
В выходные не работаем, но развлекаемся, поэтому предлагаем вам сыграть в бинго разработчика! Правила — простые:
сохраняйте/делайте скрин картинки из поста;
отмечайте клеточки с вашей разработческой жизой;
скидывайте в комментарии итог. Или можете просто писать в комментах то, что хотели бы зачеркнуть в этом бинго, ваши варианты особенно приветствуются)
Ждем того, кто соберет все ачивки!
А как закончите с бинго — в нашем TG‑канале есть еще одна занимательная игра с кубиком и картами инженерного таро, которые предскажут ваше будущее! Переходите по ссылке и развлекайтесь, на канал тоже подписывайтесь, там часто бывает всякое интересное.
Привет, Хабр! Меня зовут Станислав Егоркин, я инженер юнита IaaS департамента разработки Infrastructure в AvitoTech.
Недавно я рассказывал о новых подходах, которые мы использовали при создании дашбордов для диагностики. С тех пор дашборды такого типа обрели еще большую популярность, и мы решили выложить пример их реализации в галерею дашбордов Grafana.
За основу я взял наш дашборд Node Status, который показывал в предыдущей статье. Напомню, он служит для того, чтобы быстро понять, все ли в порядке с нодой в Kubernetes-кластере. В своей основе она содержит множество небольших панелек, которые единообразно подсвечиваются при возникновении аномалий: оранжевый значит «обрати внимание», красный - явно что-то не так. При необходимости по клику можно получить расширенную информацию по каждой метрике.
Я очистил наш внутренний вариант от специфики. Это позволяет использовать дашборд в любых окружениях, в которых развернуты нужные экспортеры:
node-exporter (лейбл «node» должен содержать имя Kubernetes-ноды);
kube-state-metrics;
node-problem-detector (опционально).
Несмотря на то, что все панельки должны в этом случае работать «из коробки», сам дашборд все же следует воспринимать как конструктор. У каждой инфраструктуры есть специфика, и вы можете легко отразить ее, опираясь на то, как реализованы уже имеющиеся панели.
Я полагаю, что ценность Node Status для комьюнити состоит не в том, какие именно метрики на ней собраны, а в том, на каких принципах она основана. Эти принципы зарекомендовали себя у нас, и вероятно будут также полезны и вам.
Если вы у вас возникнут сложности при использовании дашборда или предложения по его улучшению, пожалуйста, оставляйте свои комментарии!
Ответ на этот вопрос знает Виктор Раев — технический руководитель юнита в Авито и гость нового выпуска подкаста «Мы обречены». Витя рассказывает про ключевые ценности Авито, а главное: про то, какое отражение они находят в повседневной жизни разработчиков.
Подробнее о манифесте Авито можно почитать здесь, а чтобы лучше познакомиться с внутренними принципами компании — приглашаем послушать Витю с 23 минуты.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Одним февральским вечером в московском офисе Авито мы узнали, что под хорошее вино и вкусную еду разговоры про управление командой, процессы найма и привычную рутину тимлидов сразу преображаются.
Чтобы почувствовать атмосферу того вечера, кликайте на видео.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.
Как пройти путь от разработчика до директора нескольких кластеров?
Об этом расскажет гость нового выпуска шоу «AviTalk» — Игорь Гранщиков, руководитель разработки вертикали Авито Недвижимость. Игорь воспроизводит в подробностях весь свой карьерный трек от обучения и первой работы до руководящих позиций.
Подписывайтесь на канал AvitoTech в Telegram, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.