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:
* 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.
Expectations:
* 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