Milestone is seeking a Lead Software Engineer to architect, design, and build highly scalable distributed data systems to enable new and innovative solutions in cloud-based video surveillance and IoT control systems.
Requirements
- 5+ years of experience programming in Go or an equivalent compiled language
- Strong understanding of modern CI/CD methodologies and Git-based workflows
- Advanced experience with Golang, especially memory management and optimization
- Experience developing Golang applications running in embedded Linux systems
- Experience with media processing (e.g. H.264, AV1, AAC, RTSP, FFMPEG)
- Familiarity with REST, WebRTC, WebSocket, Protobuf and other web technologies
- Familiarity with developing applications deployed on public cloud infrastructure such as GCP, AWS, or Azure
Responsibilities
- Architect, design, and build highly scalable distributed data systems
- Provide sound technical directions and dive into solving complex system design and implementation challenges
- Drive decisions on technology and processes to maximize our products' performance, scalability, and reliability
- Employ advanced knowledge of data structures, data modeling and design, and common software design patterns with a focus on microservice architecture
- Articulate design and architecture trade-offs and apply software design patterns to solve complex engineering problems efficiently
- Drive design and implementation based on sound engineering principles and best practices, with a focus on testability, maintainability, and scalability
- Own, diagnose, and resolve complex system technical issues and code defects
Other
- Work with product managers and technology teams to understand roadmap priorities and shape product features that address customers' needs.
- Provide overall project design and estimates that meet business and technology strategy needs during project scoping phases.
- Manage the velocity of delivery without compromising the quality of product releases.
- Mentor other engineers to make sound technical decisions and help build effective software engineering practices, especially in adopting formal testing as part of the software development process.
- Clear and persuasive written and oral communication skills to lead or persuade fellow engineers and non-technical audience