Senior Software Developer
Position Purpose
We are seeking three Senior Software Developers to modernize a business-critical WPF application with significant technical debt. The role will focus on progressively refactoring tightly coupled legacy code into a modular, testable architecture using the MVVM pattern and a dedicated service layer, while enabling ongoing business feature development to continue.
Key Responsibilities
- Refactor legacy WPF modules and screens into a clean MVVM architecture with clear separation of concerns.
- Design and implement service-layer abstractions that decouple ViewModels from business logic and infrastructure dependencies.
- Apply dependency injection and inversion‑of‑control practices using suitable .NET containers, including Microsoft.Extensions.DependencyInjection where appropriate.
- Create and maintain automated unit tests using frameworks such as xUnit or NUnit, with mocking through Moq or equivalent tools.
- Preserve existing business behavior during incremental migration and support coexistence between legacy and modernized modules.
- Follow established code guidance, project folder structures, UML designs, and internal architectural governance.
- Use Visual Studio Code Metrics, code analysis capabilities, and SonarQube quality gates to track maintainability, complexity, standards compliance, and technical‑debt reduction.
- Participate in code reviews, technical discussions, and delivery planning with internal technical leaders.
- Deliver production‑quality code with minimal supervision and contribute immediately to the refactoring program.
Required Qualifications and Experience
- Strong professional experience developing desktop applications using C#, .NET, WPF, and XAML.
- Advanced hands‑on expertise in MVVM, including data binding, commands, resources, UI lifecycle management, and ViewModel design.
- Practical experience with MVVM frameworks such as CommunityToolkit.Mvvm, Prism, or comparable frameworks.
- Deep understanding of dependency injection, interface‑driven design, service abstractions, and IoC containers.
- Demonstrated experience refactoring complex, tightly coupled legacy applications into modular components.
- Strong unit‑testing skills using xUnit or NUnit and mocking frameworks such as Moq.
- Hands‑on experience with static code analysis and technical‑debt management using SonarQube and Visual Studio tooling.
- Ability to interpret and implement architectural documentation, code standards, folder conventions, and UML diagrams.
- Proven ability to work independently in a senior engineering role and contribute with minimal technology ramp‑up.
Preferred Attributes
- Experience modernizing large‑scale or business‑critical WPF applications through incremental migration.
- Familiarity with parallel refactoring strategies that allow feature development and modernization to proceed concurrently.
- Strong analytical, troubleshooting, and communication skills in a cross‑functional engineering environment.
- Quality‑first mindset with disciplined use of automated tests, code reviews, and measurable engineering metrics.