Job Title: C++ Developer
Location: Foster City, CA (Onsite/Hybrid)
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++