Михаил Гайданов
21/06/1997
Санкт-Петербург
Стаж: 4 года, 3 месяца

Специализация
Front-end разработчик
Инфраструктура
Немного back-end
Скиллы
JavaScript
TypeScript
React
React Router
Redux
RTK
RTK Query
Emotion
styled-components
Webpack
Docker
Kubernetes
Node.js
npm
pnpm
Express
Jest
HTML
CSS
Git
REST API
Agile
Scrum
KISS
SOLID
YAGNI
DRY
Figma
Адаптивная верстка
Next.js
gRPC
protobuf
C++
CMake
Python
Go
SQL
Английский язык
Яндекс
Front-end (TS/React/Webpack)
Инфра (Кастомные решения)
1 год, 6 месяцев

Работал в команде Яндекс Маркета. Участвовал в нескольких проектах: удаление deprecated сетевого запроса (резолвера) и замена его на новый, внедрение новой дизайн-системы, переход от старой архитектуры бэкенда к новой, которая только рендерит html.

Написал многопоточный статический анализатор кода с конфигурируемыми правилами на основе парсера Babel. Он строит иерархию виджетов, резолверов, JSX-компонентов, CSS-файлов, а также собирает интересующую о них информацию; это позволяет понять, что, например, на странице X используется много устаревших компонентов, медленных резолверов, непроизводительных CSS селекторов. Места их использования, конечно, можно просто найти через поиск, но это не даст информации о том, что находится выше в иерархии - например, не все страницы одинаково важны, а из всех использований медленного резолвера Y на важную страницу X приходится только 20%, и если удалять его вслепую - 80% времени бы ушло впустую. Это, кстати, реальные цифры, и до парсера много времени уходило на ручной анализ цепочки зависимостей, так как в Маркете кода очень много, и уровень вложенности соответствующий. Автоматический анализ скоратил время, необходимое на выполнение проекта, без преуменьшения, как минимум на 40%; помимо этого, несколько мест, откуда этот резолвер попадал на страницу, были очень неочевидные.

Первый мой проект - замена старого резолвера на новый на странице продукта. Старый резолвер работал с устаревшей, избыточной моделью данных; моей задачей было проработать новую модель, которую сделают бэкендеры, и использовать ее в коде. В результате, скорость загрузки страницы увеличилась до 50 мс.

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

Ускорил смену фильтров товаров на 100 мс путем упрощения и оптимизации кода и сетевых запросов.

Участвовал во внедрении новой дизайн-системы, писал компоненты по дизайнерским гайдлайнам, применил анализатор кода для ускорения процесса составления задач и избавления от некоторых паттернов написания стилей.

Завел cron-задачу для автоматического анализа свежего кода и выгрузки информации в базу данных, на основе которой я создал дашборд.

Избавился от большого количества легаси и дублирующегося кода, суммарно более 3000 строк.

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

Кардио Проджект/Компания Нео
Front-end (TS/React/Pixie.js/Webpack)
1 год, 3 месяца

Занимался разработкой веб-приложений для записи и анализа ЭКГ и Холтеровского мониторирования.

Проект ЭКГ уже был в разработке; я добился перехода с устаревших технологий (jQuery, Bootstrap, чистый HTML) на современный стек (TypeScript, React, Redux, Webpack), улучшив архитектуру, поддерживаемость приложения, и Developer Experience, что повлекло уменьшение метрики обнаруженных в тестировании багов и увеличении метрики скорости закрытия задач.

Реализовывал сложный функционал: работа с большими объемами данных (отображение ЭКГ на канвасе, масштабирование, скроллинг), интерактивные элементы (выделение, аннотации, разметка), интеграция с back-end (REST API, WebSocket), запись и отображение ЭКГ в реальном времени.

Часть функционала уже была реализована в старой версии приложения, однако код был сложным для понимания и сопровождения, а также низкопроизводительным. Я переписал эти части с нуля, улучшив читаемость кода, производительность и отзывчивость интерфейса. Как пример - расположение 12 отведений ЭКГ на экране, ранее для каждого варианта был отдельный if, с множеством дублирующегося кода, ненужных вычислений, которые можно кешировать, и аллокаций памяти; я заменил это на декларативный подход с конфигурацией, кешированием, и универсальным рендерером. Помимо этого, я сильно оптимизировал код отрисовки, что увеличило фрейм-тайм с 50 мс до <16 мс на больших наборах данных.

Помимо написания кода, продумывал технические и архитектурные решения для проектов.

Itransition
Front-end (TS/Vue.js/Webpack)
1 год, 6 месяцев

Занимался написанием клиентской части веб-приложения для внутренних нужд компании.

Разрабатывал компоненты по дизайнерским гайдлайнам, следуя принципам адаптивной верстки.

Реализовывал функционал приложения - работа с формами, отображение данных, навигация, сетевые запросы к API.

Исправлял @ts-expect-error, фиксил баги, улучшал читаемость и поддержку кода.

Участвовал в командных обсуждениях и планировании задач.

Работал с системой контроля версий Git, проходил код-ревью, вел задачи в трекере.