Position: Software Engineer

Classification: Full-Time

Location: Fully Remote (work from anywhere but you must have access to reliable internet and a quiet workspace for video calls).

Education: Bachelor's Degree in Computer Science (and/or Computer Engineering) preferred

About the Position

Your primary responsibility will be to build SOLID, Clean, custom software applications using a test-driven and planned approach. We aim to minimize technical debt by planning and documenting features and systems in advance, and then building with tests first.

You will take part in almost all aspects of a project including estimation, architecture and database planning, use case documentation, test-driven development, integration tests, end to end tests, back and front-end build, and delivery of new code. You may also be involved in infrastructure planning and creation using one of the major cloud PaaS providers.

You will be responsible for the proper documentation of and the software written by you and the team. It is important to understand what software should do as well as how it should do it, and then be able to document those things so that it can be correctly built and easily maintained.

You will also help in modernizing ongoing projects to bring them in line with current development methodologies used in the company. You can also provide insights into how to improve not only the architecture of legacy projects but also their efficiency.

You will be solving complex problems and should be able to work through most parts of a given problem on your own. You certainly won’t be on an island, but you should be confident enough to be able to handle most of the hard stuff, as well as to assist more junior team members if they need a hand.

Although your day-to-day will involve working closely with our small team, you need to be the kind of person that enjoys working from home and managing their own time.

Concepts to Know

You should be familiar with the following list of concepts. Not every item listed here is essential, and we expect that you’ll always be striving to improve yourself.

  • TDD
  • Clean Architecture
  • SOLID Principles
  • Standard Documentation (Class Diagrams, ERDs, etc.)
  • Serverless paradigms
  • GraphQL
  • Basic web paradigms: e.g. n-tier architecture, client/server interactions, HTTP model, DOM, the JavaScript ecosystem
  • Cloud-Native architecture
  • PaaS standard offerings
  • Containerization
  • CI/CD Automation

Languages we use

We build using web technologies. That doesn’t always mean that we’re building on the web (e.g. native-mobile apps with Vue-Native/Nativescript/Ionic, desktop apps with Electron) but it does mean that you need to be well-versed in those tools.

  • Solid foundation in HTML/CSS/JS
  • Experienced with TypeScript, or a type-safe language and JavaScript
  • Node.js
  • YAML
  • PHP

Frameworks and Tools

This isn’t your first time putting something together. You have used the standard tools and know your way around a config file or two. Thankfully, a lot of concepts transfer between the framework du jour, so you don’t have to have used our exact favorite as long as you’ve used something close.

  • At least 1 front-end JS Framework (preferably Vue.js)
  • At least 1 unit testing framework (Jest, Chai, Mocha, PHPUnit, NUnit, etc.: Jest preferred)
  • At least 1 e2e testing framework (Cypress, Selenium WebDriver, etc.: Cypress preferred)
  • NPM
  • Any GraphQL system (Apollo, AWS AppSync, Prisma, etc.)
  • Experience with Serverless Framework (preferred, not required)
  • WordPress (preferred, not required)
  • Docker / rkt (Docker preferred)
  • Git
  • Any CI/CD pipeline (Jenkins, CircleCI, Bitbucket Pipelines, Azure DevOps, AWS CodeDeploy, etc)

OS's and Cloud Platforms

We aren’t too strict about how you work: we want you to be efficient. However, there are a few things that you should have a good amount of experience with or at least know your way around.

  • Comfortable in a Linux environment (not a sysadmin, but can work comfortably)
  • Any modern OS is fine (Windows/WSL2, MacOS, any modern Linux distro)
  • The team is pretty evenly split between Windows/WSL2 and MacOS
  • Familiarity with any PaaS (AWS preferred, then Azure)

Ready to Apply?

To apply, submit the following via email to [email protected] with “Software Engineer - Labs” in the subject line:

  1. Cover Letter
  2. PDF of your resume
  3. A quick video explaining why you would be a good fit for this position