Engineering

Engineers at Operately are responsible for building and maintaing Operately’s products. This includes the Operately the product, the Operately website, the Operately cloud infrastructure, and any other products that Operately may build in the future.

Scope of work#

We hire full-stack engineers, who are willing to work on the front-end, back-end, mobile, and cloud infrastructure, or to acquire the skills to do so. Full-stack engineers allow us to move faster, focus on the complete user experience, and to build products that are robust and scalable.

It is normal to have deeper expertise in one area, and to consult with others when working on a different area. For example, if you are a have deeper expertise in the front-end, you may consult with others when optimizing a database query, or setting up cloud infrastructure.

Responsibilities#

  • Product development: Build and maintain Operately’s products.
  • Architecture design: Design the architecture of the product/features you build.
  • Code quality: Write clean, maintainable, and scalable code.
  • Code reviews: Review code from other engineers and open-source contributors.
  • Testing: Write tests for your code, and for the code of others.
  • Documentation: Write documentation for the features you build, or the architecture you design.
  • Collaboration: Work with other engineers, designers, product managers to build products.
  • Learning: Keep up-to-date with the latest technologies, and best practices in software engineering.
  • Mentoring: Mentor junior engineers, and help open-source contributors to contribute to Operately.
  • On-call: Participate in the on-call rotation, and respond to incidents when they happen.
  • Security: Design and build secure products, and follow best practices in security.
  • Performance: Measure and optimize the performance of the products you build.
  • Release management: Deploy code to production, and monitor the performance of the products you build.
  • Interviewing: Interview candidates for engineering roles.
  • Task management: Manage your tasks, and communicate your progress to the team.

Technologies#

Operately is built with the following technologies:

Elixir#

Elixir is the main programming language we use at Operately. Elixir is a functional programming language, built on top of the Erlang VM. Elixir is used to build the backend of Operately, including the API, Email, Websockets, and other services.

TypeScript#

We use TypeScript to build the front-end of Operately. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. We believe that TypeScript helps us write more robust code, and to catch bugs early in the compilation phase.

React#

React is the main front-end library we use at Operately. React is a JavaScript library for building user interfaces. React is used to build the complete web experience of the application.

PostgreSQL#

PostgreSQL is the main database we use at Operately. PostgreSQL is a powerful, open-source object-relational database system. PostgreSQL is used to store the data of Operately, including user data, product data, and other data.

Linux#

Linux is the main operating system we use at Operately for deploying our products. You should have a strong understanding of Linux, Bash, and the command line.

Docker#

We use docker both in development and production. Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. It eliminates “works on my machine” problems when collaborating on code with others.

Semaphore#

We use Semaphore CI as the main gatekeeper for quality, including continuous integration and continuous deployment. Semaphore is used to run tests, build artifacts, deploy code, and verify the quality of the code.