Role: C++ Application DeveloperDuration: 12+ Months Contract Location: Fully Remote Client: SAP AmericaID: SAPXJP00063825
Job Description: EXPECTATIONS AND TASKS: A developer in the SCAL team is expected to: - Develop reliable and performant code in C++ for a critical Supply Chain algorithm library - Work in the SCAL team with other developers following a SCRUM methodology and standard Software Development practices (BDD, TDD) - Work with PO and SCRUM team on defining and estimating the backlog of the team - Work with Operation Research Scientists on prototyping Supply Chain algorithms and later doing the Engineering to productize them - Be able to read mathematical formulations provided by the Operation Research Scientists and convert that into a Copyright/Trademark software design and working code - Work with other members of the SCAL Scrum team on collaboratively doing high level designs - Write technical design documentation to facilitate technical discussions and collaboratively designs sessions as well as to support ramp up of other teammates as well as future maintenance - Provide and receive feedback from other members of the SCAL team during design reviews and code reviews - Work with other SCRUM teams on the adoption of new Supply Chain Algorithms as well as changes to existing Algorithms on the application layer - Focus on Quality of the numbers provided by the implemented Algorithms as well as the Quality and maintainability of the SCAL code - Improve the mathematical Algorithms implementation so they are numerically stable, CPU and Memory efficient, performant and scalable, taking advantage of multiple CPUs and distributed computing - Focus on automation of the development process including quality validation - Show initiative on identifying improvement areas - Drive topics to resolution in a high level of quality, speed, reliability and efficiency - Participate in the SCRUM process and provide feedback in retrospectives to drive improvement on the team development process - Work closely with other SCAL developers in the design, implementation and testing of the library - Write unit tests for developed code - Write automated tests for integration testing - Share acquired knowledge with other members of the team through impromptu presentations or planning workshops - Be detailed oriented and meticulous in their coding and documentation - Support Customers and other IBP teams when incidents are reported and contribute to their prompt resolution - Do detailed root cause analysis of incidents reported and defining resolutions to avoid the issue in the future EDUCATION AND QUALIFICATIONS / SKILLS AND COMPETENCIES Required: - Bachelor’s degree in computer science or related Engineering field - Strong experience designing and developing in C++ productive systems - Solid understanding of Object-Oriented Programming and its fundamental principles - Fluency in multi-threading concepts and distributed computing - Strong experience writing C++ Unit Test and designing for code testability - Understanding of TDD and BDD - Good verbal communication skills to present designs and code changes to the team - Good written communication skills and ability to write technical design documents to facilitate design discussions and peer reviews with the team. - Experience working in a SCRUM team and working well with other developers and Product Owners - Experience working on Linux - Experience compiling and debugging C++ programs with tools like gcc, cmake, gdb, etc - Experience using development tools like git, gerrit, - Experience debugging, diagnosing, and fixing issues in C++ programs - Process and detailed oriented - Analytical Thinking and Problem-Solving abilities expressing solutions in code - Be methodical and meticulous on her designs and coding as well as have great attention to details - Ability to read mathematical papers and translate them into working code - Self-motivated working attitude - Ability and desire to learn new technologies and skills, specifically SAP related technology like HANA and ABAP - Ability to communicate well within a diverse team and with other teams around the globe - Flexibility and ability to adapt quickly to changes The following skills will be considered a plus: - Experience managing a personal Linux system - Experience using a C++ Profiling tool like valgrind - Knowledge of asan (address sanitizer), ubsan (undefined behavior sanitiser), coverity or similar tools for C++ code analysis - Python scripting - Understanding of Supply Chain and OR concepts - Additional Mathematics or Statistics background - Knowledge on Machine Learning and AI algorithms and using ML/AI libraries in C++ WORK EXPERIENCE - 5+ years of working experience designing and developing Enterprise Applications in C++