ESS, Principal Software & Data Engineer

SK Battery America•Troy, MI

About The Position

The Principal Software & Data Engineer is a foundational, hands-on senior technical member of the Energy Management Systems (EMS) engineering organization. The role is responsible for designing and building the software and data platform for next-generation energy storage and distributed energy resource control systems, including data ingestion and storage, application services, APIs, system integrations, observability, and data infrastructure for real-time control, analytics, optimization, and future AI-enabled capabilities. The engineer will own the architecture and implementation of the EMS software stack and work closely with the Head of EMS Engineering, Chief Architect, Controls Engineers, Network Engineering, DevOps, and broader product and R&D organizations. The platform must support battery energy storage, power conversion systems, grid-connected applications, microgrids, and high-availability applications such as data centers. The role involves establishing the technical foundation while directly designing, developing, testing, and deploying production software. As the organization grows, the position may take on increasing technical leadership responsibilities, including mentoring engineers and helping shape the software and data engineering team.

Requirements

  • Bachelor's degree in computer science, Software Engineering, Computer Engineering, Electrical Engineering, or a related technical field.
  • At least 8 years of professional software engineering experience, including designing, developing, and deploying production software systems.
  • Strong proficiency in modern programming languages such as Python, Go, Java, C++, C#, or Rust.
  • Experience designing scalable software architectures, APIs, distributed systems, and data-intensive applications.
  • Strong knowledge of SQL, relational databases, time-series data, and ingestion pipelines.
  • Experience with Linux environments, containerization such as Docker, CI/CD, version control, and software engineering practices.
  • Demonstrated ability to troubleshoot complex software systems across application, database, operating system, and network environments.
  • Ability to work independently and collaboratively in a fast-paced, evolving engineering environment.

Nice To Haves

  • Experience with Energy Management Systems (EMS), Distributed Energy Resource Management Systems (DERMS), SCADA, or other industrial control platforms.
  • Familiarity with Battery Energy Storage Systems (BESS), renewable energy, microgrids, power conversion systems, or utility-scale power systems.
  • Knowledge of industrial communication protocols such as Modbus TCP, OPC UA, DNP3, IEC 61850, or MQTT.
  • Experience with time-series databases, messaging and streaming technologies, and container orchestration platforms such as InfluxDB, Kafka, or Kubernetes.
  • Experience with cloud and edge computing architectures, high-availability systems, and cybersecurity practices.
  • Exposure to hardware-in-the-loop testing, digital twins, machine learning, or AI-enabled industrial applications.

Responsibilities

  • Design and develop the core EMS software platform and application services.
  • Establish software architecture for control applications, system integrations, operator interfaces, analytics, configuration management, and external APIs.
  • Develop modular, reusable software components for deployment across products, customers, and system configurations.
  • Define service boundaries, APIs, event models, and communication patterns across the EMS platform.
  • Build software capable of operating in cloud, edge, and on-premise environments, supporting server-based and industrial or embedded deployment architectures.
  • Own architecture for ingesting real-time and historical data from battery management systems, power conversion systems, meters, protection systems, site controllers, SCADA systems, and third-party devices.
  • Develop scalable ingestion services for high-frequency operational data and technologies including Modbus TCP, OPC UA, MQTT, REST APIs, and other relevant interfaces.
  • Define canonical data models that normalize information across equipment vendors and device types; develop integration frameworks to simplify onboarding equipment, devices, and external systems.
  • Partner with Controls and Network Engineering to ensure reliable and deterministic data movement between field devices and the EMS platform.
  • Define and implement data architecture for real-time, time-series, relational, configuration, event, and historical data; select and manage storage technologies according to performance, reliability, scalability, and lifecycle requirements.
  • Design data models for telemetry, alarms, events, equipment configuration, system state, operational history, and analytics.
  • Develop data retention, aggregation, archival, and lifecycle strategies and ensure data is traceable and contextualized from physical assets through downstream applications and analytics.
  • Establish architectures that enable operational data to support future organizational, machine-learning, digital-twin, and AI applications.
  • Develop secure APIs and interfaces between the EMS platform and internal and external systems, including SCADA, customer energy management systems, market systems, cloud platforms, fleet management systems, and third-party applications.
  • Establish API versioning, compatibility, authentication, and lifecycle standards; develop reusable SDKs, interface libraries, and integration patterns where appropriate.
  • Ensure interfaces remain stable as equipment and software components evolve.
  • Design software for mission-critical, continuously operating energy infrastructure; establish application health monitoring, logging, metrics, alarms, and diagnostic capabilities.
  • Partner with DevOps Engineering to create automated build, test, deployment, and release pipelines.
  • Develop remote diagnostics, troubleshooting, upgrades, and lifecycle management capabilities; define application-level redundancy, recovery, data integrity, and fault-handling strategies.
  • Support performance testing and characterization under realistic system loads, and ensure systems operate safely and predictably during network interruptions, equipment failures, and degraded communications.
  • Help establish EMS development environments, simulation capabilities, hardware-in-the-loop systems, and engineering test benches.
  • Develop simulators, emulators, test harnesses, and supporting software to validate EMS functionality; create mechanisms to replay operational data and reproduce field conditions in development and test environments.
  • Support integration of the EMS software platform with laboratory and full-scale test facilities and help automate system and regression testing.
  • Serve as the technical authority for software and data engineering within the EMS organization and partner with the Chief Architect to translate system architecture into scalable software implementation.
  • Evaluate and select software frameworks, databases, messaging platforms, development tools, and supporting technologies.
  • Conduct design and code reviews, mentor engineers, help establish the technical foundation for a growing software and data engineering organization, and help define the long-term software and data technology roadmap.
  • Balance near-term product delivery with development of a reusable, maintainable EMS platform.
  • Work effectively with global R&D organizations, external engineering partners, equipment suppliers, and customers.
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service