Обо мне

Умение работать в режиме многозадачности и высокие аналитические способности, большой опыт самостоятельного решения поставленных задач позволяют мне эффективно работать с большими объемами информации, быстро находить качественные решения.

Профессиональные навыки
Участие в профессиональных сообществах
Опыт работы
ООО "Уральская Школа Тренинга"
Екатеринбург
Бизнес-образование, онлайн обучение
Ноябрь 2013 — По настоящее время (6 лет и 10 месяцев)

В компании занимал должность ведущего 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.
Высшее образование
Уральский государственный университет им. А.М. Горького
Екатеринбург
Факультет: Физический
Август 2008—Июль 2013 (4 года и 11 месяцев)

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

Дополнительное образование
Школа онлайн обучения IT-профессиям
Санкт-Петербург
Продвинутый курс Web-разработки
Июнь 2014—Сентябрь 2014 (3 месяца)