Senior Software Engineer for Athlete Performance Research
Role details
Job location
Tech stack
Job description
The software engineer will undertake a wide variety of research and development projects:
- Develop state-of-the-art algorithms to simulate human movement from wearable sensors and/or video
- Create real-time computational models that leverage mobile computing to analyze human movement.
- Create a compelling and straightforward user experience for researchers to visualize simulations of movement and create their own custom studies of movement (e.g., to predict joint loading during an athletic maneuver of interest).
- Develop a robust user experience in Python and make other improvements to facilitate uptake of our biomechanics software by the machine learning community
- Conduct software performance profiling and benchmarking to find ways to reduce computation time and push the bounds of the types of simulations that are possible.
Additional roles and details:
- Lead OpenSim software development projects, designing and implementing new tools to support our worldwide collaborators.
- Lead the use of professional development practices in our software, both for new code and for correcting deficiencies in old code. This includes design, documentation, testing, portability, maintainability, adherence to standards, and egoless participation in team code reviews both as subject and reviewer.
- Generate test cases/harnesses to target performance bottlenecks.
- Serve as a leader-by-example to academic programmers and Stanford doctoral students to help them learn best professional coding practices.
- Support external development teams who are using OpenSim by quickly answering questions online and in person at workshops and responding to feature requests and bug reports.
- Work with the project team to understand the various user communities served by OpenSim and match coding decisions to the needs of our users; turn these needs into a strategic vision and specific project/feature designs
CORE DUTIES:
- Propose, conceptualize, design, implement, and develop solutions for difficult and complex applications independently.
- Oversee testing, debugging, change control, and documentation for major projects.
- Supervise professional staff, as necessary, working on all phases of application development projects.
- Engage in long-term strategic planning.
- Define complex application development administration and programming standards.
- Troubleshoot and resolve complex technical problems.
- Lead projects, as necessary, for special systems and application development in areas of complex problems.
Once COVID-19 safety measures are no longer applicable, this position will be based on the Stanford campus and will be considered for an option of part-time telecommuting, subject to operational need., * Interpersonal Skills: Demonstrates the ability to work well with Stanford colleagues and clients and with external organizations.
- Promote Culture of Safety: Demonstrates commitment to personal responsibility and value for safety; communicates safety concerns; uses and promotes safe behaviors based on training and lessons learned.
- Subject to and expected to comply with all applicable University policies and procedures, including but not limited to the personnel policies and other policies found in the University's Administrative Guide, http://adminguide.stanford.edu., The job duties listed are typical examples of work performed by positions in this job classification and are not designed to contain or be interpreted as a comprehensive inventory of all duties, tasks, and responsibilities. Specific duties and responsibilities may vary depending on department or program needs without changing the general nature and scope of the job or level of responsibility. Employees may also perform other duties as assigned.
Requirements
Bachelor's degree in computer science or related field and eight years of relevant experience, or a combination of education and relevant experience.
?Required:
- 5+ years of programming experience in Java or Python, or another Object-Oriented Programming language
- Performance profiling/improvement in C++
- Experience with computational numerical methods (e.g., optimization, machine learning)
- A commitment to high-quality professionally engineered software
- Excellent skills in communication and teamwork
Desired:
- Knowledge of multibody dynamics, computer vision, and/or biomechanics/anatomy/physiology
- Experience in 3D Visualization
- Experience with CMake and Matlab
- Experience designing intuitive user interfaces
- Masters or PhD in computer science or a related field
PHYSICAL REQUIREMENTS*:
-
Constantly perform desk-based computer tasks.
-
Frequently sit, grasp lightly/fine manipulation.
-
Occasionally stand/walk, writing by hand.
-
Rarely use a telephone, lift/carry/push/pull objects that weigh up to 10 pounds.
-
- Consistent with its obligations under the law, the University will provide reasonable accommodation to any employee with a disability who requires accommodation to perform the essential functions of the job.
Benefits & conditions
- May work extended hours, evening, and weekends.
- Occasional overnight travel., * Freedom to grow. We offer career development programs, tuition reimbursement, or audit a course. Join a TedTalk, film screening, or listen to a renowned author or global leader speak.
- A caring culture. We provide superb retirement plans, generous time-off, and family care resources.
- A healthier you. Climb our rock wall, or choose from hundreds of health or fitness classes at our world-class exercise facilities. We also provide excellent health care benefits.
- Discovery and fun. Stroll through historic sculptures, trails, and museums.
Enviable resources. Enjoy free commuter programs, ridesharing incentives, discounts and more!