Device Engineer I
Job Description
<p><a class="external-link" href="http://alarm.com/">Alarm.com</a> is a rapidly expanding technology company developing innovative cloud and device solutions across a wide range of cutting-edge technologies that provide a unified, connected service to millions of residential and commercial properties in the US and abroad. We are looking for a talented and passionate early-career embedded software engineer to join the Device Engineering team and help us define the future of the Internet-of-Things for residential and commercial properties by creating and integrating devices including security panels, networking gateways, and video cameras. This is an excellent opportunity for a recent graduate to learn embedded Linux development from the ground up: you will be paired with experienced engineers, own increasingly independent pieces of real shipping firmware, and work with a team across a diverse set of technological backgrounds to design devices, build and manufacture hardware, architect and implement software, and collaborate in an agile and fast-paced environment.</p> <p><strong>Required Qualifications:</strong></p> <ul> <li>Bachelor's Degree in Computer Science, Electrical/Computer Engineering, or related field, completed or expected within the year.</li> <li>0-2 years of professional experience; internships, co-ops, research, capstone, or personal projects involving embedded or systems software are welcome in place of industry experience.</li> <li>Proficiency in C and/or C++, with an understanding of software architecture and design principles.</li> <li>Coursework or project experience with Linux and comfort working from the command line.</li> <li>Exposure to microcontrollers or single-board computers (e.g., STM32, ESP32, Arduino, Raspberry Pi, BeagleBone) and hardware peripherals such as UART, SPI, I2C, and ADC.</li> <li>Foundational understanding of electronics and the ability to read circuit schematics.</li> <li>Familiarity with version control systems such as Git.</li> <li>Strong problem-solving skills, curiosity about how hardware and software meet, and eagerness to learn from code review and mentorship.</li> <li>Clear written and verbal communication, and the ability to collaborate on a team.</li> </ul> <p><strong>Preferred Qualifications:</strong></p> <ul> <li>Exposure to the Linux kernel, device drivers, board support packages, or hardware bring-up.</li> <li>Experience with cross-compilation and build frameworks such as Yocto, Buildroot, OpenWRT, or Android.</li> <li>Hands-on use of debugging tools such as JTAG, SWD, oscilloscopes, and logic analyzers.</li> <li>Experience with scripting (Python, Bash), RTOS concepts, networking fundamentals, or automated testing.</li> </ul> <p><strong>Responsibilities:</strong></p> <ul> <li>Work alongside senior engineers to develop and maintain embedded Linux applications, platform frameworks, and board support packages using C/C++.</li> <li>Implement, test, and debug well-scoped features and bug fixes on real hardware, growing toward independent ownership.</li> <li>Support device bring-up and validation with electrical and mechanical engineers.</li> <li>Contribute to features that connect our devices to the cloud, working with software engineers across teams.</li> <li>Participate in code reviews, write unit tests, and document your work to <a class="external-link" href="http://alarm.com/">Alarm.com</a>'s standards.</li> <li>Communicate effectively and collaborate with others to ensure the timely delivery of projects.</li> <li>Other duties as assigned. </li> </ul> <p>Please note that spo