Alarmcom Staff Embedded Software Engineer to lead technical decisions and architect software systems for IoT devices. Focus on C++ development, embedded systems, and wireless communication protocols.
Responsibilities
Drive technical decision-making across teams, including evaluating trade-offs and building consensus around architectural approaches. Ability to analyze the architecture of a large existing codebase.
Ability to analyze & architect C++ code for various use cases, such as monolithic vs modular design, static vs dynamic memory allocation, etc.
Implementing software patterns such as state machines, event-driven design, and publish/subscribe models across large codebases.
Drive cross-platform software design that supports multiple hardware variants or product SKUs from a shared codebase.
Strong oral and written communication skills. Ability to create and own technical design documents, architecture decision records (ADRs), and system-level specifications.
Skilled at translating complex technical constraints and firmware requirements into a clear set of tasks and communicating with product managers, hardware engineers, and other stakeholders.
Ability to proactively identify systemic risks, technical debt, and architectural shortcomings, and to champion long-term remediation plans.
Other duties as assigned.
Qualification
Master's degree in Computer EngineeringExperience with porting glibcExperience with Android and AOSP
Required
Bachelor's degree in Computer Engineering, Electrical Engineering, Computer Science, or related technical field
10+ years professional software engineering experience
Strong focus on native/embedded systems development
Experience with large complex C++ codebases
Experience with C++ in bare-metal and RTOS-based environments
Preferred
Master's degree in Computer Engineering, Electrical Engineering, Computer Science, or a related technical field.
Experience with porting glibc, musl or bionic.
Experience with formal software development processes such as Agile/Scrum adapted for hardware-dependent teams.
Functional knowledge of security standards and protocols, such as TLS/SSL, OpenSSH, ECDSA/ECDH, AES256, HMAC, SHA256.
Experience with designing firmware for video pipeline systems, image signal processing, or streaming protocols (RTSP, H.264/H.265) is a strong plus.