Обо мне

Выразительность Ruby (и факт того, что он был создан уже после Python, Perl, etc., что позволило исправить допущенные ошибки и вобрать наилучшее) позволяет легко и быстро писать практически что угодно. От инфраструктурных веб-сервисов (предпочитаю Sinatra) до вызова WinAPI и Applescript функций, от Selenium-тестов (предпочитаю Capybara) до генерации графики (SVG, пиксель-арт, процедурная; имеются vips-биндинги). От генерации конфигов и парсинга как текстовых, так и бинарных данных из других программ до ИИ для игр и соревнований по ИИ. На Ruby легко прототипировать и переписать на другой ЯП, если возникнет необходимость.

Если моей программе не хватит производительности, и если алгоритмически оптимизировать будет уже некуда, перепишу на C. Также, что естественно для нашего времени, имею некоторый опыт с Javascript (jQuery, Chrome extensions, Google Apps Script). Иногда с удовольствием кодил на Wolfram Mathematica (Wolfram Language), потому что придаю большое значение визуализации данных. Несколько лет работал с Python, но будем считать, что я этого вам не говорил.

Офисную работу начинал с автоматизации тестирования, но стараюсь находить себе другие применения. Предпочитаю Mac OS. Умею PCRE, XPATH, git, SVN, HAML и прочие буквосочетания.

В октябре 2008 занял второе место на городской олимпиаде по программированию. В ноябре 2013 удержался в топ-200 на Mail.Ru Russian AI Cup. Когда-то решил 100 задачек на Project Euler.

При выборе инструмента логику ставлю выше религии, аминь. Жизненное кредо -- постоянно задаваться вопросом "Зачем?".

Считаю профессионализмом и залогом качества не добавлять в работу лишнюю технологию/парадигму/кучу_кода, пока не будет обосновано (и не просто предложено, а будет получен и проанализирован фидбек от людей с экспертизой/опытом в обеих практиках, между которыми осуществляется выбор), что от этого будет временная/количественная/качественная польза не только сегодня, но и в определенных временных пределах.

Участие в профессиональных сообществах
Опыт работы
Октябрь 2015 — Июнь 2017 (1 год и 9 месяцев)
Aitarget
программист
Москва
Обязанности и достижения

Краткий список использованных технологий: Ruby, Jenkins, Sinatra, RSpec, Selenium, git, Google Cloud Platform, Google Apps, Stackdriver.

Сначала покрыл большую часть функционала основного продукта Selenium-тестами, что являлось моей первичной обязанностью. Участвовал в дизайне UI.

Внедрил Continuous Integration, этап автоматизированного приемочного тестирования. Придумывал и реализовывал инфраструктурные сервисы (иногда с веб-интерфейсом на Sinatra) для слежения и автоматизации CI-процессов. Интегрировал Jenkins, Gitlab и Slack. Построенная система также генерировала Changelog, который использоваться менеджерами для подготовки новостных рассылок.

Автоматизировал для бухгалтерии обработку инвойсов через парсинг PDF-ок и Google Apps Script, а позже -- GMail/Drive REST API.

По факту был вынужден брать на себя такие обязанности руководителя, как слежение за состоянием веток репозитория и процессом мержей, приучение молодой команды правильно пользоваться git-ом, мержиться без конфликтов, писать юнит-тесты, functional и defensive programming.

Придумал и реализовал более удобную альтернативу Facebook Graph API Explorer-у. Вариация в виде CLI позволяла еще и предоставлять клиентам бета-фичи, доступные только Facebook Partners, в кратчайшие сроки -- еще до реализации в основном продукте компании.

Придумал и реализовал систему премодерации пользовательской рекламы, внедрив Google Cloud Vision для автоматического обнаружения контента, который с высокой вероятностью будет забракован Facebook-ом. Точность предсказания -- 98% (человеческая точность -- 60-70%). Подготовил об этом небольшой доклад и выступил с ним на Siberia GDG DevFest 2016 -- https://drive.google.com/file/d/0B3BLwu7Vb2U-SVhKY... -- единственный технический доклад компании.

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

За полным отсутствием помощи, желания помогать и экспертизы у коллег и начальства, был вынужден разворачивать это все самостоятельно и отдельно -- на Google Cloud Platform, в результате, организовав многоуровневое бэкапирование и мониторинг на Stackdriver.

Был единственным, кто самостоятельно брался ревьюить чужой код на JS и PHP -- находил в нем ошибки.

Был единственным, кто помогал на Stack Overflow по теме Facebook Marketing API.

Октябрь 2014 — Апрель 2015 (7 месяцев)
Improve Media
программист
Москва
Обязанности и достижения

Краткий список использованных технологий: Ruby, Jenkins, RSpec, Selenium, git.

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

- восстановить и поддерживать автоматизированное тестирование

- наладить Continious Integration, интегрировав Jenkins, GitLab, Slack, почту и пр.

Достижения:

- восстановил unit-тесты, внеся дополнительные удобства в отчеты RSpec

- внедрил Capybara/Selenium-тесты основного пользовательского функционала сайтов InMyRoom.ru и FamilyBoom.ru

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

Август 2014 — Октябрь 2014 (3 месяца)
программист
Москва
Обязанности и достижения

Краткий список использованных технологий: Ruby, Selenium.

Внедрял автоматизированное тестирование web-интерфейса MasterPLC на Ruby+Selenium+Jenkins, убедив, что это удобней, чем предполагаемый изначально стек C#+TFS+MTM.
Апрель 2013 — Май 2014 (1 год и 2 месяца)
программист
Москва
Обязанности и достижения

Краткий список использованных технологий: Python, Jenkins, unittest, Selenium, Ruby, Sinatra, svn, git.

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

- автоматизация функционального тестирования Браузера

- покрытие ручных тесткейсов автотестами

- прочее облегчение жизни ручным тестировщикам

Достижения:

- разработал с нуля базовую библиотеку для написания автотестов Браузера

- автоматизировал их запуск и генерацию соответствующих отчетов

- постарался приучить коллег документировать сделанное

Апрель 2012 — Август 2012 (5 месяцев)
Программист, администратор Jira
Москва
Обязанности и достижения

Краткий список использованных технологий: Python, Jira, svn.

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

- поддержка стабильной работы Jira АСФК и нескольких других инстансов

- доработка функционала на Jython и Javascript

Достижения:

- уменьшил количество возникающих ошибок в работе внутренней Jir-ы в несколько раз

Апрель 2011 — Ноябрь 2011 (8 месяцев)
фриланс
программист Ruby/Python
Мелитополь
Обязанности и достижения
Обязанности: - писал парсеры всяких TSV/CSV/XML в сфере молекулярной биологии
Высшее образование
Январь 2006 — Январь 2009
МФ ТНУ
Экономико-гуманитарный
Мелитополь
Январь 2004 — Январь 2006
СНТУ-Севастополь
Автоматики и вычислительной техники; АВТ
Севастополь
Рекомендательные письма
golovkov-andrey1
Системный администратор. • знакомый

Бородат.

Письмо написано 06 июня 2013 в 22:05