Обо мне

Профессиональный Ruby-on-Rails / React разработчик. Занимаюсь проектами в сфере электронной коммерции, проектированием и реализацией REST API, стараюсь посвящать часть времени open source и обучению других программистов.

Аккаунт на Github: https://github.com/kimrgrey.

Аккаунт на StackOverflow: http://stackoverflow.com/users/1222686/kimrgrey

Проекты, над которыми я работаю в свободное время:

friendly_id - вхожу в команду мейнтейнеров гема, отслеживаю pull request-ы, отвечаю на возникающие вопросы, помогаю с решением проблем, исправляю ошибки и так далее.

rathole.io - платформа для ведения блогов. Исходно я запустил этот проект как личный блог и использовал его для тестирования новых версий Rails, гемов, тех или иных подходов к разработке. Потом туда пришли люди =)

    citi-english.com - небольшая e-learning площадка, на которой публикуются видеоуроки по различным нюансам английского языка и анонсы разговорных клубов в различных антикафе Санкт-Петербурга. Родилась из дружбы с несколькими native speaker преподавателями, желающими поделиться накопленными знаниями и стать ближе к своей аудитории. Скоро выйдут разработанные моими друзьями приложения для Android / iOS.
      Профессиональные навыки
      Участие в профессиональных сообществах
      Опыт работы
      Июль 2016 — по настоящее время (1 год и 5 месяцев)
      Gett
      Software Engineer
      Тель-Авив
      Обязанности и достижения

      Я начал работать в консалтинговой компании Sphere Software в Апреле 2016 года, а уже с Июля 2016 года подключился к работе в Gett по контракту от этой компании.

      Больше про Gett: https://gett.com.

      В Gett я в основном отвечал за разработку подсистемы, которая называется Charging. В нее входят несколько сервисов, объединенные, по сути, одной целью - ответить на вопрос сколько стоит заказ, исходя из тех или иных его параметров. Поскольку вне зависимости от того, что происходит в системе, это тем или иным образом отразится на финальной стоимости заказа, работа в команде Charging дает очень широкое и разнообразное представление о том, как работает все в целом.

      Если добавить немного деталей:

      - Я отвечал за разработку подсистемы расчета стоимости платных дорог для заказа. До введения этого механизма в строй водители самостоятельно добавляли в заказ проезд по платным дорогам. Это, очевидно, ведет к большому количеству фрода и ошибок. Расчет платных дорог позволил разметить въезды и выезды, понять, что маршрут поездки проходил через них, и автоматически посчитать дополнительную стоимость. В конечном счете, это используется не только для расчета непосредственно платных дорог (таких как  Lincoln Tunnel в NY), но также для определения стоимости выезда за определенные регионы (например, за МКАД в Москве)

      - Занимался разработкой сервиса, отвечающего за конфигурирование и расчет различных промо акций для водителей. Типичный пример такого промо звучит примерно так: "Завершите 50 поездок в период с 10 по 20 мая, получив при этом рейтинг не ниже 4.8, и мы предоставим вам выплату дополнительных 10% к стоимости каждого заказа с 20 по 30 мая". Это подразумевает под собой довольно сложный UI на React с бэкендом на Go, который ведет учет показателей и считает дополнительную стоимость для каждого заказа на основе информации об уже достигнутых целях за прошедшие периоды.

      - Принимал активное участие в разработке подсистема расчета стоимости остановок, которая позволяет водителю размечать незапланированные остановки в пути и получать за них дополнительные деньги. Например, если клиент по дороге из пункта A в пункт B попросил заехать в некоторую точку, которая не лежит на исходном маршруте, финальная стоимость заказа должна состоять из исходной ожидаемой цены + стоимости отклонения по времени и расстоянию.

      Апрель 2016 — по настоящее время (1 год и 8 месяцев)
      Full Stack Developer
      Санкт-Петербург
      Обязанности и достижения

      Разработка и поддержка сервиса, позволяющего автоматизировать корпоративные процессы в крупных компаниях: различные опросники и ревью, получение фидбэков от руководства и коллег, системы поощрений и так далее. Подробнее - http://chairlift.io/.

      Что именно я делал:

      - миграция клиентской части приложения с Polymer (медленно, слабо поддерживается, плохо развивается) на React (стильно, модно, молодежно и, если серьезно, то действительно очень удобно);

      - разработка части приложения, которая позволяет пользователям обмениваться сообщениями и файлами между собой (React + Redux + Rails);

      - разработка нескольких сложных страниц с графическими отчетами (React + Chart.js) и большим количеством статистической информации на квадратный пиксель экрана;

      - разработка расширения для Chrome: написано с использованием React, встраивается в интерфейс Gmail, позволяет использовать некоторые функции сервиса прямо из почтового ящика. Активное взаимодействие с back-end, вход через аккаунт Google;

      Сентябрь 2014 — Март 2016 (1 год и 7 месяцев)
      ТоМесто
      Ruby-on-Rails Developer
      Санкт-Петербург
      Обязанности и достижения

      Разработка и поддержка сервиса бронирования столиков в ресторанах. Подробнее можно посмотреть тут: https://tomesto.ru/

      Что именно я делал:

      - доработка внутренней системы автоматизации процессов компании (работа с договорами, представителями заведений, счетами, etc);

      - разработка системы регистрации пользователей: подтверждение номера телефона через СМС, подключение профилей в социальных сетях;

      - разработка подсистемы сбора отзывов (приглашение через смс, опрос посетителей при повторных визитах на сайт, комментарий представителей заведения);

      - интеграция сервиса ipegeobase для определения местоположения пользователя по IP;

      - разработка системы двойной авторизации для сотрудников (пароль + смс-код) + журналирование активности пользователя (устройство с которого выполнялся вход, IP адрес, страна, город, регион);

      - постобработка данных о пользователях и бронировании через сервис dadata.ru (с учетом устойчивости к отказам внешнего API);

      - разработка подсистемы работы с изображениями (асинхронная загрузка, сортировка и категоризация фотографий, их постобработка, кроп и сжатие)

      - доработка API для интеграции с приложением для iOS (авторизаця, синхронизация заявок, избранное);

      - разработка афиши мероприятий для заведений (поиск и выборка по времени проведения, повторяющиеся по расписанию события, реализация промо-акций);

      - проведение обновления Rails с версии 3.2.x, на которой проект работал исходно, до версии 4.2.x - текущей на момент обновления

      - проведение обновления ElasticSearch с версии 0.90 до версии 1.7

      Август 2013 — Сентябрь 2014 (1 год и 2 месяца)
      Vivanti
      Ruby-on-Rails Developer
      Санкт-Петербург
      Обязанности и достижения

      Разработка и поддержка сервиса автоматизации маркетинговых процессов в фармацевтических компаниях. Подробнее можно посмотреть здесь: http://vivanti.ru/ru/clm

      Что именно я делал:

      - проектирование и разработка CRM (медицинские представители, контакты, организации, визиты и пр.);

      - автоматический zero-downtime деплой и мониторинг приложения на сервера AWS;

      - разработка масштабируемого API для синхронизации данных между сервером и iPad;

      - разработка прототипа системы удаленного проведения презентаций на базе Web RTC;

      - проектирование и реализация системы для конфиргурирования интеграции CRM с внешними системами (например, SalesForce);

      - проектирование и реализация подсистемы автоматической проверки загружаемых презентаций на соответствие формату и правилам оформления;

      Август 2012 — Февраль 2013 (7 месяцев)
      ООО "Интернет-Пеликан"
      Ruby-on-Rails Developer
      Тверь
      Обязанности и достижения

      Проект, созданный небольшой географически распределенной командой разработчиков, представлет из себя торговую площадку для продажи и покупки оборудования для ресторанов, кафе и баров. Подробнее можно посмотреть здесь: http://ipelican.com

      Что именно я делал:

      - разработка серверной составляющей на RoR (Rails 3.2.x + PGSQL + Redis + Spree + DelayedJobs + Devise + OmniAuth + CanCan + StateMachine + Solr);

      - проектирование и разработка версионируемого REST API;

      - разработка подсистемы импорта данных о товарах и услугах, а также миграции пользователей и компаний из сторонних источников;

      - анализ и оптимизация кода (New Relic), а также его поддержка;

      - покрытие системы автоматическими тестами (RSpec + Cucumber);

      Январь 2011 — Август 2012 (1 год и 8 месяцев)
      Accenture
      Java Developer
      Тверь
      Обязанности и достижения

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

      Что именно я делал:

      - поддержка и развитие готовой банковской системы (Oracle DB + JAX-RS + jQuery);

      - сборка и деплоймент проекта при помощи Maven + разработка плагинов для Maven;

      - управление конфигурацией сервера приложений (Oracle AS, Jetty, IBM WS);- управление небольшой командой разработчиков (3 человека);

      - планирование и осуществление миграции логики из БД на уровень Java;- интеграция со сторонними банковскими системами через JMS (IBM MQ);

      Июнь 2010 — Январь 2011 (8 месяцев)
      НИИИТ
      Программист C++/Qt
      Москва
      Обязанности и достижения

      Разработка и сопровождение автоматизрованной системы управления.

      Что именно я делал:

      - разработка распределенной системы автоматизации (С++/Qt);

      - разработка графического интерфейса пользователя (KDE SDK);

      - контроль целостности системы (monit);

      - разработка системы мониторинга подключаемых устройств(udev);

      - разработка системы журналирования событий;

      - разработка фреймворка для формирования и отображения диаграмм Ганта;

      Декабрь 2008 — Январь 2010 (1 год и 2 месяца)
      ЗАО "МАКС"
      Системный администратор
      Москва
      Обязанности и достижения

      Все начинают с эникея, не правда ли? =)

      Основные обязанности:

      - поддержание работоспособности небольшой корпоративной сети (9 компьютеров + сервер под управлением Linux);

      - обслуживание оргтехники и настройка специального программного обеспечения (IBM Lotus и системы страхования “Юникус”);

      - согласование расходов на ПО и оргтехнику с руководством комании

      - покупка и установка техники;

      Высшее образование
      Сентябрь 2011 — Июль 2013
      ТвГУ
      Прикладной математики и кибернетики
      Тверь
      Специализация и достижения
      Магистр информационных технологий
      Сентябрь 2007 — Июль 2011
      ТвГУ
      Прикладной математики и кибернетики
      Тверь
      Специализация и достижения
      Бакалавр информационных технологий