Nuvation Energy is looking for a talented, innovative Senior Software Engineer/System Architect, who successfully combines architecture skills, deep technical expertise, and project leadership to join our Battery Management System (BMS) team. This is a full-time position in our Waterloo Office. In this role you will be a critical member and leader in Nuvation’s engineering group
At Nuvation we are fanatical pragmatists who revere logic, process, repeatability, and methodology. You will be working with highly competent team members who are wired to respond to challenges with innovation.
Nuvation BMS™ is a scalable and highly configurable battery management system for commercial, industrial, and electrical utility battery packs – from low power units to multi-kilowatt stacks. You will be working on the system software that includes:
- Real-time execution over multiple processors
- Control and data aggregation of multiple battery cells (100s to 1000s)
- Interfacing with third party controllers/equipment and adhering to industry standards (MESA Energy Storage Model).
- Simulation, implementation and verification of advanced algorithms.
The ideal candidate has demonstrated experience working with multi-discipline teams, has sound knowledge of software engineering practices, and is comfortable in a highly collaborative environment. There is an opportunity to take ownership and guide the maturing product to new areas of deployment. If you are looking for constant challenges on a wide variety of design problems, this is the job for you.
- Core Infrastructure Development – This will be your primary activity – helping shape the Nuvation BMS product. You will make significant contributions to the core C++ code base that runs on all BMS modules. This infrastructure is used to develop high-reliability distributed monitoring and control firmware that manages large-scale battery systems. All levels of technical activity will be involved, ranging from design and development to in-lab bringup.
- Product Feature Development – You will be responsible for designing, implementing, and testing new product features part of the Nuvation BMS roadmap. These features may include monitoring, control, and estimation functions, industry protocol implementations, and embedded web services.
- System Architecture & Integration – You will identify and define architecture level solutions that meet the technical and non-technical requirements of the system/product. Design solutions to concurrency issues, bandwidth problems, etc. You will be responsible for leading, defining, and evolving software development methodologies and resources.
- Collaboration and Mentorship – You will be part of a work environment that provides mentoring and open collaboration. You will provide guidance and mentoring to individuals in a variety of roles, sharing your experience and knowledge wherever needed. You will work closely with team members to provide timely and accurate project updates.
- Customer Interaction – You will be working with Nuvation’s sales and marketing departments as a technical advisor, creating design modification estimates, and evaluating system architectures for customer uses of the BMS.
Qualifications & Requirements
- Extensive experience with software design and development including:
- Design documentation – figuring out the work to be done before implementation
- Design implementation – coding, unit testing, peer reviews
- Design validation – unit testing, system testing, integration, and final releases
- Seasoned developer well versed in modern software technologies and best practices.
- Experiences with planning projects and generating cost estimates for Requests for Proposals and for Change Orders
- Experience working with stakeholders and customers to determine infrastructure and operational impacts, changes and schedules to meet both project and business needs
- Experience guiding development in designing reusable software components in compliance with standards and industry best practices
- Experience defining and documenting relevant software patterns and design mechanisms to be used to implement the underlying components
- Experience reviewing and approving designs created by the development team
- Experience with structured software development methodologies such as Agile
- University degree in Electrical/Electronics, Mechatronics or Computer Science, or equivalent experience
- Working with power management and battery systems
- Verification and test system automation, ideally using Python
- Experience designing, implementing, testing and debugging embedded software using both C and C++
- Writing code that utilizes C++ 11 language features, templates, and meta-programming techniques
- Debugging multi-threaded / multi-processor systems and using tools such as GDB for remote debugging
- Writing effective unit tests, ideally within a dual-targeted test-driven development flow
- Working with one or more network protocols (Modbus TCP/RTU, UDP, TCP/IP, DHCP, HTTP)
- Working with one or more communication busses (SPI,I2C,CAN, MODBUS, Ethernet, Serial RS-485)
- If you have contributed to an Open Source project tell us about it!
General Skills & Characteristics to be Successful at Nuvation
All Nuvation employees require a common set of general skills & characteristics – your capability in these areas will enable you to be successful here. We take these skills and characteristics seriously – being a Nuvation employee requires more than just experience and role-specific skills.
- You want to learn, and you do so quickly
- You multi-task effectively, moving from activity to activity as the job needs
- You can also manage and prioritize multiple concurrent tasks/projects
- You are proficient at estimation and critical thinking
- You are independent and self-managing
- You have strong written and verbal communication
- You desire to work and collaborate with people and teams – you make your colleagues better and you grow from their contributions
- You focus on results, and with quality
- You are passionate and creative – with a willingness to go beyond the normal
- You are hands-on and practical
Nuvation offers competitive salaries with health, dental, vision, and disability benefits. All positions have opportunities for variety, innovation, and success. We have a fast-paced, yet relaxed work environment, and a unique corporate culture that will support and encourage you to perform at your personal best for your colleagues and our customers. We promise you respect, teamwork, and appreciation for a job well done.