We are looking for a Senior Windows Software Engineer to join an experienced engineering team responsible for an established commercial product. This is a hands-on role with significant individual ownership. You will develop and improve Windows-based software, solve complex engineering problems, and contribute to the performance, reliability, and long-term quality of the product. You will be expected to work independently, make sound technical decisions, and take solutions from investigation through implementation and production support while collaborating with engineers across the broader product organization. Responsibilities Design, develop, and maintain cross-platform endpoint agent software using C# and .NET. Develop components and services that interact with Windows, Linux, and macOS operating systems. Implement system monitoring, data collection, process management, and event-handling capabilities. Develop efficient communication mechanisms between endpoint agents and backend services. Design modular, maintainable, and extensible software architectures. Work with asynchronous programming, multithreading, concurrency, and inter-process communication. Integrate with native operating system APIs and components where necessary. Optimize application performance, memory consumption, and resource utilization across different operating systems. Ensure agent reliability, stability, and resilience in different customer environments. Investigate and resolve complex technical issues, including performance and production-related problems. Develop automated unit, integration, and system tests across supported platforms. Collaborate with architects, developers, QA, DevOps, and product teams. Participate in code reviews and contribute to engineering standards and best practices.
Experience
Strong experience with C# and .NET development.
Good understanding of object-oriented programming, SOLID principles, and software design patterns.
Experience developing multi-threaded and asynchronous applications.
Good understanding of operating system concepts, particularly processes, threads, memory management, services, and file systems.
Experience developing software for at least one of the following operating systems: Windows, Linux, or macOS.
Understanding of operating system APIs, background services, and process lifecycle management.
Knowledge of networking fundamentals, including TCP/IP, HTTP, WebSockets, and gRPC.
Experience with debugging, performance profiling, and troubleshooting complex software issues.