Do you want to gain hands-on experience in embedded software? Are you eager to learn and develop critical skills for your future career as an engineer? In this 10-week Embedded C++ Software Intern role, you will learn to be a part of a team of developers, responsible for a piece, but working along with others without breaking your work and the larger code base. An experience that can't be emulated in academia. Not only will you be gaining critical skills in embedded software, but you will also have the opportunity to be exposed to the ins and outs of the company while getting exposure to all other departments and how they operate. The specific project is related to our machine learning solutions, and will be determined based on the needs at the time of the internship. Success in the Role: What are performance outcomes over the first half and second half of the internship you will work toward completing? Weeks 1–2: Environment Setup Set up the development environment Learn how to operate the Evolv Express system Receive an overview of your internship project Weeks 3–4: Design Phase Design a solution to the assigned problem Write a technical design document Conduct a team review of your proposed solution Weeks 5–7: Implementation Phase Implement your design Debug issues as they arise Iterate on your code and refine your solution Weeks 8–9: Feedback & Improvement Participate in a formal code review Apply reviewer feedback Evaluate alternatives, document future enhancements Week 10: Final Presentation Present your completed project to the engineering team Share outcomes, lessons learned, and next steps The Work: What type of work will you be doing? What assignments, requirements, or skills will you be performing on a regular basis? Technical Development Our team does embedded C++ development, using some Python scripts as tools for testing and prototyping. As a member of the team, you will get more experience using nuances of the language, learn how to carve a part of the code without impacting other pieces unintentionally. You will get familiar with troubleshooting bugs, performing trials on HW, and understanding how interaction with others can impact your work. Design and Communication As part of your project, you will create a technical requirement document describing what you plan to implement and how you plan to do it. What memory and communication resources you would require will be reviewed on whether these can be accommodated within our system. You will create an automated test plan and write code to verify your code continues to work correctly even if other code pieces around it are modified, so when you go back to school, things don’t get lost. Team Collaboration You will be joining the Software Team, reporting to the Principal Software Engineer. The team culture is one based on building trust, collaboration, on-going development through kindness, drive and fun. In addition to your project lead, you will be working with our dev tools team to make sure nothing breaks, you will work with other team members as needed, when your code touches their area of expertise, and you will work with the SQA and test automation teams on good practices for verification of the work.