C++ Software Engineer
Intelligent Flying Machines, Inc. (IFM) is looking for an experienced full-stack engineer who has worked on large-scale C++ software projects to join a small team developing flying robots.
We are IFM, a Chicago based robotics and computer vision company building intelligent perception systems for the digital future of logistics and manufacturing. As a company we are focused on commercializing cutting edge computer vision and machine learning technologies to bridge the gap between what is technically feasible and realistically achievable in real-world, continuous business applications.
Today, we are working with our customers to automate their inventory counting process using a fleet of proprietary flying robots. By combining Deep Learning with conventional Computer Vision methods, our robots know where they are and what they see using no external infrastructure.
What you will be working on:
As we are deploying around the world, we are looking for a person with experience in building and maintaining complex and large C++ software stacks. You will be working directly with our founder, Marc, and the rest of the core team to write application layer programs around low-level vision and machine learning software, while overseeing its integration with customer facing interfaces and enterprise software systems.
How we work:
We are a small team with a healthy focus on maintaining a proper software development workflow, documentation and testing. Our projects are usually planned in 2 week sprints with bi-weekly reviews and constant validation on our dev systems (robots). We plan our sprints based on a set of questions or hypotheses that we want to answer and aim to be 100% data driven in our decision making process.
- Experience building large scale software products leveraging test-driven principles at a startup pace
- Expert knowledge in C++ and working proficiency in Python
- Low-level understanding of C++ (writing and maintaining CMake files, linking and compiling libraries, handling dependencies, etc.) on UNIX systems is critical
- Ability to break down large problems and create effective development and testing strategies
- Excellent team working skills and demonstrated ability to work with highly technical engineers on complex systems
- Experience working with embedded systems in a Linux environment
- Ability to work with and integrate different platforms, tools, and libraries in C++
- Nice to have: familiarity with Tensorflow, Pytorch, Caffe, ROS, CUDA, SQL, OpenCV, Eigen, Boost, PCL
- Competitive salary and equity packages
- Large and spacious 2-story loft office, located in the heart of Chicago
- Ping Pong, snacks, bean bags, flying robots in the office... working on a Soylent dispenser