About the Role
We are looking for a strong junior or developing intermediate Software Developer to work on AI-assisted software development, system automation, internal tools and technology products.
This role is for someone who can use modern AI tools effectively while maintaining strong engineering judgment and full responsibility for the final result.
This is not a machine-learning research or prompt-engineering position. We are looking for a practical software developer who can understand real-world problems, break them into clear system components and deliver reliable, well-considered solutions.
Software Developer — Junior to Intermediate
What You Will Do
- Translate operational and technical requirements into practical software solutions.
- Step back from individual coding tasks to understand the complete process, system and intended outcome.
- Break problems into clear functional blocks, interfaces and implementation stages.
- Build internal tools, automation workflows, product features and system integrations.
- Use AI coding tools to research, design, implement, review and improve software.
- Review AI-generated code for incorrect assumptions, security issues, edge cases and maintainability problems.
- Design and integrate APIs, databases, data-processing workflows and third-party services.
- Write clean, understandable and maintainable code.
- Develop meaningful tests and verify that the delivered result meets the actual requirement.
- Diagnose technical problems through systematic debugging rather than trial-and-error changes.
- Improve existing software, scripts and operational processes.
- Create concise technical documentation, diagrams and implementation notes.
- Communicate assumptions, risks, blockers and technical decisions clearly.
- Take ownership of appropriately scoped projects from requirement clarification through delivery and verification.
What We Are Looking ForAI-Assisted Development
You can use tools such as ChatGPT, Claude, GitHub Copilot, Cursor or similar platforms to accelerate development.
More importantly, you can:
- Give AI the correct context and constraints.
- Evaluate whether an AI-generated answer is technically sound.
- Identify hallucinated APIs, incorrect assumptions and incomplete implementations.
- Debug and test the result yourself.
- Explain and take responsibility for the code you deliver.
You should not depend on AI to tell you whether its own answer is correct.
Systems Thinking
You can take one or more steps back from an immediate task and understand the complete chain required to achieve the goal.
You are able to identify:
- The actual objective.
- Inputs, outputs and constraints.
- Core functional blocks.
- Dependencies between components.
- Critical paths and failure points.
- What must be built first.
- What can be simplified in the initial version.
- How the result will be tested and operated.
You do not immediately start coding before understanding what needs to be built.
Engineering Fundamentals
You have a practical understanding of programming and computer-system fundamentals, including several of the following:
- Program execution, memory and data representation.
- Data structures and algorithms.
- APIs, networking and distributed communication.
- Databases, queries and transactions.
- Processes, threads and asynchronous operations.
- State, concurrency and failure handling.
- Authentication, authorization and basic application security.
- Testing, logging and debugging.
- Source control and software-development workflows.
For junior candidates, complete knowledge is not expected. Strong reasoning ability and evidence that you can rapidly build accurate technical understanding are essential.
Craftsmanship
You care about the quality and completeness of your work.
Your deliverables demonstrate:
- Clear structure and naming.
- Appropriate error handling.
- Consideration of edge cases.
- Meaningful testing.
- Reasonable simplicity.
- Accurate documentation.
- Attention to usability and maintainability.
- Verification that the result works in its intended environment.
You understand the difference between a quick prototype and production-ready work, and you apply the appropriate level of engineering to each.
Ownership and Communication
You can independently own a clearly scoped development task.
You:
- Clarify missing information.
- Make assumptions visible.
- Communicate blockers early.
- Propose solutions instead of only reporting problems.
- Accept and apply feedback.
- Follow a task through to an operational result.
- Take responsibility for finding and correcting mistakes.
- Explain technical decisions clearly to both technical and non-technical team members.
Curiosity and Learning Ability
You are naturally interested in understanding how things work.
You are willing to:
- Explore unfamiliar technologies and problem areas.
- Ask thoughtful and relevant questions.
- Compare multiple approaches.
- Investigate unexpected results.
- Learn from unsuccessful attempts.
- Apply newly learned concepts to different problems.
- Improve your tools and working methods continuously.
Technical Background
You should have practical experience with some of the following:
- Python.
- JavaScript or TypeScript.
- REST APIs and third-party integrations.
- SQL and relational databases.
- Linux environments.
- Git and code-review workflows.
- Automated testing.
- Data processing and reporting.
- Web-based internal tools or applications.
Experience with all listed technologies is not required. The ability to learn unfamiliar tools quickly and correctly is more important than matching every keyword.
Useful Additional Experience
The following experience would be helpful but is not required:
- FastAPI, Django, Flask, Node.js or similar frameworks.
- React or other modern frontend frameworks.
- Docker and containerized applications.
- CI/CD pipelines.
- Cloud platforms and services.
- Hardware-integrated software, IoT or embedded systems.
- Device monitoring and diagnostics.
- Data visualization and dashboards.
- Cybersecurity or defence technology.
- RF systems, drones or counter-UAS technology.
- Internal business-process automation.
Experience and Education
We are generally looking for approximately one to four years of relevant software-development experience.
Equivalent evidence may come from:
- Professional software-development work.
- Internships or co-op placements.
- Technically substantial academic projects.
- Open-source contributions.
- Personal products or systems that have real users.
- Meaningful automation or integration projects.
A degree or diploma in computer science, computer engineering, another engineering discipline or a related field is helpful but not required.
Demonstrated engineering ability matters more than the title of your degree.
What We Offer
- Work on software connected to real products and real-world systems.
- Opportunities to work across software, hardware, data and operational processes.
- Modern AI-assisted development tools.
- Direct visibility into how your work is used.
- Meaningful ownership rather than narrowly defined coding tasks.
- Opportunities to grow from implementation into system design and technical ownership.
- A practical environment where working results and sound engineering judgment matter.
We welcome candidates from different educational and professional backgrounds. We evaluate applicants based on demonstrated capability, learning potential, engineering discipline and the quality of their work.
Job Type: Full-time
Pay: $80,000.00-$110,000.00 per year
Benefits:
- Dental care
- Extended health care
- Life insurance
- Paid time off
- Vision care
Ability to commute/relocate:
- Burnaby, BC V5G 1J9: reliably commute or plan to relocate before starting work (required)
Application question(s):
- Are you a Canadian Citizen, Permanent Resident? If you are on a work permit, please write how many years you have until the expiry of your work permit?
Work Location: In person