This company provide software to educational institutions. This software uses machine learning to identify a student's potential. The student's performance throughout school is then tracked against this for the purpose of highlighting when they dip below their own unique potential and may require some additional support. We recognise that each student's pathway through school is unique. Success is different for each student. Traditionally academic tracking is focused on both the high achievers and the students that require most support. Our software aims to ensure that every student gets this type of attention and no student gets missed in a busy school system. Over 300 schools are using this product.
We are looking for an experienced Ruby on Rails Developer to join our growing software development team. This person will work on the compny's software – adding features to constantly improve the product. This successful candidate will also have the opportunity to work on new innovative software and lead a software development team.
Design, build, and maintain efficient, reusable, and reliable Ruby code
Integration of data storage solutions (may include databases, key-value stores, blob stores, etc.)
Integration of user-facing elements developed by front-end developers with server side logic
Identify bottlenecks and bugs, and devise solutions to these problems
Help maintain code quality, organization and automatization
Experience working with Ruby on Rails (5+ version) and a deep understanding of all of its components.
Ruby, a deep understanding of its object model, methods/constants lookup, ruby threads and GIL, ruby dynamics (callable, runnable objects, callbacks, hooks, runtime introspection and so on).
Built in classes and modules (Enumerable, Enumerator), Forwardable and Comparable modules and such.
Need to understand TDD and BDD practices and be able to test Rails applications process in depth including all common gems (rspec, capybara, factory bot, database cleaner, shoulda matchers, webmock, timecop, simplecov, faker, vcr and so on).
Need to understand common ruby patterns (decorator, factory, singleton, observer, iterator, command, chain of responsibility and so on).
Active Record (pattern itself, conventions, migrations mechanism, types of associations, scopes, difference between optimistic and pessimistic locking).
Object-Oriented Design (SOLID, GRASP, especially POODR).
PostgreSQL (MVCC, data types, security, reliability and disaster recovery, concurrency and performance, b-tree, multicolumn, expressions, partial, gist, gin indexing and so on);
SQL (without ORM); PL/pgSQL would be a plus
Git (without GitKraken, SmartGit, SourceTree).
Basic Network Engineering (TCP/IP, NAT) and all protocols from layer 7 in depth (HTTP, HTTPS, SMTP, FTP, SSH, DNS and such).
Security (sessions mechanism, cross-site request forgery, cross-site scripting, session hijacking, difference between SQL Injection and CSS Injection, feature policy and content security policy http headers).
Linux administration skills.
Key Values stores (Redis, Memcached).
Experience with AWS or other cloud services (Google Cloud, MS Azure, Heroku, Digital Ocean, etc).
Experience with Docker