We are seeking a Staff Software Engineer – Kernel Development to join our R&D team. You will be designing and working on core components of a revolutionary virtualization platform, including cutting edge container and container orchestration solutions on the Windows & Linux platform.The role is recognized as a specialist in multiple fields, advises on design and development approach, and often acts as a Tech Lead working on complex projects and issues where analysis of situations or data requires both broad and in-depth evaluation of variable factors.You will participate in code reviews to ensure solution meets requirements and identify additional use cases. If you are passionate about kernel development, and have development experience in the cloud & Docker/Kubernetes technologies with a proven ability to readily acquire new skills, you are the person we are looking for!
Key responsibilities and duties include, but are not limited to:
- Responsibly plans, prioritizes, organizes and performs technical work and ensures the integrity of significant and diverse projects; applying a wide range of experience and understanding of trends and technologies. Leads the analysis and conceptual design and technical direction of proposed projects. Provides guidance to others in the implementation of project plans; provides software development leadership within projects. Performs and leads work across all sub-disciplines of software and systems engineering, including: requirement development, product design, software estimation, software design, software construction (coding), software test, software performance measurement, software product information creation and performing software maintenance
- Actively supports, communicates and enforces DataCore’s software engineering processes and standards
- Reviews progress and evaluates results of multiple technical projects and processes against conformance to plans and specifications
- Establishes and maintains thorough and accurate documentation of all work; oversees technical specification documentation and leads reviews
- Leads the implementation, unit testing, debugging and integration of highly complex code across multiple concurrent projects; oversees the design, development and execution of tests to verify the functionality, accuracy, and efficiency of developed or enhanced software; reviews results analyses for conformance to plans and specifications making recommendations based on the results; leads design changes or enhancements as necessary
- Drives process enhancements and leads working groups in improving specific work practices in the wider organization (e.g., requirement specification, peer review, coding standards); leads continuous quality improvement in meeting internal and external customer requirements (including customer escalation and cross-team support)
- Provides technical direction and leadership to a group or project team; leads scrum/project team members in prioritizing and resolving issues and improving productivity and velocity to improve future results; mentors and motivates team members to achieve and exceed project goals through innovation and productivity improvements
- Actively pursues and leads others in acquiring information and training regarding trends and advancements for mission critical technologies, and identifies opportunities for others to incorporate acquired skills and knowledge where applicable; attends technical conferences as appropriate and shares acquired knowledge and insights with others
Essential skills and experience required
- Bachelor’s degree or equivalent in computer science, electrical engineering, or related field; equivalent experience may be substituted for formal education
- 8 to 12 years of relevant experience
- Proven track record of success applying knowledge and discipline in software engineering process; experience as a team leader on complex projects, providing guidance on design and development approach
- Strong kernel fundamentals
- Experience with developing device drivers
- Experience with performance analysis / tracing tools
- Excellent understanding of algorithms and data structures theory with practical application
- Good experience in C/C++, multi-threaded software development, distributed systems
- Strong understanding of optimization, memory management, concurrency and multithreading
- Excellent problem solving, critical thinking, and communication skills
- Strong build, debug and test skills
- Git experience
- Familiar with agile methodologies: e.g. Scrum, Kanban, TDD
- Good understanding of Project Management methodologies
- Kernel or device driver experience with an understanding of low-level interactions between hardware and software Experience with Systems Software development over Windows OS.
- Experience mentoring/leading an engineering team through a technical project
- Experience independently publishing papers, blogs, and creating and presenting briefings to technical audiences
- Demonstrated technical leadership skills and ability to transfer knowledge effectively
The physical demands described here are representative of those that must be met by an employee to successfully perform the essential functions of this job. Reasonable accommodations may be made to enable individuals with disabilities to perform the essential functions.
While performing the duties of this job, the employee is occasionally required to stand, walk, sit, use hands to handle, or feel objects, reach with hands and arms, climb stairs, balance, stoop or kneel, talk and hear.