Английский язык на уровне Upper Intermediate.
Люблю даже в свободное от работы время поковырять что-нибудь новое или давно забытое старое, иногда и там что-то интересное может быть.
Больше всего люблю именно frontend за то, что могу увидеть результат своих действий практически мгновенно. Нужны лишь браузер и пустой текстовый файл.
В свободное время встречаюсь с друзьями, играю на гитаре, online-игры. Очень люблю путешествовать.
ЧАВО
Q: Какие самые сложные/интересные/важные задачи ты решал?
A: Ответ можно разбить на несколько: задачи в менеджменте людьми/управлении проектом, в программировании.
В менеджменте/управлении проектом:
В программировании:
Q: Что самое важное в работе?
A: Для меня есть два столпа, на котором строится все остальное: заниматься тем, что приносит пользу, а также команда, с которой мы на одной волне.
Причем не обязательно, что у проекта должна быть многомиллионная аудитория. Важно, что работа делается для кого-то, есть обратная связь, что реальные проблемы решаются. Это позволяет не просто делать тикеты, а именно вникать в суть проблем. Ну и работать хотелось бы в команде единомышленников. Кто поддерживает такой подход. Техническая составляющая всегда вторична.
Большую часть времени работы в 2GIS я занимался Online версией (2gis.ru, urbi.ae и т.п.) Online 2GIS — это изоморфное приложение, в основе сервер на ExpressJS + ReactJS + Typescript + разные эксперименты по работе с запросами данных (redux, react-query).
На данный момент — Lead frontend в команде frontend-разработчиков. Занимаемся разработкой сервиса, который предоставляет нашим пользователям инструменты по построению разных типов пространственного анализа данных, чтобы помочь ответить на различные бизнес-вопросы типа: где открыть бизнес А, в какой точке города есть необходимость в дополнительной инфраструктуре (больницы, школы и т.д.).
Проект закрыт регистрацией https://pro.urbi.ae, но всегда можно запросить demo-доступ.
На данный момент отвечаю в проекте за:
Не все тащу на себе, конечно же. Отдельные части делегируются ребятам в команде, потому как могу им всем доверять)
Технически стек похож на 2GIS Online, только мы в основу взяли NextJS (правда от него уже мало что осталось) + наша 3d-карта на WebGL + DeckGL для различных визуализаций на карте.
Далее о скилах подробнее.
SoftSkills
Со стороны работы с людьми.
За время работы в 2GIS успел позаниматься развитием джунов до самостоятельных разработчиков (middle+). Некоторые из них уже сейчас имеют своих подопечных. За время работы со своими ребятами понял, что лучший подход по работе с людьми — это искренность, умение выслушать и понять, предложить вариант решения. И обычно решением занимается сам подопечный.
Провел десятки собеседований, как в нашу команду, так и в смежные команды.
Со стороны работы над задачами.
В 2GIS распространена практика, когда из разных команд выделяются ответственные за какую-либо новую функциональность в продукте. Эти ответственные занимаются декомпозицией фичи в рамках команды (иногда и вне ее), следят за выполнением, хотя чаще всего выполняют задачу сами.
На данный момент я готов работать с задачей с очень маленьким набором входных данных. То есть, могу выяснить все необходимое, чтобы задача была выполнена: выяснить, что на самом деле требуется, декомпозировать до максимально понятных маленьких кусочков, делегировать выполнение, синхронизировать внешние зависимости, если они есть и т.д.
Иногда рассказываю доклады внутри компании и снаружи. Например вот из последнего: Семь раз отмерь, один раз отправь про то, как и зачем стоит уменьшать размер JS-бандла на бою.
Hardskills
Как frontend разработчик в основном использую React. Но для себя пробую и другие популярные решения. На данный момент активно разбираюсь с 18 версией React, много там вкусного появилось. Тут можно наблюдать за этим.
Полюбил typescript, чувствую себя «голым» без него)
Для тестирования в 2GIS используем Jest. Но для своих проектов выберу mocha + sinon. Как по мне, Jest слегка монструзоен, а с typescript еще и работает весьма медленно. Но для работы в большом проекте Jest предпочтительнее, так как множество вещей у него доступно из коробки, есть стандартные подходы к тестированию. В 2GIS уделяем особое внимание тестам. При этом стараемся не писать тесты ради тестов. Важно покрыть именно поведение, функциональность кода, а не просто пройтись по веткам в условиях и т.п. В 2GIS пишу Unit'ы. и интеграционные тесты.
Иногда занимаюсь проектами с классическим backend'ом. Обычно это либо какие-либо утилиты на NodeJS, которые должны быть доступны по API, либо классическая раздача JSON'ов.
Пример первого проекта — генерация PDF-ок по каким-либо входным данным. Например, генерация рекламных материалов. API + утилита на основе puppeteer. Плюс еще и конвертация всей цветовой палитры в CMYK. Все же потом это все в печать в типографию идет.
Пример второго проекта — сервис раздачи новостей о продукте. Тут уже это классический REST API.
Для своих проектов для backend части использую Golang (все же нет у меня столько денег, чтобы сервер на NodeJS держать для pet-проекта). Golang нравится, backend'ы писал в основном с нуля, без каких-либо фреймворков. Максимум — chi для роутинга. Делал так, чтобы максимально разобраться в вопросе.
Также не чужд мне и python. Хотя его я выберу только в том случае, если не будет альтернатив.
DevOps часть
Docker — открытие 2019 года для меня. Теперь с ним не расстаюсь. nginx для локальной разработки в нем, база данных для локальной разработки в нем — все в нем =) В 2GIS используем k8s. Тут я только пользователь, никогда сам не разворачивал k8s-кластер сам.
Мой любимый стек технологий
В общем виде, если потребуется сделать прям сейчас классический проект с front и backend частью, то поступлю так (опишу то, с чем мне комфортной работать):
Golang + PostgreSQL (как мультипарадигменная БД) на backend-части
React + redux (для состояния приложения) + react-query (работа с внешними API) + css in JS на фронте. Возможно возьму NextJS. Готов делать на этом стеке как чисто клиентское приложение, так и изоморфное.
Тестирование — mocha + sinon || Jest для Unit-тестов. + cypress
Деплой с помощью Docker + Docker swarm на сервере.
Логирование — filebeat для сбора логов с docker'а и отправка этого всего дела в ELK или Grafana.
Конечно, все будет зависеть от специфики проекта. Но для типового я выберу то, что описал выше. То есть с этими технологиями я чувствую себя комфортно.
Разное
Также, во время работы в 2GIS разработал фреймворк для сборки проектов на —Gulp — TARS. Сейчас проект уже не развивается, но в 2017-2019 годах проект был весьма популярен. Даже были вакансии, в которых TARS был необходимым навыком.
Итого
За время работы в 2GIS разработал и выпустил в бой (чисто мои сервисы, в разработке которых не участвовал никто, кроме меня) 3 сервиса (front + back), более 10 сайтов (чистый front) различной сложности, участвовал в разработке и релизе мобильной версии 2GIS online и редизайна десктопной версии (большая часть всей моей работы в 2GIS). В качестве ведущего разработчика довел со стадии прототипа до релиза сложный гео-аналитический сервис. Провел от джуна/стажера до мидла больше 5 человек.
Разработка Frontend-части городских порталов. Сделал первый адаптивный сайт НГС — info.ngs.ru. Позже сделал еще и первый адаптивный новостной портал для Самары — samara24.
Основной командой была auto.ngs.ru Крайне прогрессивное web-приложение для своего времени. Это было время backboneJS. Уже тогда у нас были механизмы генерации HTML на клиенте из ответов нашего сервера.
Тогда я погрузился в JavaScript серьезно. Перестал быть просто JQuery-программистом.
Также успел сделать браузерное расширение для проекта https://pogoda.ngs.ru/.
Front-end + wordpress development.
Вот сайт-портфолию где можно ознакомиться с моими проектами: http://artmalko.ru/
Обязанности:
- Обслуживание техники на площадках
- Закупка оборудования и расходных материалов