Upload
Job Description
Expected Responsibilities
-
Develop and maintain backend web applications that interact with each other, as well as with other existing applications
-
Assist in the design of these applications based on product requirements and technical constraints
-
Manage and monitor applications’ production runtimes
Technical Requirements
We do not expect candidates to be experts in all of the categories below. However, exposure to the basics in each area would be a major benefit.
The current application uses Rails, Postgres, Hotwire (Turbo/Stimulus) and is deployed on Heroku. New applications do not need to follow the same pattern, as long as they are maintainable. Familiarity with Rails or Hotwire is not required.
General
-
Development of maintainable code that is well-structured, clear, easy to review, and easy to refactor as needed
-
Ability to translate design requirements into working code
-
Recognition of engineering trade-offs when making decisions
-
Familiarity with Git
-
Collaboration using GitHub (opening reviewable PRs, code review, etc.)
-
Familiarity with debugging processes and best practices for solving code issues
-
Familiarity with addressing technical debt and refactoring
-
Strong organizational skills
Backend Development
-
Object-Oriented Programming (Ruby on Rails preferred, but any language or stack with similar development processes is acceptable, e.g. PHP, Python, etc.)
-
Relational database systems (Postgres, MySQL, etc.) and how to properly scale queries
-
Caching systems (Redis, Memcache, etc.)
-
Understanding of common API architectures (REST preferred, GraphQL acceptable)
-
Developing APIs (including versioning, error handling, etc.)
-
Securing APIs
-
Proper handling of user data (PII best practices, secure storage, etc.)
-
Automated testing (unit tests, integration tests, etc.)
-
Backend package management (bundler, composer, pip, etc.)
-
Observability and error reporting
Infrastructure
-
Standing up an application in production (using a host such as Heroku or similar)
-
Standing up an application on development machines (Docker preferred to manage inter-service dependencies, but other similar systems are acceptable)
-
Deploying to production either manually or via CI/CD pipelines
-
Configuring and monitoring resource usage and performance
-
Debugging production bugs
-
Management of application secrets
-
Familiarity with the Linux command line
Requirements
Expected Responsibilities
-
Develop and maintain backend web applications that interact with each other, as well as with other existing applications
-
Assist in the design of these applications based on product requirements and technical constraints
-
Manage and monitor applications’ production runtimes
Technical Requirements
We do not expect candidates to be experts in all of the categories below. However, exposure to the basics in each area would be a major benefit.
The current application uses Rails, Postgres, Hotwire (Turbo/Stimulus) and is deployed on Heroku. New applications do not need to follow the same pattern, as long as they are maintainable. Familiarity with Rails or Hotwire is not required.
General
-
Development of maintainable code that is well-structured, clear, easy to review, and easy to refactor as needed
-
Ability to translate design requirements into working code
-
Recognition of engineering trade-offs when making decisions
-
Familiarity with Git
-
Collaboration using GitHub (opening reviewable PRs, code review, etc.)
-
Familiarity with debugging processes and best practices for solving code issues
-
Familiarity with addressing technical debt and refactoring
-
Strong organizational skills
Backend Development
-
Object-Oriented Programming (Ruby on Rails preferred, but any language or stack with similar development processes is acceptable, e.g. PHP, Python, etc.)
-
Relational database systems (Postgres, MySQL, etc.) and how to properly scale queries
-
Caching systems (Redis, Memcache, etc.)
-
Understanding of common API architectures (REST preferred, GraphQL acceptable)
-
Developing APIs (including versioning, error handling, etc.)
-
Securing APIs
-
Proper handling of user data (PII best practices, secure storage, etc.)
-
Automated testing (unit tests, integration tests, etc.)
-
Backend package management (bundler, composer, pip, etc.)
-
Observability and error reporting
Infrastructure
-
Standing up an application in production (using a host such as Heroku or similar)
-
Standing up an application on development machines (Docker preferred to manage inter-service dependencies, but other similar systems are acceptable)
-
Deploying to production either manually or via CI/CD pipelines
-
Configuring and monitoring resource usage and performance
-
Debugging production bugs
-
Management of application secrets
-
Familiarity with the Linux command line
Skills
- Analyse Software Specifications
- Collect Customer Feedback On Applications
- Create Flowchart Diagram
- Debug Software
- Develop Software Prototype
- Implement Front-End Website Design
- Interpret Technical Texts
- Provide Technical Documentation
- Translate Requirements Into Visual Design
- Use An Application-Specific Interface
- Use Markup Languages
- Use Software Design Patterns
- Use Software Libraries