Be responsible for hands-on coding and serve as a technical leader by mentoring junior engineers and applying technical expertise to challenging programming and design problems
Drive the design and implementation of reliable and scalable backend software solutions that tackle critical customer problems and get along with numerous other services.
Deliver high quality backend code and contribute to overall product stability by conducting code reviews and writing unit and integration tests.
Own the design/architecture of product components and implement the software while upholding high standards and using best practices for architecture, design, coding and CI/CD
Skills and Qualifications
BS or MS in Computer Science or relevant field with at least 10 years of experience including 5+ years of experience in cloud -native microservices-based architectures and distributed systems development.
Experience writing production quality level code and test cases in Golang and Python
Specifically in distributed systems:
Experience in understanding challenges with lost, delayed, or duplicated messages and how code needs to be written to take care of that.
Experience understanding memory, performance and reliability consequences of choosing a given API call (sync vs async) or a data structure over another.
Experience in writing appropriate test to discover corner cases and performance bottlenecks.
Degree of autonomy. Should be able to own a feature, work along other team members on the high-level design, and optimally drive the feature to completion, including data migration, testing and deploy to greenfield and brownfield deployments.
Experience to understand the implication of coding in a particular style: Memory allocation, efficiency, etc.
Understanding of how network devices operate. While a deep knowledge of networking is not required, the candidate should understand the basic operation of a network device. How images are loaded, difference between console and VTY access, difference between management ports and data ports, difference between Line Cards / RP, Chassis, etc.
Intermediate knowledge of SQL / Cypher database queries.
Knowledge of REST and gRPC APIs: OpenAPI and protocol buffers
Have a 'can do' attitude. Should understand how different systems and technologies can operate together to produce the accurate outcome. Should write scripts/tools to improve the workflow as needed.
Able to contribute to code reviews looking for potential/hidden problems in the code. Look for corner cases / "what if" scenarios on the code under review.
Practical knowledge about Kubernetes, building container images (docker, kaniko, ko)
Experience with brokers or other pubsub technologies: Knative, kafka, Redis streams, etc.
While most of the Kubernetes related details are mostly abstracted from the developers, knowledge of Kubernetes helps understanding the product.
Experience building network services in NSO (YANG models, callbacks)
Experience building network monitoring services (SNMP, Netconf, Restconf)
Experience building VPN network services using EVPN, QinQ or other VPN/tunneling technologies.