Hybrid position - Tuesday-Thursday in office; Monday & Friday from home, if desired.
The Staff Application Software Engineer is a senior individual contributor responsible for leading the design, development, and delivery of complex software applications supporting NovaTech’s smart automation and control solutions for electric utilities and critical infrastructure. This role serves as a technical authority within the software engineering team, driving architectural decisions, setting coding standards, and ensuring the reliability, scalability, and security of application software. The ideal candidate brings deep expertise in C/C++ specialized application development within industrial or utility-grade environments and a demonstrated ability to mentor engineers and collaborate across functions to deliver mission-critical solutions.KEY RESPONSIBILITIES Software Architecture & Design
Lead the architectural design of embedded application software, ensuring alignment with NovaTech’s technology strategy and industry best practices
Define and enforce software design patterns, coding standards, and development frameworks across the engineering team
Evaluate and recommend technology platforms, languages, and tools to meet evolving product and operational requirements
Conduct technical design reviews and provide authoritative guidance on complex engineering challenges
Application Development
Develop, test, and maintain high-quality application software for automation and control systems supporting electric utilities and critical infrastructure
Own the full software development lifecycle for assigned applications, from requirements analysis through deployment and post-release support
Write clean, well-documented, and performant code that meets functional requirements and security standards
Troubleshoot and resolve complex software defects, performance issues, and integration failures in a timely manner
Technical Leadership & Mentorship
Serve as the primary technical resource and subject matter expert for application software engineering within the team
Provide hands-on mentorship and technical guidance to software engineers at all levels, supporting their professional growth
Lead and participate in code reviews, providing constructive feedback to elevate code quality across the team
Collaborate with the Director of Software Engineering to define technical roadmaps and engineering capacity plans
Cross-Functional Collaboration
Partner with kernel, web, and Windows development teams to define requirements and deliver integrated software solutions
Engage with customers and stakeholders as a technical representative to understand operational needs and translate them into software capabilities
Coordinate with cybersecurity and compliance teams to ensure application software adheres to applicable standards for critical infrastructure environments
Continuous Improvement
Identify and drive opportunities to improve development processes, tooling, automation, and software delivery pipelines
Stay current with emerging technologies, industry trends, and best practices in application software engineering and industrial automation
Contribute to and maintain internal technical documentation, including architecture diagrams, API specifications, and developer guides
BACKGROUND & ABILITIES Education & Experience
Bachelor’s degree in Computer Science, Software Engineering, Electrical Engineering, or a related technical field - Required
Master’s degree in Computer Science or Software Engineering - Preferred
8+ years of progressive experience in application software development - Required
3+ years in a senior or lead engineering role with demonstrated technical leadership responsibilities - Required
Experience developing software for industrial automation, SCADA, energy management, or utility control systems - Preferred
Experience working in or with critical infrastructure environments subject to NERC CIP or similar regulatory frameworks - Preferred
Skills
Expert in object-oriented C/C++ - Required
Proficient in one or more object-oriented or systems programming languages such as Python or JavaScript - Preferred
Knowledge of Yocto / openembedded build system
Experience with software architecture patterns including microservices, event-driven architecture, and RESTful API design - Required
Proficiency with version control systems, CI/CD pipelines, and DevOps tooling (e.g., Git, Jenkins, Azure DevOps) - Required
Familiarity with industrial communication protocols such as DNP3, Modbus, IEC 61850, or OPC-UA - Preferred
Experience with cloud platforms (AWS, Azure, or GCP) and containerization technologies such as Docker and Kubernetes - Preferred
Knowledge of cybersecurity principles and secure coding practices applicable to critical infrastructure software, including IEC 62443-4-1 - Preferred
Experience with relational and time-series databases relevant to operational technology environments - Preferred
Core Competencies
Strong analytical and problem-solving skills with the ability to decompose complex technical challenges into actionable solutions
Exceptional verbal and written communication skills, including the ability to convey technical concepts to non-technical stakeholders
Demonstrated ability to lead technical initiatives and influence engineering direction without direct management authority
High degree of ownership, accountability, and attention to detail in delivering mission-critical software
Collaborative mindset with the ability to work effectively in a cross-functional, multi-disciplinary team environment
Commitment to continuous learning and staying current with evolving software engineering practices and technologies