The Senior Software Engineer is responsible for designing, developing, testing, and supporting production-grade application and platform capabilities within DNV’s Digital & Transformation organization. This role sits within the Application Engineering section and contributes to the development and modernization of scalable web applications that support digital delivery across Energy Systems.
This role sits within the Digital & Transformation organization, helping to advance how DNV performs Due Diligence, Verification & Assurance, and Renewables Certification work across Energy Systems.
Working in close partnership with Product leadership, Data & AI Engineering, Solution Engineering, Platform Reliability, Solution Architecture, and Platform Security & Compliance, this role helps bring application capabilities, data services, AI-enabled features, workflows, and APIs into one cohesive platform and product experience.
The Senior Software Engineer designs, builds, tests, and supports scalable software across a modern full-stack environment that includes Python, Django, TypeScript, React, .NET, and cloud services across Azure and AWS. The role requires strong engineering fundamentals, practical cloud experience, and the ability to collaborate effectively across globally distributed teams.
This role supports custom software development, application modernization, and integration with low-code or hybrid development environments, helping establish shared patterns, APIs, reusable components, and maintainable application architecture across the platform.
**This role is based at our DNV office in Chennai, India. Further details regarding role-specific requirements will be shared during the interview process.**
Key Responsibilities
Software Engineering & Delivery
- Design, develop, test, and maintain scalable application and platform capabilities using modern software engineering practices.
- Build cohesive product experiences across web applications, backend services, APIs, user interfaces, and platform integrations.
- Translate product requirements, technical design, and architecture direction into maintainable, production-ready software.
- Participate actively in code reviews, technical design discussions, estimation, delivery planning, and implementation decisions.
- Write clean, well-structured, testable, and maintainable code that supports long-term product quality and team velocity.
Full-Stack Application Development
- Develop modern full-stack web application capabilities using technologies such as Python, Django, TypeScript, React, .NET, and related frameworks.
- Build frontend components and backend services that support performant, usable, secure, and maintainable application experiences.
- Support application modernization efforts, including refactoring, technical debt reduction, framework upgrades, and migration from legacy patterns where appropriate.
- Develop application capabilities used for structured review workflows, document-heavy collaboration, issue tracking, customer interaction, reporting, and delivery of technical work products.
- Partner with Product and design stakeholders to ensure application functionality is intuitive, reliable, and aligned with user workflows.
Modern Development & AI-Enabled Engineering
- Use AI-assisted development tools to accelerate coding, testing, documentation, refactoring, and engineering analysis.
- Apply strong engineering judgment when using LLM-enabled workflows, ensuring generated or assisted code meets standards for quality, security, maintainability, and performance.
- Contribute to reusable development patterns, documentation, and engineering practices that improve team velocity and consistency.
- Use AI-enabled tools where appropriate to support test generation, code review preparation, technical documentation, and developer productivity.
Architecture, Platforms & Interoperability
- Develop APIs, backend services, frontend components, and integration patterns that support platform interoperability.
- Collaborate with Solution Architecture, Data & AI Engineering, Solution Engineering, and Platform Reliability to align technical decisions across the platform.
- Help integrate applications with data services, AI-enabled capabilities, workflow configurations, authentication patterns, and enterprise systems.
- Support the appropriate balance between custom application development, reusable platform services, low-code configuration, and API-enabled capabilities.
- Help modernize and integrate existing applications into a cohesive platform architecture.
Data & AI Integration
- Support integration of data-driven and AI-enabled features into production web applications.
- Collaborate with Data & AI Engineering on APIs, extracted outputs, calculation services, model outputs, and user-facing AI capabilities.
- Help ensure AI-enabled and data-driven features are implemented in ways that are reliable, testable, secure, and understandable to users.
- Build application interfaces and services that make data, AI outputs, workflow status, and platform capabilities accessible within the user experience.
DevOps, Reliability & Security
- Contribute to CI/CD pipelines, automated testing, deployment automation, monitoring, and incident readiness.
- Build software with strong attention to reliability, performance, availability, scalability, and operational support.
- Support observability practices including logging, monitoring, error handling, and production diagnostics.
- Follow secure development practices aligned with internal security standards, SOC 2 Type II, ISO 27001, and enterprise security expectations.
- Collaborate with Platform Reliability, Security, and Global Shared Services teams to support secure, reliable, and maintainable production systems.
Collaboration & Technical Ownership
- Work effectively with Product, Solution Engineering, Data & AI Engineering, Platform Reliability, Architecture, Security, and regional teams in a globally distributed environment.
- Take ownership of assigned features, services, defects, and technical improvements from design through production support.
- Communicate technical tradeoffs clearly and contribute to pragmatic engineering decisions.
- Mentor less experienced engineers through code reviews, technical guidance, pairing, and shared engineering practices.
- Contribute to a culture of accountability, collaboration, continuous improvement, and delivery excellence.