Обо мне

Специализируюсь на разработке web приложений backend и frontend. Люблю свою работу, стараюсь не отставать от трендов, изучать новые подходы и технологии в области web разработки и не только. 

Не зацикливаюсь только на PHP (хотя последние изменения 7 версии очень нравятся), смотрю и пробую другие языки и технологии, такие как Java, Rust, Go, JS и NodeJs

Уверенный пользователь *nix, настройка Apache/nginx

Backend

Основной стек: PHP5/7, Symfony2/3, Yii1/2, GIT, MySQL, mongodb, NodeJs

Все новые проекты, как правило, разрабатываю с использованием Symfony (в зависимости от требований), в планах подтянуть Laravel (на данный момент не использовал еще в боевых проектах).

Имеется опыт использования HTTP протокола для интеграции REST API, SOAP

тестирование: Unit with codeception

применяю: OOP, Design Patterns, SOLID,  DRY

IDE PhpStorm от JetBrains

Frontend

Уверенно владею native JS (прототипы, области видимости и др.), но в зависимости от ситуации стараюсь использовать новые версии (es2015, es6) через babel transpiler или TypeScript (что конечно лучше но не всегда проще интегрировать в уже рабочий проект)

Верстаю по БЭМ

LESS/SCSS -> CSS

сборку веду через gulp, последнее время больше через webpack

знаком с основными JS Frameworks - angular (1 версии исп. в рабочих проектах и др. версии для ознакомления), пробовал React (всегда смогу подтянуть если понадобится)

Deploy:

писал свои велосипеды, использовал Jenkins CI, для разработки использую vagrant, пробовал Docker

Профессиональные навыки
PHPYii frameworkGulpLessSymfonyJavaScriptAngular.jsJQueryCSSNode.js
Опыт работы
Август 2015 — Сентябрь 2017 (2 года и 2 месяца)
Taskrealtor
Full-stack web Developer
Минск
Обязанности и достижения

Подключился к проекту taskrealtor.com в период разработки, уже было сделано 50% сервиса.

Работал удаленно, полный рабочий день.

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

Проект был написан на PHP5 с использованием Yii2 framework, GIT для контроля версий и деплоя (push/pull). На frontend использовался AngularJS 1.* совместно с native JS (es5)

Backend:

Исходный код был написан с использованием стандартных/рекомендуемых принципов YII, что позволило как можно скорее приблизится к релизу, но при этом сильно повлияло на кодовую базу проекта.  AR модели разрослись до неимоверных размеров и "протекали" по всему коду, контроллеры и представления напрямую работали с моделями. Такое поведение вносило неразбериху, код дублировался в backend и console части проекта. Именно этот момент стал самым сложным, куча мест где используется модель, небольшое изменение в модели влияло на другие места системы совершенно "магическим" образом. Естественно не было совершенно никакого тестирования.

В итоге были переписаны самые критичные места системы (регистрация агентства, подача заявки, поиск и др.).  

Произведено разделение бизнес логики от хранения и представления (использовался CQRS в частности command bus). 

Добавлены транзакции и исключения. 

Внедрение зависимостей с использованием dic yii

Все вышеперечисленные изменения позволили проводить модульное тестирование (unit в codeception), написаны тесты для основных частей системы.

Frontend:

CSS  и JS файлы разрослись до огромных размеров, было принято решение подключить сборщик gulp.

LESS -> CSS -> minified

es2015 (with babel and webpack) -> js ->minified

тестирование фронтальной части сайта через headless browser PhantomJS with CasperJS (что намного быстрее чем через selenium)

Deploy:

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

Для решения этого вопроса сначала был написан небольшой nodejs демон, который дергался из bitbucket при push -е в dev ветку разработчиками и запускал gulp deploy сценарий. В последствии был настроен полноценный CI через jenkins. Это решение позволило программистам при отправке своих наработок в дев ветку сразу же видеть ошибки и запускать процесс обновления на тестовой версии сервиса.  

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

Январь 2010 — Декабрь 2015 (6 лет)
Интернет портал "Большой Новосибирск"
PHP программист/технический директор
Москва
Обязанности и достижения
Работа в интернет-портале новосибирска http://megansk.ru Официальная должность технического директора подразумевала под собой не только программирование, но и решение вопросов касающихся хостинга, дизайна, составления документации и ТЗ. Эта работа заставила выйти из зоны комфорта разработчика. Мне приходилось контактировать с людьми, ставить задачи (не всегда технические), брать ответственность за архитектуру портала и сайтов сателлитов.В итоге портал был полность переписан на Yii framework, БД оптимизирована. Сайт стал лучше виден в поиске, т.к. время ответа от сервера сократилось до нескольких милисекунд, в противовес 3-5 секундам а иногда и больше на старой версии.Пареллельно начинаю развивать свои проекты и принимаю участиве в других.
Декабрь 2006 — Декабрь 2009 (3 года и 1 месяц)
ЗАО "Маяк" ГК F1
инженер-программист
Новосибирск
Обязанности и достижения
Принят в информационно-аналитический отдел.Занимался разработкой и поддержкой сервисов и сайтов компаний, все сайты работали на самописной CMS (PHP). На этом месте получил основные навыки разработки под WEB. Курировал мою деятельность опытный программист, начал брать первые заказы на фриланс и получать доп. доход, что являлось доп. мотивацией к дальнейшему погружению в область программирования под WEB.
Сентябрь 2006 — Ноябрь 2006 (3 месяца)
ООО "УК Свой Дом"
инженер-программит
Новосибирск
Обязанности и достижения
Взяли программистом, со временем оказалось, что надо решать вопросы обслуживания парка ПК и их пользователей (эникейщик), что меня в целом не удовлетворяло, т.к. надо было нарабатывать опыт в области программирования.Посему задержался тут не долго.
Высшее образование
Сентябрь 2001 — Июль 2006
ВСГТУ
Электротехнический; ЭТФ
Улан-Удэ
Специализация и достижения
Специальность: программное обеспечение вычислительной техники и автоматизированных систем Дипломный проект : WEB приложение по учету компьютерной техники на предприятии, связка Applet+Servlet (JAVA).