NovaTech Automation is a company focused on smart automation and control solutions for electric utilities and critical infrastructure. The Staff Application Software Engineer will lead the design, development, and delivery of complex software applications while serving as a technical authority within the software engineering team.
Responsibilities:
- 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
Requirements:
- Bachelor's degree in Computer Science, Software Engineering, Electrical Engineering, or a related technical field
- 8+ years of progressive experience in application software development
- 3+ years in a senior or lead engineering role with demonstrated technical leadership responsibilities
- Proficient in object-oriented C++
- Experience with software architecture patterns including microservices, event-driven architecture, and RESTful API design
- Proficiency with version control systems, CI/CD pipelines, and DevOps tooling (e.g., Git, Jenkins, Azure DevOps)
- 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
- Master's degree in Computer Science or Software Engineering
- Experience developing software for industrial automation, SCADA, energy management, or utility control systems
- Experience working in or with critical infrastructure environments subject to NERC CIP or similar regulatory frameworks
- Proficient in one or more object-oriented or systems programming languages such as Python or JavaScript
- Familiarity with industrial communication protocols such as DNP3, Modbus, IEC 61850, or OPC-UA
- Experience with cloud platforms (AWS, Azure, or GCP) and containerization technologies such as Docker and Kubernetes
- Knowledge of cybersecurity principles and secure coding practices applicable to critical infrastructure software, including IEC 62443-4-1
- Experience with relational and time-series databases relevant to operational technology environments