About The Position

The Advanced Energy Software Group is seeking a passionate and eager Staff Software Engineer to join us in developing next-generation energy solutions. We are looking for a highly motivated and talented engineer who is not afraid to work across the full software stack, from kernel drivers to user interface layers, to help shape the software architecture of our products. Resourcefulness and agility are essential for this role: you will be expected to quickly adapt to new challenges, learn unfamiliar systems, and deliver innovative and robust solutions. The Staff Software Engineer should be well-versed in the Linux operating system, networking, state machine implementation, and build systems. We seek an individual who takes pride in delivering high-quality, reliable work and follows a test-driven development approach.

Requirements

  • Expert-level proficiency in C and modern C++.
  • Strong hands-on experience with Linux-based development environments.
  • Solid understanding of software architecture principles and design patterns.
  • Demonstrated ability to work independently and collaboratively in a fast-paced, agile environment.
  • Strong problem-solving skills.
  • Prior experience mentoring, coaching, or leading junior engineers.
  • Minimum BSc degree in Computer science or adjacent technical field with 10 years of experience, or master’s degree with 8 years of experience, or PhD degree with 5 years of experience.

Nice To Haves

  • Experience with Qt and real-time operating systems is a plus.
  • Experience with safety-critical or high-reliability systems development.
  • Experience with Continuous Integration/Continuous Deployment (CI/CD) pipelines.
  • Familiarity with medical device standards IEC 62304 and ISO 14971 (Risk Management).
  • Experience with multi-threaded, event-driven programming.
  • Knowledge of embedded security principles and practices.

Responsibilities

  • Developing middleware for distributed system communication.
  • Designing and implementing multi-threaded, distributed C/C++ applications.
  • Building and maintaining embedded Linux software throughout the entire software lifecycle.
  • Working closely with other software engineers to debug complex system issues spanning operating systems, middleware, and application layers.
  • Implementing tools to aid in analyzing application performance, latency, and resource usage.
  • Participating in and driving architectural discussions and decisions as well as leading design reviews.
  • Creating clear and concise technical documentation.
  • Owning software component development from requirement gathering to proposed solution to final implementation and validation.
© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service