Position: Software Engineer
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.
- Clean Architecture
- SOLID Principles
- Standard Documentation (Class Diagrams, ERDs, etc.)
- Serverless paradigms
- Cloud-Native architecture
- PaaS standard offerings
- 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
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)
- Any GraphQL system (Apollo, AWS AppSync, Prisma, etc.)
- Experience with Serverless Framework (preferred, not required)
- WordPress (preferred, not required)
- Docker / rkt (Docker preferred)
- 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)
- Cover Letter
- PDF of your resume
- A quick video explaining why you would be a good fit for this position