The Senior Software Engineer is responsible for designing, developing, testing, deploying, and supporting production-grade software products and shared 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.
This is not a project-based delivery or staff-augmentation role. Engineers are expected to develop deep product knowledge and remain accountable for the quality, maintainability, and operation of the software they build.
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, deploys, and supports scalable software across a modern full-stack, multi-cloud environment. The primary application stack includes Python, Django, TypeScript, React, and related web technologies, with cloud services spanning both AWS and Microsoft Azure. 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 position can be located in our Toronto office, presenting a dynamic hybrid schedule where employees will typically spend three (3) days per week working from either a DNV office or client location/site. Further details regarding role-specific requirements will be shared during the interview process**
What You'll Do
- 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.
- Work directly with Product and Architecture stakeholders to shape requirements, evaluate technical approaches, and translate product 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.
- Own product capabilities through design, implementation, deployment, monitoring, maintenance, and iterative improvement rather than treating delivery as complete when the initial feature is released.
Full-Stack Application Development
- Develop modern full-stack product capabilities using Python, Django, TypeScript, React, and related frontend and backend technologies.
- Build responsive, reusable, and accessible frontend experiences using TypeScript and React, integrated with secure, scalable, and maintainable backend services and APIs built using Python and Django.
- 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.
- Contribute to modular application architecture and service boundaries across Python/Django applications, React frontend clients, APIs, shared services, data stores, and cloud-hosted capabilities.
Data & AI Integration
- Integrate data-driven, search, agentic, and AI-enabled capabilities into production web applications using well-defined APIs and reusable application patterns.
- Collaborate with Data & AI Engineering on Azure AI Search indexes, retrieval pipelines, model and agent outputs, calculation services, data APIs, evaluation approaches, and user-facing AI experiences.
- 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 source control and CI/CD pipelines, automated testing, deployment automation, environment management, 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.