Персональная информация
Полное имя: | Курганов Александр Михайлович |
Дата рождения: | 28.02.1986 |
Email: | me@akurganow.ru |
Языки: | Русский (родной), Английский (выше среднего) |
Био
Занимаюсь веб разработкой за деньги с 2011 года, с 2013 на фултайме в компаниях, обожаю свою работу, но не люблю аутсорс, идеальным считаю работать над продуктом которым сам пользуюсь, логично, что чем больше экспертизы в продукте у разработчика, тем больше вовлеченность и лучше качество. Дизайн без данных считаю пустой тратой времени, если конечно речь не о прототипах и MVP, достаточные и правильные данные всегда подсказывают очевидные изменения в интерфейсе. Не могу назвать себя специалистом в анализе пользовательских метрик, но очевидные вещи могу разглядеть.
Дизайном стал интересоваться тогда же, когда и программированием, считаю их не отделимыми друг от друга, и дизайн кода и API тоже дизайн.
Считаю, что если программист старается писать совсем без багов, то он излишне перестраховывается и слишком много дорогого времени тратит на перепроверки, программист обязан тестировать свой код, но это не должно занимать больше времени чем проектирование и разработка. Тестирование кода должно быть автоматизированным, но TDD не люблю, во время разработки стараюсь покрыть очевидно узкие и критичные места, после разработки те места, где возникали проблемы.
Конференции и митапы в последнее время разлюбил, возможно из-за того, что долго, с самого основания был организатором питерского сообщества spb.frontend(), сейчас в сообществе занимаюсь только поддержкой сайта на Gatsby.js. Был ведущим подкаста сообщества spb.frontend(), сейчас с подругой создаем свой подкаст не про программирование «Понаехали»
В свободное время катаюсь на сноуборде или на картодроме.
Опыт работы
-
UX Engineer, Team Lead JavaScript Developer в Финтех компании (NDA)
с марта 2018 по настоящее времяКомпания разрабатывает собственные решения для рынка криптовалют, я работаю на одном из многочисленных проектов компании, проект существует больше четырех лет я присоединился к команде когда проект уже был запущен
Сейчас я тимлид двух команд, мобильного и веб приложения, занимаюсь подготовкой релизов, декомпозицией задач и распределением задач между разработчиками, и конечно пишу код сам, бывает что приходится подключаться к задачам других разработчиков, когда у них что-то идет не по плану и не получается сделать задачу в адекватные сроки. Релизы каждую неделю, одна неделя веб приложение, другая мобильное, то есть у каждого из приложений цикл разработки две недели.Мобильные приложения:
Участвовал в дизайне и разрабатывал два мобильных приложения. В одном из них можно взаимодействовать с больше чем 300 валютами и токенами (получить, отправить, купить, узнать статистику), приложение переведено на 14 языков и поддерживает 15 фиатных валют, взаимодействует с нативными API (камера, пуш-нотификации, буфер обмена, inapp браузер), общается с сервером по WS, аутентификация с помощью JWT, авторизация через большинство популярных провайдеров (например Facebook и Google), собирается для iOS и Android и доступно в App Store и Google Play Market
Стейт редакса сохраняется в IndexedDB и шифруется ключом который хранится в secret storage устройства
Второе создано для работы только с одной валютой, из одних сорцов собирается 22 отдельных приложения с разными конфигами и разным набором фич, но в основном приложения повторяют функциональность основного.
Используемые технологии: Cordova, Webpack, TypeScript, PostCSS, React, Redux, Reselect, react-intl, onesky, bignumber.js
Веб приложение:
Полностью повторяет функциональность основного мобильного приложения. Написано на тех же технологиях и местами мы используем расшаренные куски кода для более удобной разработки. Отличия от мобильных приложений в том, что у веб приложения отличается дизайн и роутинг, приложение адаптивное, код сплитится в вендор чанк и по роутам. Используемые технологии: Webpack, TypeScript, PostCSS, React, Redux, Reselect, react-intl, onesky, bignumber.js
Сайт:
Также участвовал в дизайне и самостоятельно спроектировал и разработал маркетинговый сайт, сейчас разработку передал другой команде и вернулся к мобильным приложениям. Сайт собирается в статические файлы из собственного, отделенного от основного продукта API (страницы приложений, блог, лендинги) все редактируется в собственной админке и весь контент хранится в БД на собственных серверах, раздается через CDN. Сайт также переведен на 14 языков, больше 20 страниц приложений, лендинги, мультиязычный блог, у каждой страницы есть AMP версия, на некоторых страницах есть пасхалки (такие вещи для маркетинга считаю обязательными), например на страницах приложений вместо статичного скриншота приложения, я сделал динамический svg с реальным временем и датами и реальными курсами валют
Используемые технологии: Gatsby.js, React, PostCSS, react-intl, onesky, bignumber.js, Nest.js, Rx.js -
Senior JavaScript Developer в Uploadcare
с августа 2016 по март 2018Компания занимается хранением, обработкой и раздачей файлов
Я занимался проектированием и разработкой нового сайта компании, старый был монолитом на django и был сильно привязан к бэкенду, нельзя было зарелизить правки фронтенда не зарелизив бэкенд, я разрабатывал новый фронтенд с новым дизайном, новый сайт работает на React, и общается с бэком по JSON API, Сайт работает как SPA с SSR на Express.js, документация основного продукта собирается в статичные файлы из Markdown в отдельном репозитории, и инжектится в реакт на сервере и на клиенте, что позволяет сэкономить на размере бандлов и передаче данных на клиент.
Более подробно об архитектуре в статье о стеке используемом в компании -
Senior JavaScript Developer в Студии веб-разработок Михаила Кечинова
с августа 2015 по август 2016Студия веб-разработок Михаила Кечинова занималась аутсорсом полного цикла разработки и менеджмента проектов для компаний и стартапов.
Я пришел в компанию для работы над большим образовательным проектом. Проект использовал Ruby on Rails, PostgreSQL на бэкенде и React, Redux на фронтенде, общение между клиентом и сервером осуществлялось по веб-сокетам с помощью библиотеки Faye. Я работал над архитектурой более 20 различных типов упражнений для составления курсов, состояние каждого упражнения хранилось в localStorage, для упражнений использовались самые различные технологии и API, аудио упражнения и работа с текстом, проверка аудио и текста и подсветка нескольких типов ошибок и комментариев от преподавателя, аудио и видео с разметкой текущей фразы в тексте и видео с классическими субтитрами, drag-and-drop, canvas. Личный кабинет с настраиваемыми динамическими виджетами. Встроенный мессенджер для диалогов с преподавателем и чатов учебных групп.
В дополнении к основной работе, преподавал JavaScript в Санкт-Петербургском Политехническом Университете как специалист студии и обучал двух интернов в студии. После того как закончил преподавать занимался менторством, девушка которой я помогал изучать фронтенд, сейчас успешно устроила свою фронтендерскую карьеру в одном из крупнейших банков России и стала организатором митапов и конференций PiterJS. -
JavaScript Developer в Amplifr
с июля 2013 по август 2015Amplifr был SaaS платформой для музыкантов, актеров, политиков и других медийных персон. После пивота мы отказались от огромной части приложения и теперь Amplifr это приложение для публикаций и анализа для социальных сетей. Я работал в распределенной по миру команде, разрабатывал как основное приложение так и работал над созданием и поддержкой сайтов клиентов компании на собственной SaaS платформе. Работал со многими дизайнерами клиентов помогая менять дизайн для лучшего UX. Также немного был кем-то вроде аккаунт менеджера, собирал фидбек от пользователей платформы и агрегировал его в рекомендации по дальнейшей разработке продукта.
Некоторые достижения:
- Формы с анимациями и дизайном похожим на Material еще до презентации стиля (jQuery)
- Кастомные валидации форм (на клиенте и на сервере) с обработкой серверных ошибок
- Хранение заполненных данных форм в localStorage и заполнение при возвращении к форме
- Интерактивная карта концертов музыкантов с возможностью голосовать за свой город и защитой от накруток (Yandex maps, geo location, jQuery, Ruby on Rails)
- Аудио и Видео плееры с использованием HTML Audio и HTML Video API
- Адаптивные галереи фотографий без использования сторонних библиотек
- Плагин для jQuery Pursuing Nav
- На одном из сайтов по непонятным мне до сих пор требованиям дизайнера почти все стандартные элементы форм, были заменены на кастомные, но с полной поддержкой всех возможностей стандартных (работа с клавиатурой, a11y)
-
Web Developer Фриланс
с сентября 2011 по июль 2013Разрабатывал сайты и онлайн магазины (например Официальный сайт исполнителя L-Tune, сайт книги Антона «Scut36» Волкова с предзаказами и оплатой, Официальный сайт и онлайн магазин исполнителя Ассаи) Разрабатывал модули для WordPress и WooCommerce (например платежный шлюз для Робокассы)
Ссылки
GitHub — https://github.com/Akurganow |
CodePen — https://codepen.io/Akurganow |
Выступление на РИТ++ 2017 — https://youtu.be/PUE6Avu1Yak |
Интервью для Хабрахабр 2017 — https://youtu.be/tmgex8T5zTA |