Software Engineer (Core Engineer)
Location: Oakville, ON or Waterloo, ON
Work Arrangement: Hybrid – 4 days onsite
Duration: 12 months, possibility of extension
Position Overview
We are seeking a talented Software Engineer III to join a team focused on developing innovative embedded software solutions. In this role, you will participate in the full software development lifecycle, from requirements definition and architecture design through implementation, testing, deployment, and continuous improvement.
The ideal candidate will have strong experience in embedded software development, C/C++ programming, Python-based tool and test development, and technical requirements authoring. This position offers the opportunity to work with cross-functional teams to build high-quality software systems for cutting-edge products.
Key Responsibilities
- Collaborate with stakeholders to understand customer needs, use cases, and technical requirements.
- Design, develop, test, and deliver embedded software solutions using modern engineering practices and Agile methodologies.
- Define software architectures, interfaces, integration strategies, and deployment approaches.
- Develop software applications and components in embedded environments using C/C++ and Python.
- Create and maintain technical specifications, requirements documentation, and system-level artifacts.
- Partner with product owners, systems engineers, architects, and other cross-functional teams to deliver high-quality solutions.
- Define and implement software testing strategies, processes, and best practices.
- Support continuous integration, continuous delivery, and test-driven development practices.
- Optimize software performance, reliability, and maintainability.
- Implement security best practices to help protect system and user data.
- Research, evaluate, and incorporate emerging technologies to improve development efficiency and product capabilities.
- Participate in code reviews, design reviews, and technical discussions to ensure engineering excellence.
Required Qualifications
- Bachelor’s degree in a relevant engineering or computer science discipline.
- 5+ years of experience developing software in an embedded environment.
- 3+ years of experience developing software applications using C/C++.
- 3+ years of experience using Python to develop software tools, automation, or test frameworks.
- 3+ years of experience creating and managing technical requirements or specifications.
- Experience using requirements management tools such as:
- IBM DOORS / DNG
- Polarion
- Jama
- Strong understanding of software development lifecycle methodologies and engineering best practices.
- Experience working within Agile development environments.
Preferred Qualifications
- 3+ years of experience developing applications using MATLAB.
- 3+ years of experience developing applications using Simulink/Stateflow.
- Experience with systems engineering principles and methodologies.
- Experience with systems modeling tools such as MagicDraw.
- Experience authoring system-level requirements.
- Additional embedded systems development experience.
Technical Skills
Required
- Embedded Software Development
- C/C++
- Python
- Requirements Management & Specification Authoring
- Agile Development Practices
- Continuous Integration / Continuous Delivery (CI/CD)
- Test-Driven Development (TDD)
Preferred
- MATLAB
- Simulink
- Stateflow
- Systems Engineering
- MagicDraw
- Embedded Systems Architecture
Work Arrangement
- Hybrid schedule: 4 days per week onsite.
- Candidates must be able to work from either the Oakville, Ontario or Waterloo, Ontario office locations.
What You’ll Bring
- Strong analytical and problem-solving skills.
- Excellent communication and collaboration abilities.
- Ability to work effectively across multidisciplinary teams.
- Passion for developing high-quality software and continuously improving engineering practices.
- Commitment to delivering reliable, secure, and scalable solutions.
#LI-EP1
