- LocationMadrid, Spain
-
IndustryInformation Technology and Services
THE ROLE
Being a Software Engineer, you will be in charge of design, develop, troubleshoot, and debug software programs or parts for software enhancements and new products. You will design enhancements, updates, and programming changes for portions and subsystems of systems software.
You will have a key role in driving product’s roadmaps to deliver cost-effective infrastructure and software systems.
DUTIES AND RESPONSIBILITIES
- Design and implement highly reliable, fault tolerant systems.
- Analyse, design, program, debug, and modify software enhancements and/or new products
- Perform testing, debugging of storage features, data path and storage efficiency
- Analyses design and determines coding, programming, and integration activities required based on general objectives and knowledge of overall architecture of product or solution.
- Design and conduct experiments to evaluate system changes with respect to performance.
- Deep dive into performance anomalies with the intent of discovering their root cause for both single and multi-node (i.e., distributed) systems.
- Design systems and components with performance in mind, considering both algorithmic and system-level criteria.
THE REQUIREMENTS
- Strong hands-on C/C++, Python programming and debugging skills
- Strong hands-on Linux kernel/user mode multiprocessor, multithreaded programming.
- An excellent understanding of threading, allocating stack, kernel, cleaning up memory, takes up resources…
- Comfortable with Lock convoys, starvation, deadlocks, priority inversions and getting RCU rights.
- Experience building up efficient code and debugging performance of multi-node systems.
- Designing software systems running on multiple platform types.
- Software systems testing methodology, including writing and execution of test plans, debugging, and testing scripts and tools.
