Профессиональные навыки

Бэкенд

Хорошее знание языка Ruby и фреймворков: Ruby on Rails, Sinatra.

Большой опыт работы с библиотеками:

  • аутентификация: Devise, Sorcery, OmniAuth;
  • авторизация: CanCan, Pundit;
  • загрузка файлов: CarrierWave, Paperclip;
  • фоновые задачи: ActiveJob, Sidekiq;
  • интерфейс администратора: ActiveAdmin, Administrate, RailsAdmin;
  • внешние сервисы: Fog, Faraday, Her;
  • декораторы: Draper;
  • работа с XML/HTML: Nokogiri;
  • базы данных: Mongoid;
  • JSON API: Grape, Jbuilder, ActiveModel::Serializers, Rabl.

Опыт разработки на Node.js с использованием фреймворка Express.

Базы данных

С 2012 года, в качестве СУБД использую PostgreSQL, до этого работал с MySQL. Из NoSQL решений предпочитаю использовать Redis, есть опыта работы с MongoDB и Memcached.

Реализовывал полнотекстовый поиск через Sphinx.

Фронтенд

Хорошие знания HTML5, CSS3 и JavaScript, в проектах использую Slim/Haml и Sass. Вместо чистого JavaScript, предпочитаю использовать CoffeeScript в связке с jQuery.

Имеется опыт работы со следующими фреймворками:

  • Фронтенд: Twitter Bootstrap, Zurb Foundation, Semantic UI;
  • JavaScript: Angular.js, Sencha Ext JS.

Тестирование

Активно применяю BDD при разработке. В качестве инструментов использую RSpec, Capybara (Selenium, PhantomJS), FactoryGirl, Parallel tests. Для приемычного тестирования API и создания документации, использую RSpec API Doc Generator. Есть опыт работы с TDD и TestUnit.

Администрирование

Большой опыт работы с ОС семейства Unix: OS X, Linux (Gentoo, Debian, RHEL, Ubuntu), FreeBSD:

  • установка с нуля, настройка сети, сборка ядра (Linux);
  • установка и настройка веб-серверов (Nginx, Apache, Phusion Passenger);
  • установка и настройка БД (PostgreSQL, MySQL, MongoDB);
  • настройка сервисов мониторинга (Monit, Nagios);

В качестве веб-сервера предпочитаю использовать Nginx в связке с Phusion Passenger или Unicorn;

Развертывание

Использую Capistrano 3 в качестве основного инструмента для развертывания приложения на сервере. Есть небольшой опыт работы с Chef. Для непрерывной интеграции использую TeamCity, GitLab CI, Travis CI и Codeship.

Рабочий процесс

С 2014 года работаю по методологии Scrum (удаленно):

  • планирование спринтов через Redmine;
  • ежедневные совещания по Skype, общение через HipChat, Telegram;
  • ежемесячный показ через join.me.

Экстремальное программирование (XP) применяю с 2013 года:

  • парное программирование по Skype;
  • непрерывная интеграция через TeamCity, GitLab CI, Travis CI и Codeship;
  • разработка через тестирование c помощью TestUnit и RSpec.

В качестве системы контроля версий использую Git (rebase, stash, filter-branch, cherry-pick, submodules, reflog, format-patch). В прошлом есть опыт работы с Subversion.