Principal Software Engineer
Active
Job description
Responsibilities include prototyping and evaluating new hardware and software designs, bringing up new SoCs and platforms, validating hardware and firmware features, debugging system-level issues, analyzing performance, and developing scalable automation frameworks and regression test suites. The candidate will work closely with architects, silicon design teams, firmware developers, operating system engineers, and system integration teams to define requirements, enable new capabilities, optimize platform performance, and drive resolution of complex hardware and software issues throughout the product lifecycle. Develop kernel and user mode components for Windows to enhance diagnostic and debugging capabilities at scale that meet our security and privacy standards. Envision processes and develop infrastructure that efficiently integrates the new diagnostic data for teams in Windows, IHVs and OEMs to put into practice. Bachelor's Degree in Computer Science or related technical field AND 6+ years technical engineering experience with coding in languages including, but not limited to, C, C++, C#, Java, JavaScript, or Python. OR equivalent experience. A Bachelor's degree in Computer Science, Computer Engineering or other relevant field of study combined with similar relevant work experience. 7+ years of experience in software and/or product development. Demonstrated experience with C/C++ design, coding, debugging and testing skills. Solid communication skills required, including the ability to clearly express technical concepts in verbal and written forms. Solid understanding of SoC architecture, platform bring-up, boot flows, and system initialization. Experience with silicon validation, hardware debugging, and root cause analysis across hardware, firmware, and software layers. Knowledge of platform technologies and peripherals including PCIe, NVMe, USB, I2C, SPI, UART, GPIO, and power management. Solid understanding of operating system fundamentals, including memory management, scheduling, interrupts, synchronization, and multithreaded programming. Experience developing, debugging, and optimizing device drivers in Windows or Linux environments. Familiarity with Plug and Play architecture, device enumeration, power management, and driver lifecycle management. Experience with kernel debugging, crash dump analysis, hardware debuggers, and JTAG-based bring-up and validation tools. Proficiency in designing maintainable, modular, and reusable software components with a focus on scalability and long-term supportability. Experience developing automated validation frameworks, test infrastructure, and regression suites for pre-production and production hardware. Solid analytical and troubleshooting skills with the ability to debug issues across silicon, firmware, drivers, operating systems, and applications. Proven ability to collaborate effectively with cross-functional teams and external partners to deliver solutions that scale across multiple product generations and architectures. Experience working in Agile development environments and applying Scrum methodologies to deliver high-quality engineering outcomes.