Staff Application Software Engineer C++
Indexed description
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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
fH25yZxsZE
Create a free Caio profile to unlock more results and save your role and location preferences.
Unlock free search