Principal Engineer, Software
Celestica is looking for a talented and passionate software engineers who can help drive next generation data center and AI compute blades to join our team. You'll be responsible for designing, developing, and testing software that runs on SmartNICs, enabling high-performance networking and offloading critical workloads from the main CPU.
Key Responsibilities
Software Development :
- You'll be responsible for designing, developing, and testing software that runs on SmartNICs, enabling high-performance networking and offloading critical workloads from the main CPU.
- Optimize code for performance, efficiency, and low latency
- Innovate new ideas in conjunction with networking engineers to optimize overall data center efficiency
- Architect solutions for customer's data center management needs working with multiple lower-level drivers, OS, libraries
Hardware Integration :
You'll be responsible for designing, developing, and testing software that runs on SmartNICs, enabling high-performance networking and offloading critical workloads from the main CPU.Troubleshoot and resolve hardware-software interaction issuesPerformance Optimization :
Analyze and optimize network performance, identifying bottlenecks and implementing solutions.Develop and implement performance testing methodologies and tools.Security :
Design and implement security features for SmartNIC software, ensuring data integrity and confidentialityStay up-to-date on security best practices and vulnerability remediationCollaboration :
Work effectively in a team environment, collaborating with engineers and peer functional leads from different disciplines to innovate solutions, triage issues and speed executionWork with product line management, customers and sales teams to understand requirementsExplain the value addition software brings to technical and non-technical audiences.Leadership :
Mentor and coach team members on the technical skills and approaches to solve problems.Review and maintain quality of code going into production.Architect software applications that will work across multiple technology generations with minimal changes.Present innovation and value addition from our software in technical forums and customer interactionsKnowledge / Skills / Competencies
Strong programming skills : Proficiency in C, C++, P4 and other low-level programming languages.Networking knowledge : Deep understanding of networking protocols (TCP / IP, Ethernet, etc.) and conceptsOperating system knowledge : Experience with Linux driver kernel development is a plusHardware experience : Familiarity with main elements of CPU, DPU, memory, NICs, board monitoring elements is a mustDebugging and testing skills : Ability to identify and resolve software and hardware issues.Problem-solving skills : Strong analytical and problem-solving abilitiesExperience with GPU programming : Prior experience GPU libraries like CUDA and ROCm is huge plusExperience with SmartNICs : Prior experience developing software for SmartNICs and understanding of cloud computing architectures and services is the plusClear Communication : Proven ability to articulate requirements and vision to large and diverse audience through written documents like architecture specifications and verbal presentations in technical forums is required.Physical Demands
Duties of this position are performed in a normal office environment.
Duties may require extended periods of sitting and sustained visual concentration on a computer monitor or on numbers and other detailed data.
Repetitive manual movements (e.g., data entry, using a computer mouse, using a calculator, etc.) are frequently required.
Occasional travel may be required.
Typical Experience
15-20 years
Typical Education
Bachelor degree or higher education in Engineering
Skills Required
System Architecture, Operating System