Обо мне

Hello, my name is Borodin Dmitriy and I am open-minded and hardworking software engineer. I have been developing software for 5+ years. I live in the time zone of Moscow (GMT +03: 00), and I like to work remotely, but I do not mind working in the office if the road does not take more than 30 minutes.

The area of my work involves:

Solving business problems by means of programming. I create full-fledged multi-user cross-platform solutions that work in real time using WEB and DevOps technologies.

My experience:

I am sure that the creation of an understandable and predictable system based on principles and templates of programming makes it possible to effectively separate work between people, keep the growth of the complexity of the system at one level, and also maintain maintainability.

I allocate the code which can be used repeatedly in separate npm packages and connect as dependencies.

I believe that adhere to principles of architectural is more important than a concrete implementation, because making local fixes is easier than fixe an architecture error.

In conditions of insufficient time, I give priority to solving the problem in any accessible way, but at the next stage of development I will perform the refactoring of the solution.

To achieve success in the team, first of all you need to agree on the rules of the game.

Can to recognize unsuccessful decisions and mistakes, take them and gain experience.

Premature automation is harmful, but timely automation significantly saves time.

If you need a lot of time to learn technology, you need to hire a specialist who already knows the technology.

My skills: 

Programming:

  • OOP
  • DDD
  • SOLID
  • Design patterns
  • Software design
  • Software architecture
  • TypeScript
  • React
  • Cordova
  • Mobx
  • Moment (experience with time and offsets)
  • Numeraljs (experience with money and other numeral types)
  • Node

HTML, CSS:

I more like native features of HTML or CSS before preprocessors like SASS, LESS. Also, I use CSS-Modules and БЭМ methodology, in my opinion, it is a powerful combination.

Web servers:

For developing I use webpack-dev-server, WDS gave me https, wss and proxy to back-end. For production I use Nginx, I configured nginx for handling static files, handle https and wss connection also proxy to back-end.

Back-end:

UI Kits:

Building tools:

Ultimate build and dev tool for create web site, SPA, mobile and desktop application powered by Cordova project. This tool support library oriented paradigm.

Testing:

Deploy:

  • Docker ( this is favourite )
  • Bash
  • pm2

GitLab: https://gitlab.com/mitya-borodin

Reusable code: https://gitlab.com/mitya-borodin/base-code

Example project (source code): https://gitlab.com/home-tracker

GitHub: https://github.com/mitya-borodin

Профессиональные навыки
Участие в профессиональных сообществах
Опыт работы
Route Aviation FZE
Шарджа
Full-stack developer
Август 2017 — По настоящее время (2 года)

Обязанности:

  1. Участие в развитии модели предметной области используя DDD.
  2. Разработка архитектуры ПО основываюсь на модели предметной области.
  3. Не посредственная реализация ПО на клиенте и на сервере.
  4. Реализация тестов для объектов предметной области.
  5. Поддержка и развитие сборочных инструментов.
  6. Развертывание и обслуживание ПО на производстве.

Достижение: 

  1. Осознана полезность DDD.
  2. Применение DDD на практике с позитивным результатом.
  3. Открыл для себя успешную архитектуру ПО для средне сложного приложения.
  4. Реализовал инструмент поддерживающий инфраструктуру ПО.
  5. Реализовал два приложения которые успешно внедрены в производство работ на предприятии.
XPM.CENTER
Москва
Front-End Developer
Июль 2016 — Сентябрь 2017 (1 год и 3 месяца)

Обязанности:

  1. Планирование архитектуры проекта.
  2. Выбор технологий для реализации.
  3. Организация работы между людьми которые делают верстку и теми кто разрабатывает логику. Цель - сделать ненужным копирование шаблонов из проекта верстальщиков в целевой проект.
  4. Интеграция open source решений в платформу компании.
  5. Оценка проекта для участия в тендере.
  6. Обучение младших сотрудников.
  7. Непосредственно реализация.

Достижения:

  1. Реализован способ доставки шаблонов в целевой проект без необходимости копировать код, при помощи git submodules и webpack. Проект верстальщиков и целевой проект имеют одинаковую конфигурацию сборки проекта, далее проект с версткой подключается как git submodule в директорию src целевого проекта. Таким образом появляется возможность импортировать React компоненты напрямую из проекта с версткой. Основное требование, это вести разработку верстки используя React компоненты. Данный способ реализуем на всех компоненто ориентированных фреймворков.
  2. Интеграция изоморфного рендеринга приложения основанного на библиотеке React в платформу компании, без изменения самой платформы.
  3. Для контроля конфигураций сборки начал реализовывать пакет который следует идеи "одна зависимость для разработки", вот этот пакет rearguard.
Шопинг в Instagram
Front-End Developer
Май 2016 — Июль 2016 (3 месяца)

Обязанности:

  1. Непосредственно реализация.
  2. Выдерживание pixel prefect.
  3. Планирование отдельных участков приложения.
  4. Обновление front-end сервера на stage и production.

Достижение:

  1. Значительно улучшил систему чатов, проведя значительный рефакторинг и сократив количество вызовов API. Так же реализовал фоновую загрузку данных для чатов и фоновое обновления данных в памяти, что значительно повлияло на отклик интерфейса.
Компания разрабатывает CAE приложение для расчета стержневых систем методом конечных элементов на платформе web.
Казань
Developer
Сентябрь 2014 — Май 2016 (1 год и 9 месяцев)

Обязанности:

  1. Планирование архитектуры проекта.
  2. Выбор технологий для реализации.
  3. Непосредственно реализация.
  4. Огранизация взаимодействия с дизайнером проекта.

Достижения:

  1. Реализация приложения до состояния которое полностью соответсвует MVP.
Частная практика, работа без зачисления в штат
PHP/JS разработчик, Front-end разработчик, системный администратор Linux.
Сентябрь 2013 — Сентябрь 2014 (1 год и 1 месяц)

Обязанности:

  1. Поиск заказчиков, ведение переговоров и заключение соглашений.
  2. Управление командой.
  3. Верстка (HTML, CSS).
  4. Разработка JS кода для Front-End.
  5. Разработка Back-End на PHP при помощи framework CI и базы данных MySQL.
  6. Разработка технического задания, так же разработка бизнес требований.
  7. Разработка или доработка UI/UX совместно с заказчиком.
  8. Коорденирование работы дизайнера.
  9. Обучение младших разработчиков.
  10. Разработка архитектуры приложения.
  11. Выполнял обязанности системеного администратора.

Достижения:

  1. Первый подход к снаряду в мире IT.
  2. Научился вести переговоры.
  3. Прочувствовал возможности команды и проблемы взаимодействия с командой.
  4. Прочувствовал работу с time management.
  5. Реализовал несколько приложений на разных заказчиков.
  6. Познакомился с концепцией SPA и класического сайта.
  7. Научился работать с Базами данных.
  8. Научился разворачивать приложения на PHP в ручную.
  9. Научился работать с системами контроля версий (установка/использование).
Высшее образование
Казанский государственный технический университет им. А.Н. Туполева; КАИ
Казань
Факультет: Технической кибернетики и информатики
Сентябрь 2008—Август 2012 (3 года и 11 месяцев)
Бакалавр техники и технологии ЭВС.