General Purpose:
We are seeking a highly-skilled Senior Software Developer to design, implement, and maintain high-performance software systems using C# and C++.
Position Summary, Responsibilities and Expectations:
The Senior Software Developer is responsible for developing and maintaining complex software applications and system-level components. The role involves collaborating with cross-functional teams to translate business needs into robust technical solutions, guiding architectural decisions, and mentoring junior developers.
Responsibilities:
Responsibilities:
- Design, develop, and maintain high-performance desktop applications in C#/.NET.
- Collaborate with team members to define architecture and technical approaches for features and projects.
- Participate in code reviews and contribute to setting high-quality standards across the codebase.
- Support and guide junior and mid-level developers through mentorship and technical assistance.
- Work closely with cross-functional teams including QA, Product Management, and UX to deliver high-impact features.
- Assist in planning, estimation, and execution of development tasks and deliverables.
- 5+ years of professional software development experience.
- Strong problem-solving skills and the ability to debug complex systems.
- Solid written and verbal communication skills.
- Bachelor’s degree in Computer Science, Software Engineering, or related field (or equivalent experience).
Essential Skills and Experience:
- Proficient in C#/.NET; experience with P/Invoke and data marshalling.
- Experience with WinForms or WPF/UWP
- Experience with creating SDKs and communication protocols
- Knowledge of C++ and experience with Managed C++
- Knowledge of Qt Framework and QML would be a plus
- Knowledge of Windows subsystems and Windows API is a must, including Windows Services, experience with Windows drivers would be a plus, COM (Component Object Model) would be a plus
- Inter-process communication, RPC, networking
- Experience with creating application installers
- Strong understanding of muti-threading and memory management is a must
- Experience with writing applications communicating with devices connected to the system over various interfaces (USB, Bluetooth etc)
- macOS and Linux app programming would be a plus
- Experience with build systems like CMake, MSBuild
- Standard tools and practices (CI/CD, Git, etc.)
- Strong communication and collaboration skills, proficient in English