Senior Software Engineer

Position Summary 

Corvus is in search of a dynamic senior software engineer who is comfortable across the spectrum of our software development projects which includes embedded firmware to big data analysis tools to full stack development. If you enjoy the challenge of looking through schematics to determine what I/O needs to be toggled to communicate with an EEPROM over I2C one day and writing Python scripts to analyze gigabytes of data to look for sensor performance issues another day, you are the person we are looking for. As a senior software engineer, you will also be responsible for mentoring our junior developers, assisting in refining quality processes and security practices and being a technical resource for other teams in Engineering and other groups in Corvus Energy.

Reporting to the software team lead, you will be a member of a highly talented group of software and firmware engineers working on adding value to our energy storage systems on the software end of things. You think on a systems-level and are capable of architecting software with considerations for the various use-cases, maintainability, scalability and usability concerns which all ultimately help to increase customer satisfaction.

Responsibilities

  1. Design and refine software architecture for our software products.
  2. Implement improvements, feature enhancements, and bug fixes as requested by stakeholders such as customer service.
  3. Implement test plans and regression tests to verify software and firmware changes.
  4. Collaborate with customer service, manufacturing, and applications engineering to identify and diagnose software and firmware issues.
  5. Participate in all aspects of the SDLC for new and existing products
  6. Deploy firmware and software upgrades.
  7. Report on issues and their resolutions to non-technical staff.
  8. Promoting knowledge transfer through documentation and presentations.
  9. Mentor junior developers to promote their career development and act as an experienced technical resource with the aim to improve the quality of our deliverables,
  10. Provide input and assist with improving team processes and infrastructure.

Requirements

  1. Team player with strong verbal and written communication skills.
  2. BASc/BSc in engineering or computer science, or engineering technologist with equivalent experience
  3. 7+ years’ experience in software development with 4+ years’ experience in embedded software development.
  4. Proficient in C and scripting languages such as Python.
  5. Experience with some or all of the following is an asset: HTML/CSS/JS, AWS or Azure, RTOS’s, SQL/NoSQL databases, embedded Linux, functional programming languages.
  6. Outstanding troubleshooting skills acquired by experience with different disciplines.
  7. Experience with source code control systems such as Git and development processes and tools such as CI and JIRA.
  8. Practical working knowledge of software security and security development lifecycle is a plus.
  9. Experience working on small to medium size software development teams as the lead developer driving architecture and other design decisions.
  10. Should be able to travel internationally on occasion (1-2 weeks per year).