Principal Software Engineer - Back End
EngineeringFull TimeVancouver, BC
Want to join a dynamic, expanding tech startup? Accounts Payable automation is a growing solution domain. Beanworks Solutions Inc. is revolutionizing the world of accounting software by disrupting traditional solutions with its elegant, cloud-based software, BeanworksAP. We solve the pain of lost invoices, late payment fees and managing paper. We make controllers and AP managers rejoice by automating their manual accounts payables processes, giving them total visibility, control and reduced fraud risk.
Beanworks Solutions Inc. is conveniently located in downtown Vancouver, with easy access to transit and affordable parking. Our smart, diverse team values innovation, accountability and doing whatever it takes to get the job done, and done well.
The Principal Software Engineer - Back End takes a platform-first view of the Beanworks product portfolio. You, the ideal candidate, will enjoy the challenge of architecting and designing reliable and easy-to-implement services, modules and components, architectural patterns, and web best-practices. In this role you care deeply about web performance and security standards. You’ll create the technical vision, build consensus, and work with the team to provide the platform and architecture to take our cloud-based SaaS application into the future.
You will love this role if:
- You’re passionate about back-end architecture and development, you have real world production experience developing enterprise-grade cloud-based web applications, and you’re ready to lead the charge to evolve an existing 3-tier monolithic application to take advantage of AWS services, and state-of-the art architectural patterns.
- You can’t rest until you’re up to date on the latest back-end and web development trends: microservices versus monoliths, object-oriented vs functional programming, cloud-specific vs cloud-agnostic, REST vs GraphQL vs gRPC, CQRS and event-sourcing vs traditional CRUD - you name it, you’ve studied it.
- You balance your love of the latest and greatest with an equally strong ability to prioritize which technology choices and changes will pay off most for the team, the business, and our customers.
- You embrace DevOps, continuous integration and continuous delivery and know how to ensure continuous operation at scale.
- You write code with a test-driven approach and take great pride in the quality, resilience and performance of your code.
- You’re an excellent listener with excellent communication skills and the ability to clearly visualize and present architecture solutions.
- You embrace change, are able to fail fast, learn quickly, and adapt to new challenges.
- Guide the engineering vision for our web, API, desktop and mobile applications.
- Architect important systems, and anticipate strategic and scaling-related challenges via thoughtful long-term planning.
- Set the technical direction for your team, working collaboratively with other senior technical staff, engineering managers, and product managers.
- Write excellent code and developer tests that set the standard for the team, pairing often with other developers on feature development, code reviews and bug fixing.
- Collaborate with the team to evaluate and implement frameworks and tools to help with software development, software quality, and software delivery.
- Collaborate on requirements specification in the form of BDD features and scenarios.
- Raise the bar: As a principal engineer you are the bar. Whenever you push your own limits, you push those of the company as well.
- Coach and mentor other engineers, both junior and senior.
- Through intelligent technology, architectural, tool and process choices, ensure that the team delivers extraordinary quality and quantity of output.
Required Skills & Experience:
- 7+ years in back end or full stack web application development, including at least 2 years as a technical lead or principal engineer.
- Advanced knowledge of software architecture, software design patterns, relational and non-relational databases, and API paradigms.
- Production experience using state-of-the-art architectural patterns and frameworks.
- A background in DevOps and service ownership, and a clear understanding of bounded contexts and how they map onto microservices.
- Proven ability to build performant, reliable, maintainable code that stands the test of time over a number of years.
- Advanced knowledge of Linux, Git, and Docker.
- Experience with Redis / ElasticSearch, RabbitMQ or other queueing technologies such as Kafka.
- Intermediate to advanced experience using a type-safe language
- Strong pair programming skills, both as a mechanism for producing better code, and for teaching
- Bachelor's Degree or higher in Computer Science or a related field, or equivalent experience
Desired Skills & Experience:
- Production experience on systems with a large number of 3rd party service and application integrations.
- Intermediate to advanced experience with designing and refactoring architecture for Cloud Infrastructure such as Amazon Web Services (AWS)
- Advanced experience with PHP
- Experience with Symfony and Doctrine
- Experience with C# and .NET
- Experience with Kubernetes, Ansible, Terraform, or other similar tools
- Working knowledge of the BDD process, techniques and tools
- FinTech domain experience