Robotics Software Engineer

IHMC is seeking talented software engineers to be part of the IHMC Robotics Team to develop software tools for legged robots, exoskeletons, and UAVs. The robotics team has been working on legged robots for the past 17 years, including placing second in the DARPA Robotics Challenge, providing support for the NASA Space Robotics Challenge, developing legged systems like the M2V2 biped and the Mina V2 exoskeleton, being a finalist in the Toyota Mobility Foundation’s Mobility Unlimited Challenge. We currently have several ongoing projects, including the development of our new Nadia humanoid robot, the design of autonomy and locomotion for other bipeds, and the development of a new exoskeleton for worker safety, as well as the development of efficient control and coordination strategies for teams of UAVs. This development has resulted in a large, internally maintained software stack with over 2 million lines of code.

This candidate will work full time with the robotics team on various projects and platforms. Roles and responsibilities are varied, and include: development of new algorithms, writing new operator interfaces, integrating open source software packages, interfacing with sensors, and helping maintain the IHMC build system. As IHMC is first and foremost a research institute, this candidate will have opportunities to gain experiences and try new things, both with a varied set of responsibilities and through functions like the IHMC lecture series and regular learning lunches.

Ideal Candidate:

The ideal candidate must be passionate about robots, dedicated to writing clean, readable software, and have an engineering degree and 2 years or more experience working in robotics. Candidates should have experience with standard software engineering practices and Object Oriented programming. Preference will be given to candidates that have developed software for dynamic robots. Applicants must have good communication and documentation skills, and thrive in both a team and inpidual environment.

Required Qualifications:

  • Bachelor’s degree in an engineering major, with software focus
  • 2 years of experience developing software for robotic systems
  • Authorized to work in the United States
  • Able to program in C, C++, or Java
  • Experience working with continuous integration tools
  • Experience working with various communication protocols, such as TTP and DDS.

Preferred Qualifications:

  • Master’s degree in an engineering major, with software focus
  • Experience bringing up new robotic platforms
  • Familiarity with version control systems such as Git
  • Experience with embedded systems, such as motor controllers
  • Experience integrating external, possibly open-source, software packages
  • Experience writing and utilizing modularized software processes communicating over ROS
  • Experience writing software using the Test Driven Development practice
  • Experience working with perception sensors
  • Experience with Gradle
  • Experience with Unity

To Apply:  

Complete the timed Java challenge at HackerRank by going to the following link:

Please note that the Java programming challenge can be difficult and you will be given up to 16 hours to complete it. The challenge contains some straightforward robotics problems, as well as some more complex programming challenges. The challenge cannot be paused, so only begin it when you are ready and have allotted adequate time and brainpower to complete the challenge. In addition, you will be asked to upload your resume to the site during the challenge.

Once you have completed the Java challenge, email with the subject line “Software Engineer Position – YourLastName YourFirstName” and include the following:

  1. Current resume in pdf format. Name your file: “YourLastName_Resume.pdf”.
  2. Cover letter in pdf format. Name your file: “YourLastName_CoverLetter.pdf”
  3. Download this Pre-Interview Questionnaire pdf, fill it out and attach it.

In the cover letter:

  • One to two page essay describing why you want to be a developer of software for robots, what makes you qualified, and what you see as the major challenges to achieving robots that are widely capable of real-world application..
  • Description of robot software you implemented. Preferably a link to a web page describing your system, a published paper, and/or software examples.
  • Provide email and phone number for three (3) professional references.

In addition, we ask that you submit a 1 minute video of you discussing the robot software described in the cover letter. The purpose of this video is to demonstrate your communication skills. The video should:

  • Introduce yourself (first and last name, etc),
  • Include your talking about your software project,
  • Be 1 minute (+/- 15 seconds) in length,
  • Have clear audio,
  • Include the link to YouTube video in your cover letter.

Submit your application package to The subject of the email should be: Software Engineer Position – YourLastName YourFirstName

Your score on the Java programming challenge will be factored into your application and is required to apply for this position. Team IHMC develops extensively in Java, and therefore new team members must be effective Java programmers. If you are proficient in other programming languages and wish to learn Java, we recommend reading “Thinking in Java” by Bruce Eckel, and installing the Eclipse or IntelliJ IDE to quickly get up and running. If you want to practice on programming similar programming challenges, before trying the IHMC challenge, we suggest getting an account at HackerRank and trying out some of their warmup challenges at

Updates to this announcement may appear at


Location: Institute for Human and Machine Cognition (IHMC), Pensacola, FL. Candidate will be required to work on site if selected.

IHMC is an Equal Opportunity/Affirmative Action employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, national origin, disability, or protected Veteran status.