Алексей Катаев (alexeykataev), 34 года, Россия, ЗаречныйАлексей Катаев (alexeykataev), 34 года, Россия, Заречный

Алексей Катаев

Full-Stack EngineerФулстек разработчикРазработчик мобильных приложенийСтарший (Senior)
От 600 000 ₽Не ищу работу

Контакты

Войти
Возраст: 34 года
Опыт работы: 10 лет и 6 месяцев
Регистрация: 29.06.2020
Последний визит: 3 недели назад
Гражданство:
Местоположение: Россия, Заречный
Дополнительно: готов к удаленной работе
Знание языков:

Обо мне

Более 10 лет в Software Engineering.

На данный момент я являюсь страстным и увлеченным Full Stack разработчиком с более чем десятилетним опытом веб-разработки и более чем двухлетним опытом в разработке для iOS на SwiftUI.

Используя этот опыт, я отточил свои навыки в создании захватывающих мобильных и веб-интерфейсов, а также в оптимизации взаимодействия с пользователями.

Мой стек технологий:

В Frontend разработке опыт более 10 лет
- более 5 лет пишу на TypeScript;
- работал в фреймворками React (около 3 лет) и Angular (более 2 лет);
- использовал стэйт-мэнеджеры Redux, MobX, Effector, NgXS;
- работал с Svelte, AlpineJs 
- знаю и умею в реактивность, владею RxJS;
- в совершенстве владею HTML, CSS, SCSS, умею создавать сложные интерфейсы и адаптировать их под разные устройства;
- есть опыт работы с CSS in JS, Styled components, Tailwind CSS;
- создавал сложные анимации с использованием GSAP, Framer Motion;
- писал тесты на Jest;
- есть опыт работы с WebSockets с использованием socket.io;
- знаю как настраивать сборку в Webpack, Vite.

В Backend разработке более 5 лет
- около 4 лет опыта разработки на PHP;
- работал с фреймворками Laravel, Symfony, Livewire;
- большой опыт использования концепции MVC;
- писал тесты на PHPUnit;
- есть опыт разработки тем и плагинов для Wordpess;
- больше 1 года опыта работы с NodeJS, работал с фреймворком NestJS;
- знаю Docker, умею писать образы, поднимать из них сеть с использованием docker-compose;
- работал с базами данных PostgreSQL, MySQL, MariaDM, умею писать сложные запросы, оптимизировать запросы, понимаю как работаю миграции, транзакции, шадинг, знаю как делать soft-delete;
- работал с Redis;
- есть небольшой опыт работы с MongoDB;
- работал с Elacticsearch;
- знаком с принципом и особенностями колоночных баз данных типа ClickHouse;
- понимаю что такое балансировка нагрузки.

В Mobile разработке более 2 лет
- разрабатывал под iOS с использованием SwiftUI;
- есть опыт работы с UIKit, был опыт реализации с помощью него функционала, недоступного в SwiftUI;
- знаю и умею в реактивность, владею Combine;
- большой опыт использования концепции MVVM;
- хорошее понимание многопоточности и трэдов;
- работал с CoreData и SQLite;
- есть опыт работы с Alamofire;
- создавал сложные и удобные пользовательские интерфейсы, адаптированные под разные устройства.

Прекрасно понимаю и применяю парадигмы ООП, принципы SOLID, DRY, KISS, YAGNI, в работе использую многие шаблоны проектирования.

Навыки

TypeScript
PHP
Node.js
SwiftUI
React
Angular
Laravel
PostgreSQL
SCSS
Git

Участие в профсообществах

Опыт работы

  • Have a Nice Day
    Майами
    Фулстек разработчик (Старший)Senior Full Stack & Mobile Developer
    Ноябрь 2023 — Апрель 2024 (6 месяцев)

    Have a Nice Day - мобильная платформа направленная на стабилизацию эмоционального и ментального состояния пользователей, предоставляющая ежедневную порцию позитивного контента и набор инструментов для эмоционального здоровья, таких как дыхательные практики, дневник рефлексии, календарь настроения и тп.

    В ходе работы над платформой я был занят сразу двумя направлениями - разработка мобильного приложения на SwiftUI и реализация back и front частей платформы со стороны веба с использованием стэка TALL (Tailwind CSS, Alpine.js, Laravel, Livewire).

    В ходе работы я решал такие задачи, как:
    - реализация удобной и адаптивной ленты контента в мобильном приложении, состоящей из порядка 20 различных типов контента и активностей.
    - интеграция ML-модели в платформу в качестве системы эмоциональной поддержки пользователя во время сессиий рефлексии.
    - создание полностью настраиваемой маркетинговой воронки и пэйвола в web-части платформы и блочный визуальный редактор для них.
    - реализация CRM-системы для управления лентой контента и списком пользователей.
    - проектирование и разработка REST-full api для мобильного приложения и отказоустойчивого бэка для хранения и доступа к медиаконтенту.

  • Self+
    Майами
    Разработчик мобильных приложений (Старший)Senior Frontend & Middle+ Mobile Developer
    Январь 2022 — Октябрь 2023 (1 год и 10 месяцев)

    Self+ - мобильная платформа направленная на монетизацию контента для wellness-креаторов, авторов пропагандирующих здоровый образ жизни, психологическое и ментальное здоровье, спортивных тренеров и учителей йоги.

    Сначала я отвечал за проектирование и разработку web-части платформы, а именно web-аккаунт пользователя, реализация всех необходимых маркетинговых требований на сайте платформы. Постепенно я начал заниматься мобильной iOS разработкой на SwiftUI,  в ходе которой решал такие задачи, как:

    - реализация мультитредовой чат-системы с такими возможностями как загрузка и публикация медиа контента,  голосовые сообщения, реплаи, реакции на сообщения, галерея и статистика участников чата.
    - разработка библиотеки контента с возможностью разбивать контент на уроки, курсы и системой комментирования. 
    - интеграция в платформу виртуального ассистента на основе ML-модели, помогающего креатору создавать и оформлять контент.

    В ходе работы над проектом я глубоко углубился в мобильную разработку для iOS и за достаточно короткое время изучил нюансы и возможности Swift и SwiftUI.

  • Автоматизация сбора и анализа маркетинговых данных
    От 10 до 100 сотрудников
    Фронтенд разработчик (Старший)Senior Frontend Developer
    Август 2020 — Январь 2022 (1 год и 6 месяцев)

    JustControl.it — это платформа для анализа маркетинговых данных с гибкими возможностями ELT.

    В мои обязанности входило:
    Развитие основного продукта в рамкам Angular экосистемы, поддержка существующих и проектирование новых компонентов приложения.
    Создание и развитие маркетингового сайта компании в соответствии с нуждами команды маркетинга.

    В процессе разработки продукта решал следующие задачи:
    Изучил и участвовал в организации монорепозитория Angular приложения по методологии NRWL NX.
    Участвовал в проектировании моделей данных Angular приложения, полагаясь на стейт-менеджер NgXS.
    Занимался проектированием и разработкой визуального редактора процессов обработки данных, который представляет собой настраиваемую flow-диаграмму. В ходе разработки очень тесно познакомился с библиотекой GoJS.
    Занимался разработкой компонентов для визуализации данных. Было необходимо реализовать настраиваемую систему виджетов с возможность отображать любые доступные в системе данные в форме line, bar и pie графиков. Для реализации были использованы библиотеки D3js и ECharts.
    Участвовал в проектировании и занимался реализацией редактора расписаний представляющий из себя просто user-friendly редактор CRON выражений.
    Участвовал в реализации парсера языка запросов для фильтрации данных и системы автодополнения основанной на этом парсере. Была необходимость дать юзерам возможность задавать запросы для фильтрации любой сложности с использованием логических выражений типа “ad_source = google and clicks >= 5000” c возможностью показывать им во время ввода подсказки с возможными в текущий момент вариантами дополнения запроса, например доступными срезами/метриками или их операциями сравнения. Для реализации парсера использовался генератор парсеров PegJS.
    Участвовал в реализации удобной системы юзер-менеджмента на основе ролей и пермошенов.
    Участвовал в проектировании существующего интерфейса системы направленного на улучшение UX. Занимался реализацией соответствующих доработок.

    В процессе взаимодействия с отделом маркетинга решал следующие задачи:
    Занимался переносом существующего статического сайта на wordpress с целью дать маркетингу больше возможностей - быстро и без необходимости обращаться в разработку изменять данные на страницах, создавать новые для быстрой проверки гипотез, быстро менять навигацию, публиковать записи бога, мероприятия и статьи глоссария (для чего были реализованные кастомные сущности в wordpress).
    Изучил и настроил все пути лидогенерации связанные с маркетинговым сайтом, настроил возможность создавать и изменять в визуальном редакторе формы обратной связи с использованием WS Forms, настроил передачу данных лидов в HubSpot.
    Покрыл в соответствии с нуждами маркетинга все целевые действия на сайте оправкой событий в Google Tag Manager.

  • ООО "Уральская Школа Тренинга"
    Екатеринбург
    Фронтенд разработчик (Средний)Web-разработчик в сфере Бизнес-образование, онлайн обучение
    Ноябрь 2013 — Июль 2020 (6 лет и 9 месяцев)

    В компании занимал должность ведущего IT-специалиста а в дальнейшем (с января 2020) должность IT-директора. 

    В мои обязанности входило:

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

    В плане веб-разработки участвовал в двух проектах:

    1. Разработка сайта компании, с тесно интегрированной с ним системой дистанционного обучения. Система представляет собой комплекс из структурированных учебных материалов, возможности контроля допуска к ним участников посредством личного кабинета, возможности контроля учебных отчетов участников. На 2020 год, на написанной мной системе уже успешно обучилось более 5000 человек.

      В процессе разработки решил следующие задачи:
      • Изначально в качестве основы для сайта был выбран Wordpress + плагин Woocommerce, из за удобства администрирования. В дальнейшем поверх Wordpress я написал SPA приложение на основе AngularJS (Angular 2+ тогда еще не было), общающееся с Wordpress посредством Ajax запросов. 
      • Была продумана система запроса сущностей (товары, заказы, страницы курсов, отчеты, комментарии, достижения и т.п.) с возможностью кэширования на стороне клиента.
      • Была организована динамическая подгрузка страниц сайта, с помощью внедрения в процесс работы плагина UI-Router для AngularJS таким образом, чтобы в процессе изменения состояния роутера с сервира запрашивалась необходимая страница и компилировалась средствами AngularJS.
      • Был полностью переработан процесс оформления и оплаты заказов и заявок на учебные мероприятия (стандартный Woocommerce страницы не устраивали) так, чтобы весь процесс происходил без перезагрузок страницы, форма оформления и оплаты общается с сервером через Ajax, на сервере используется API Woocommerce.
      • Для удобства редактирования контента сайта и визуальной верстки страниц непосредственно дизайнером компании, я переписал часть кода плагина WPBakery Visual Composer, изменив процесс сохранения всех его элементов так, чтобы в результате сохранялись написанные мной компоненты AngularJS. Соответственно для каждого элемента визуального редактора был написан свой компонент AngularJS.
      • Организовал взаимодействие с Rest API сервиса ClickMeeting, в котором компания проводит онлайн-занятия, таким образом, чтобы менеджер мог массового создавать занятия через админку Wordpress и загружать видео с их записями, а ученики могли прямо в личном кабинете видеть список доступных им занятий и подключиться к нужному или просмотреть запись прошедшего занятия. В дальнейшем была добавлена интеграция с Zoom.
      • Был создан компонент для комментирования учебных материалов с подгрузкой комментариев в режиме реального времени. Компонент общается с сервером через Ajax и с серверной стороны интегрирован в систему комментариев Wordpress, так чтобы комментарии были видны в админке. Для реализации живого обновления комментариев использовал Firebase Realtime Database.
      • Был настроен файловый загрузчик для загрузки и прикрепления к отчетам или комментариям учениками необходимых для обучения файлов, для чего был использован Firebase SDK for Cloud Storage.
      • Для отображения учебных документов и файлов подгруженных учениками был интегрирован в личный кабинет сервис Google Docs Viewer.
      • Для ускорения загрузки страниц была организованная ленивая загрузка изображений, компонентов видео, компонентов запрашивающих сущности с сервера, с использованием DOM Intersection Observer API, таким образом чтобы с сервера не запрашивалась информация до тех пор пока запрашивающий ее компонент не окажется близко к полю видимости. В случае с изображениями предусмотрена изначальная загрузка сильно уменьшенных размытых вариантов (в стиле сайта Medium) в остальных случаях отображается прелоадер.
      • Самостоятельно разработал дизайн всех элементов сайта и приложения. Настроил адаптивное отображение на устройствах разного размера с 4-мя стадиями ширины экрана.

    2. Разработка веб-приложения для визуального проектирования сценариев обучения: расчасовок тренингов, стратегических сессий и мерокриятий, коуч сессий. В процессе было написано приложение на Angular 7+ с использованием полного стека Firebase Javascript SDK и Angular Material SDK. Процесс редактирования сценария обусловлен перетаскиванием карточек с методами на таймлайне учебного процесса, для чего был использован Angular Material Drag and Drop.

      В процессе разработки решил следующие задачи:
      • Спроектировал структуру приложения, средствами TypeScript прописал типы используемых данных, в силу простоты не стал использовать полноценный state management вроде NgRx, работа со всеми сущностями происходит через один сервис, который основан на библиотеке AngularFire 2, с возможностью обновлять запрошенные данные в реальном времени.
      • Спроектировал стайл-гайд, мобильный и десктоп дизайн приложения  в программе Figma.
      • Разработал единый компонент для редактирования данных сущностей разных типов без необходимости явного сохранения. Сохранение данных происходит автоматически за счет подписки на изменения в Angular Reactive Forms. В процессе сохранения пользователю демонстрируется прелоадер отображающий статус сохранения данных.
      • В процессе разработки пришлось отказаться от использования компонента Material Dialog, и сделать свое модальное окно для редактирования сущностей на основе Material SDK Overlay и Angular анимаций.
      • Для многих требовательных к безопасности действий, таких как процесс оплаты тарифа, изменение типа аккаунта пользователя или отправка писем были использованы Firebase Functions.
      • Разработал систему предоставления автоматических рекомендаций по правильности конструирования сценариев основанную на анализе использованных методов Настройка условий и рекомендаций а также некоторых других параметров построения сценариев происходит с использованием Firebase Remote Config.
      • Разработал компонент поиска/фильтрации методов по базе. В связи с некоторой ограниченностью возможностей запросов в Firebase пришлось с использованием rxjs в случае сложных запросов разделять их на несколько Observables с последующим слиянием в один, с сохранением получать изменения запрошенных данных в живом режиме. Так-же для полноценного полнотекстового поиска пришлось проработать вручную индексацию двух полей при помощи Firebase Functions после каждого обновления объекта в базе данных.
      • Для генерации в браузере скачиваемых PDF файлов с результатами конструирования и описанием использованных методов использовал библиотеку PDFmake.

Высшее образование

  • УрГУ

    Уральский государственный университет им. А.М. Горького
    Екатеринбург160 выпускников
    Физический
    Август 2008 — Июль 2013 (4 года и 11 месяцев)

    Бакалавр физики по специальности общая и молекулярная физика.

Дополнительное образование