C++ Embedded Engineer
Job description
About the role
The embedded software engineering team at Squad is focused on building reliable, high-performance solutions that reach millions of homes within the home security market. The team operates using agile development methodologies with regular sprint cycles, code reviews, and continuous integration practices. This role emphasizes comprehensive testing, rigorous security standards, and close collaboration with hardware engineering, product management, and customer support teams. The team prides itself on writing clean, maintainable code and fostering a culture of knowledge sharing and technical excellence. As a C++ Embedded Engineer, you will take ownership of critical software components in our camera-based security devices. You will be responsible for maintaining existing products through comprehensive debugging and bug fixing, as well as developing innovative new features. Your work will directly impact the reliability and user experience of products used in homes around the world.
Key facts
What you'll do
- Design, develop, and maintain high-quality embedded software in C++ for camera-based security devices, ensuring robustness and scalability across the product line.
- Debug and resolve complex software, hardware, and network connectivity issues across the entire software stack, from low-level drivers to application logic.
- Develop new features and improve existing codebases for the product line, delivering solutions that meet both user needs and technical constraints.
- Optimize software performance for resource-constrained embedded environments, balancing memory usage, processing power, and power consumption.
- Conduct thorough code reviews and provide technical mentorship to team members, elevating the overall quality of the codebase.
- Participate actively in architecture discussions and technical decision-making processes, helping to shape the long-term vision of the product.
- Collaborate closely with QA teams to develop comprehensive testing strategies, including unit tests, integration tests, and regression testing.
- Document software designs, APIs, libraries, and troubleshooting procedures to ensure clarity and maintainability for current and future engineers.
- Implement drivers and libraries for communication interfaces such as I2C, SPI, UART, and Wi-Fi, ensuring seamless hardware integration.
- Utilize multithreading techniques on multicore microcontrollers to achieve responsive and efficient application behavior.
- Apply deep knowledge of RTOS and microcontroller architectures (ARM, RISC-V) to solve challenging real-time problems in the field.
- Leverage proficiency in the full SDLC, employing professional engineering practices like Git, CMake, continuous integration, and disciplined version control.
Requirements
- Possess at least 5+ years of commercial experience in embedded development, with expertise in C++ (C++17 standard) and deep knowledge of RTOS and microcontroller architectures (ARM, RISC-V).
- Demonstrate proficiency in the full SDLC, including professional engineering practices like Git, CMake, code reviews, and continuous integration.
- Show solid understanding of network programming and experience with multithreading on multicore microcontrollers to handle concurrent operations efficiently.
- Exhibit expertise in communication interfaces such as I2C, SPI, UART, and Wi-Fi, along with experience writing device drivers and libraries.
- Have the ability to work independently and take ownership of complex projects from conception through deployment and maintenance.
- Maintain excellent communication skills for technical discussions and documentation, with a collaborative mindset for cross-functional team environments.
- Hold at least an Intermediate level in both written and spoken English (B1) to effectively engage with technical materials and team members.
- Be comfortable working within a structured agile framework, adhering to sprint cycles, deadlines, and quality gates.
- Show commitment to rigorous security standards and best practices in software development to protect user data and device integrity.
Nice to have
- Experience with Python for scripting and automation to streamline development workflows and testing processes.
- Experience with C in embedded development, providing a broader perspective on system-level programming and constraints.
- Understanding of security protocols and encryption methods to enhance the protection of video streams and device communications.
- Experience using AI-powered tools to enhance productivity and code quality, assisting in code analysis and optimization tasks.
Practical notes
Remote working mode is available within Ukraine only. 21 paid vacation days per year, paid public holidays according to Ukrainian legislation. Development opportunities like corporate courses, knowledge hubs, and free English classes, as well as educational leaves. Medical insurance is provided from day one. Sick leaves and medical leaves are available. Free meals, fruits, and snacks when working in the office.