A skilled Ruby on Rails developer is needed to expand the software development team for our client. Working on internal software, this individual will build features to help the product grow and evolve.
Responsibilities:
* Design, build, and maintain efficient, reusable, and reliable Ruby code.
* Integrate data storage solutions (including databases, key-value stores, blob stores, etc.)
* Integrate user-facing elements developed by front-end developers with server-side logic.
* Identify bottlenecks and bugs, and devise solutions to these problems.
* Maintain code quality, organization, and automation.
Required Skills:
* Experience working with Ruby on Rails (5+ version) and a deep understanding of all its components.
* Ruby programming skills, including object model, methods/constants lookup, ruby threads, GIL, ruby dynamics, built-in classes, and modules (Enumerable, Enumerator).
* Understand Test-Driven Development (TDD) and Behavior-Driven Development (BDD) practices, and be able to test Rails applications in depth, including common gems (rspec, capybara, factory bot, database cleaner, shoulda matchers, webmock, timecop, simplecov, faker, vcr).
* Understand common Ruby patterns (decorator, factory, singleton, observer, iterator, command, chain of responsibility).
* Active Record (pattern itself, conventions, migrations mechanism, types of associations, scopes, locking).
* Object-Oriented Design (SOLID, GRASP, POODR).
* PostgreSQL (MVCC, data types, security, reliability, disaster recovery, concurrency, performance, indexing).
* SQL (without ORM); PL/pgSQL would be a plus.
* Git (without GitKraken, SmartGit, SourceTree).
* Basic Network Engineering (TCP/IP, NAT) and protocols from layer 7 (HTTP, HTTPS, SMTP, FTP, SSH, DNS).
* Security (sessions mechanism, cross-site request forgery, cross-site scripting, session hijacking, SQL Injection, CSS Injection, feature policy, content security policy http headers).
* Linux administration skills.
* Key Value Stores (Redis, Memcached).
* Experience with AWS or other cloud services (Google Cloud, MS Azure, Heroku, Digital Ocean).
* Experience with Docker.
Bonus Skills:
* Experience with orchestration tools (Docker Swarm or K8s).
* Experience with message queue and streaming systems (RabbitMQ).
* Experience with GraphQL.