Sr. Firmware Developer
Hybrid - Victoria, B.C., CAN
Description

  

AEM (Advanced Environmental Monitoring) is the global leader in innovative mission critical weather, wildfire and water monitoring and intelligence solutions. We aim to be the world’s essential source for environmental insights – enabling decisive action and positive outcomes for our customers and their constituents. Our family of innovators offers world-class hydrometeorological technologies and services, including sensors, dataloggers, telemetry, and advanced analytics and software. Our technology and services empower the communities and organizations to survive – and thrive – in the face of escalating environmental risks.  


AEM is seeking a Senior Firmware Developer with deep experience developing embedded products from architecture through production release and lifecycle support. This role is responsible for designing reliable, maintainable firmware for environmental monitoring products and for creating reusable architectures and components that can support multiple products and platforms where practical.


The ideal candidate combines strong embedded software fundamentals with hands-on hardware integration, system debugging, verification, and technical leadership. This is a hands-on product development role - not solely an architecture, research, or prototype-focused position.


Job Responsibilities: 


Embedded Firmware Architecture & System Design

  • Lead firmware architecture for embedded products ranging from bare-metal systems to multi-threaded RTOS-based applications.
  • Translate product and system requirements into firmware designs, interfaces, task structures, state machines, and hardware abstraction layers.
  • Evaluate design tradeoffs involving performance, memory, power, reliability, complexity, reuse, and long-term maintainability.
  • Define modular and reusable firmware components that can be applied across product families and hardware platforms where appropriate.

Firmware Development & Implementation

  • Design, implement, review, and maintain production embedded software in C/C++ for microcontroller-based products.
  • Develop device drivers, board-support software, communications interfaces, control logic, data acquisition, storage, and scheduled transmission functions.
  • Implement safe concurrency using RTOS tasks, queues, mutexes, semaphores, timers, and interrupt-driven designs.
  • Apply structured design, object-oriented design where appropriate, coding standards, defensive programming, and clear error-handling practices.
  • Maintain build configurations, source control practices, technical documentation, and reproducible firmware build outputs.

Hardware Integration & Product Bring-Up

  • Partner with electronic designers to define processor, peripheral, memory, power-control, and communication requirements.
  • Read schematics and datasheets, bring up new boards, and validate interfaces such as UART, SPI, I2C, USB, Ethernet, Wi-Fi, Bluetooth/BLE, and cellular or satellite communications.
  • Use oscilloscopes, logic analyzers, debuggers, protocol analyzers, and other laboratory tools to diagnose board- and system level issues.
  • Troubleshoot interactions among firmware, PCBs, sensors, power supplies, communications modules, and electromechanical assemblies.

Verification, Reliability & Quality

  • Develop unit, integration, hardware-in-the-loop, regression, fault-injection, and long-duration tests appropriate to embedded products.
  • Review code and designs for correctness, concurrency hazards, resource use, error recovery, maintainability, and testability.
  • Design for reliable operation through communication loss, peripheral faults, power interruptions, brownouts, watchdog resets, and other field conditions.
  • Work with QA and product validation teams to investigate defects, reproduce failures, and verify corrective actions.

Product Release & Lifecycle Support

  • Support firmware through prototype builds, formal qualification, production release, configuration control, and field deployment.
  • Produce release-ready firmware packages, release notes, build records, and technical evidence required by the product release process.
  • Lead root-cause analysis for production and field failures and implement corrective actions that improve product reliability.
  • Support legacy product sustainment, including component changes, hardware revisions, defect correction, cybersecurity updates, and technical debt reduction.
  • Use field, service, and test feedback to guide design improvements and future platform decisions.

This job description may not be inclusive of all assigned duties, responsibilities, or aspects of the job described, and may be amended at any time at the sole discretion of the Employer.

Requirements

  

  • Bachelor’s degree in Computer Science, Electrical Engineering, Computer Engineering, or a closely related discipline.
  • Minimum 7 years of relevant experience developing embedded systems and production firmware.
  • Proven record of architecting, developing, debugging, and releasing microcontroller-based embedded products.
  • Excellent written and verbal communication skills, with demonstrated success working within and across functional teams.
  • Advanced proficiency in embedded C/C++ and experience with memory-constrained, resource-constrained systems.
  • System-level firmware architecture experience, from task scheduling and application logic through low-level device drivers and hardware abstraction layers.
  • Hands-on experience with an RTOS and multi-threaded systems, including synchronization, inter-task communication, timing, and concurrency debugging.
  • Experience with structured design, modular code, interface design, code reuse, and maintainable embedded software practices.
  • Strong understanding of interrupts, timers, DMA, memory management, boot processes, watchdogs, and embedded fault handling.

Preferred Experience:

  • Low-power environmental monitoring, remote sensing, industrial IoT, dataloggers, or telemetry products.
  • Sensor acquisition and instrumentation interfaces such as SDI-12, 4-20 mA, pulse, analog, or serial sensors.
  • Reliable local data storage, file systems, databases, data integrity, and recovery from unexpected power loss.
  • Embedded graphical user interfaces using TouchGFX, Qt, or similar frameworks.
  • Embedded Linux, Contiki OS, Kotlin, Python, or scripting used for development and automated testing.
  • CI/CD systems such as Jenkins and static-analysis or code-quality tools.
  • Secure communications, device update mechanisms, cybersecurity practices, or connected-device provisioning.
  • Regulated, ruggedized, high-reliability, or long-lifecycle products used in remote or harsh environments.

Additional Information

  • This is a hybrid opportunity that must be performed at/near our office in Victoria, B.C.
  • Must be eligible to work in the Canada without company sponsorship, now or in the future, for employment-based work authorization. F-1 visa holders with Optional Practical Training (OPT) who will require H-1B status, TNs, or current H-1B visa holders will not be considered. H1-B and green card sponsorship is not available for this position.

Compensation Range: A reasonable estimate of the current salary range for this position is $85,000 - $110,000 CAD per year. Please note that the salary information is a general guideline only. AEM considers a wide range of factors such as (but not limited to) scope and responsibilities of the position, candidate's work experience, education, licensure and certifications, key skills as well as other market and business considerations when extending an offer. The disclosed range estimate has not been adjusted for the applicable geographic differential associated with the location at which the position may be filled. 


This position will accept applications on an ongoing basis and will be closed once the position is filled. 


AEM is an Equal Opportunity Employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, age, pregnancy, genetic information, disability, status as a protected veteran, or any other protected category under applicable federal, state, and local laws.