Alarm.com Senior Staff Software Engineer at Alarm.com responsible for mentoring engineers and leading design of major software components. Works across smart home technology, video analytics, and large-scale data processing.
Responsibilities
Mentor groups of junior, senior, and lead engineers.
Develop software for a wide variety of platforms and technologies.
Lead design of major software components, systems, and features – act as an architect for the platform team.
Engage in the research, evaluation, and application of new technologies and methodologies to solve challenging problems.
Work closely with product owners and business stakeholders to execute strategies and roadmaps.
Work hard and be flexible: we have quick development cycles, evolving requirements, and lots of cross-team collaboration.
Become an expert on system architecture, functionality, and data flows as well as operations processes and tools.
Help support our core systems in production, including deployment and on-call support.
Assist in capacity planning, both in terms of cloud as well as physical capacity.
Assist in advising our database and overall data processing strategy.
Participate in on-call rotations, as well as deployment and maintenance windows as needed.
Provide support as subject matter expert for the technical and product domains.
Qualification
Software architecture experienceIndependent thinker and problem solver
Required
10+ years of professional software development experience
Experience leading and/or mentoring other engineers with a proven track record of developing people and solutions that are reusable by other engineers
Proven expertise in object-oriented programming skills; C# and .NET experience a plus
Software architecture experience
Experience with production support (SRE experience also a plus)
Extensive observability experience (Datadog, Grafana, Wavefront, etc) as well as runbook support
Significant database design and development experience (SQL server a plus, as well as cloud database technologies)
Capacity planning experience (ideally both in terms of physical as well as cloud infrastructure)
Superior analytical skills with a good problem-solving attitude
Ability to perform in a team environment
Independent thinker and problem solver
Expertise in object-oriented design and software lifecycles