Software Developer C++/C#
Guildford, Surrey (Hybrid, 2 days per week onsite)
Permanent, £45k-£60k per annum
In this role you will be working for a well-established manufacturer of medical imaging devices. You’ll be developing code for beneficial products and will be part of an exceptionally friendly and highly skilled engineering team.
Job Summary:
We are seeking a skilled Software Developer with experience in C++ and C# development using Visual Studio 2019/2022, with a strong emphasis on COM (Component Object Model) interop. This role involves maintaining and developing applications that bridge managed and unmanaged code, integrating C# .NET applications with legacy or third-party COM components, and ensuring high performance and stability.
Key Responsibilities:
* Design, develop, and maintain applications in C++ and C# using Visual Studio 2019/2022.
* Implement and maintain COM Interop between managed (.NET) and unmanaged (native C++) code.
* Analyse and debug issues involving interop boundaries, memory leaks, and marshalling problems.
* Develop and consume COM interfaces and ensure proper registration, activation, and lifecycle management.
* Collaborate with other developers, testers, and product owners to deliver reliable, maintainable, and high-performance software.
* Write and maintain clear technical documentation for interop designs, interfaces, and processes.
* Participate in code reviews and enforce coding standards, particularly for interop safety and performance.
Required Skills & Experience:
* Strong proficiency in C++ (including COM development) and C# (.NET Framework).
* Proven experience working with Visual Studio 2019/2022.
* Development of GUI’s using WPF optionally (WinUI or other Windows GUI frameworks).
* Solid understanding of COM fundamentals: interface definitions (IDispatch, IUnknown), reference counting, threading models, and COM registration.
* Hands-on experience with P/Invoke, RCW/CCW, and .NET attributes for COM Interop ([ComVisible], [Guid], etc.).
* Ability to analyse interop issues, including memory management, threading, and performance.
* Experience integrating with or maintaining legacy Windows applications.
Desirable Skills:
* Experience with .NET Framework 4.x or .NET 6+ migration.
* Familiarity with ATL, MFC, or Win32 API.
* Understanding of unit testing and automated builds for mixed-language projects.
* Familiarity with tools such as Process Monitor, Dependency Walker, or WinDbg for low-level debugging.
* Knowledge of software development best practices and Agile methodologies.
Qualifications:
* Bachelor’s degree in Computer Science, Engineering, or a related field (or equivalent experience).
* Industry experience in a similar role with relevant technical responsibilities