Профессиональные навыки
Бэкенд
Хорошее знание языка 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.