Software Engineer

Employer

Job Description

About HaptX

HaptX develops technology that brings touch to virtual reality with unprecedented realism. We are a multidisciplinary team based in San Luis Obispo, California, and Seattle, Washington.

HaptX Gloves combine precise motion tracking with realistic tactile and force feedback, granting users a natural presence in a virtual world they can feel. Through plug-ins for Unreal Engine and Unity, our software development kit enables customers to create next-generation VR simulations with high-fidelity haptics. We are constantly improving our hardware and software systems in the pursuit of making experiences in virtual reality more compelling than ever. We are looking for qualified candidates to join us on this journey.

HaptX is proud to offer its employees comprehensive health insurance, a 401(k) plan, paid time off, relocation assistance, and equity options.

At HaptX, we celebrate differences and are committed to a diverse workplace that fosters inclusion, belonging and psychological safety for all employees. We are proud to be an equal opportunity employer and expressly prohibit any form of workplace discrimination based on race, color, religion, gender, sexual orientation, gender identity or expression, national origin, age, genetic information, disability, veteran status, or any other legally protected characteristics.


Title: Software Engineer

FLSA Status: Exempt

Reports To: Director of Software Engineering

Location: Redmond, WA or SLO, CA


About This Position

Through a C++ API and plug-ins for leading 3D engines, HaptX’s software development kits provide the tools we and our industrial customers need to integrate high-fidelity haptics into VR simulations and teleoperation applications. To support a growing market and our newest haptic hardware, we are constantly working to make our APIs and tools more useful, powerful, and reliable. We are seeking an experienced, forward-thinking software engineer well versed in C++ and software design principles to join us in these efforts.

Haptics is an interdisciplinary field. Working within a development team and communicating regularly with engineers from other domains, the software engineer will gain an intimate understanding of our systems’ software and hardware capabilities and will apply this knowledge in day-to-day tasks. Strong written and verbal communication skills are important. Expect to not only participate in code reviews among software-oriented peers but also to present occasional design reviews to broader technical and non-technical audiences.

The most promising candidates will know not only how to design, code, debug, and document software but also how to apply physics, vector math, matrix math, and trigonometry, since these help us describe and manipulate 3D worlds through code. Make sure you understand mechanics concepts such as forces, moments, velocities, and accelerations. Dot products, cross products, sines, cosines, and tangents will also come in handy. Prior use of common scripting languages such as Perl or Python is good to have. An ideal candidate will also enjoy the thrill and the challenge of pioneering a new software frontier while working in a tight-knit, collaborative team of enthusiastic engineers while developing advanced haptic technology.


Key Responsibilities

  • Design and develop C++ code, both working within and adding to an existing codebase
  • Own tasks within a larger project
  • Collaborate with other engineers of different disciplines to establish system requirements across functional boundaries
  • Understand end-user and customer requirements and formulate solutions to meet those needs
  • Write robust, flexible, maintainable, easy-to-understand, adequately documented code per company-established best practices
  • Create and execute unit and functional tests
  • Perform occasional haptic testing and tuning
  • Review code
  • Participate in design reviews
  • Demonstrate integrity and seek to build trust with coworkers
  • Understand and follow HaptX policies and procedures, including security policies


Required Qualifications

  • 2 or more years’ experience in a related position
  • Strong command of the C++ programming language
  • Ability to write efficient and easily expandable code
  • Effective software debugging skills
  • Object-oriented design and common software design idioms
  • State machine design
  • Version control tools such as Git or Subversion
  • Sturdy grasp of physics/mechanics concepts (forces, velocities, etc.)
  • Geometry, trigonometry, and basic linear algebra, including vector and matrix math
  • B.S. in Software Engineering, Computer Science, Computer Engineering, or related field
  • Demonstrate the ability to effectively and clearly communicate concepts, ideas, and knowledge to other individuals and teams
  • You are a team player with a friendly, positive attitude. You are comfortable wearing multiple hats and have genuine willingness to help out where help is needed.
  • Humble, coachable, and eager to grow from feedback
  • Resourceful, adaptable, able to find solutions and thrive in a rapidly evolving and fast-paced environment with minimal supervision
  • Residence in or ability to relocate to the Redmond, Washington, area or the San Luis Obispo, California, area
  • No sponsorship available for this position
  • Fully vaccinated against COVID-19 (i.e., has received final required dose in a COVID-19 vaccination series, including Moderna, Pfizer, Johnson & Johnson, or a vaccine administered outside of the United States and approved by the World Health Organization). Reasonable accommodations will be offered in accordance with applicable law for those who cannot receive the vaccine.


Desired Skills and Experience

  • Use of version control frontends such as GitHub or Sourcetree
  • Experience using a 3D game engine such as Unity or Unreal Engine
  • Scripting experience (e.g. Bash, Python, Perl)
  • C# experience
  • Firmware development
  • Networking
  • Multithreaded application development
  • Digital filtering
  • Knowledge of control systems, such as proportional–integral–derivative (PID) controllers


Physical Requirements

  • Be able to spend approximately six hours a day at a keyboard
  • Have two working hands within the acceptable size range of HaptX Gloves DK2
  • Gloves’ size limits are as follows:
  1. Hand length less than 208 millimeters (8.2 inches) from base of palm to tip of middle finger
  2. Hand breadth less than 96 millimeters (3.8 inches) across the knuckles
  • Have enough sensation in both hands to feel the output of HaptX Gloves
  • Must be able to lift up to 40 pounds at times


Please note this job description is not designed to cover or contain a comprehensive listing of activities, duties or responsibilities that are required of the employee for this job. Duties, responsibilities, and activities may change at any time with or without notice.