Lead Full Stack Ruby on Rails Engineer (Backend Focused)
Cisco Meraki
Location: Remote - US only
Job Type: Full time
Posted
About Cisco Meraki
The modern world runs on the Internet, and the Internet cannot exist without its underlying infrastructure. Meraki makes setting up, managing, and maintaining that infrastructure easier than ever before. Look behind the cash register at your favorite cafe, or on the ceiling at the grocery store, and you’re likely to see our presence. Whether it’s one cafe or a thousand, a kindergarten or a college campus, a hotel or a hospital, Meraki connects them.
Every day Merakians have a big impact. As you’re reading this there are over 11 million Meraki devices serving hundreds of millions of clients, and this number grows every day. This popularity comes with large scalability challenges: our backend handles more than 10 billion requests daily..
We maintain a collaborative relationship with Cisco, giving us the stability and resources of a larger company without sacrificing our startup vibe.
About the role
This is a great opportunity to be a founding member of a brand new team. If you’ve been wishing for a role where you can steer the roadmap and shape how your team operates, this may be the job for you.
We are looking for a Tech Lead/Staff Software Engineer (typically with 8+ years of experience) to join the Config Team. You will be designing new services and systems, working on scalability and resiliency challenges, and helping us build this new team. There's a lot of cross-org work as well as technical leadership and growth opportunities ahead.
“What are Configs?” you may ask. In a nutshell, the “config” comprises all configurable aspects of a Meraki device. It’s very important that they be correct so devices behave the way their owners intend. They also need to be fast to generate, so changes in the cloud propagate to devices quickly. Finally they must be safe, so Meraki engineers can make changes without fear of compromising their correctness or performance. This team’s main focus is to make these backend services more resilient and fault tolerant.
What you will do:
- Play a key role in building the Config Team, encourage best practices, code quality metrics, and standards as well as define SLAs/SLOs for the services you own.
- Architect, develop, scale, and maintain the backend services and infrastructure that power config generation and distribution. We believe in ownership over the entire software engineering cycle.
- Refactor monoliths into microservices, extract APIs and re-usable components, and help us move towards containerization.
- Optimize and tune performance of the config rendering systems.
- Collaborate with the neighboring Cloud Services team as well as with other globally-distributed teams including UX specialists, firmware engineers, network support engineers, SREs, engineering managers, and product managers.
- You will have the opportunity to work on projects that span numerous domains — networking, databases, web app development, systems, and graph algorithms — to help our backend services scale to handle enormous amounts of requests.
- You will make an immediate and significant difference to the hundreds of millions of users that rely on our access points, switches, security appliances, cameras, and IoT sensors every single day!
- Contribute to our continual learning process. We rely on blameless post-mortems to learn from incidents in production to make our systems more robust.
About you
- You care deeply about creating a fun and supportive team culture, where everyone is encouraged to grow and learn from a group with a diverse set of backgrounds.
- You like thinking about systems and architectures — their edge cases, failure scenarios, and lifecycles. You’re interested and experienced in making systems more resilient and fault tolerant.
- Experienced with Ruby on Rails. You’ll be making a lot of architectural and design choices specific to Rails . You’re pragmatic when it comes to languages and technical decisions and embrace the idea of being language-agnostic.
- You’d like to see the true full stack nature of our networking products (from hardware to firmware to backend to Web UI). You think about customer experience and can promote objectives that will significantly improve it.
- Experienced with caching: how to design and structure multi-layer caches.
- Data driven. Observability isn’t just a buzzword for you. Not only do you turn to metrics to triage issues, but also you create new dashboards/introspection tools to help other people answer questions.
- Experience with improving complex systems, thoughtful about the urge to rewrite everything from scratch. You consider the tradeoffs between upgrading, incremental refactors, and larger scale architectural changes.
- Experienced with troubleshooting and debugging distributed systems. Triaging large lists of problems to concrete projects.
- Excellent communicator. You’ll be collaborating with teams distributed across several time zones. You use design documents and visualizations/data to prove your points and can get buy-in.
- Experienced with migrations and software upgrades. You know how to roll things out safely.
Bonus points for:
- Deep Postgres or other RDBMS experience.
- Experience with containerization, such as Kubernetes and Docker
We encourage you to drop us a line even if you don’t have all the points above. That's a lot of different areas of responsibility! You don’t need to have a background in computer networking either. We will help you pick them up because we believe that excellent engineers come from diverse backgrounds.
To give you a taste of what you could be learning in your time here, our tech stack:
- Ruby (Rails, EventMachine, Unicorn), Scala (Jetty, Akka, Netty), Go
- Git, Gerrit, GitLab, Jenkins, TeamCity, Ansible
- Postgres, LittleTable (our custom time-series database that stores 100 of TB’s of data and is written to millions of times a second), ElasticSearch, Redis
- Debian, Ubuntu, OpenStack, AWS, Docker, Kubernetes, Terraform
- gRPC, Protocol Buffers
- ELK, Graphite, Grafana, Prometheus
- Maven, sbt, Artifactory, NGINX
Life at Cisco Meraki
We are passionate about building real products that our customers love. We are confident you will love it here.
As a Cisco Meraki employee you can expect:
- A supportive and fun environment and management that values your contributions and helps you grow; regular career conversations.
- A lot of opportunities for professional and personal growth via employee-led groups and mentorship programs. Check out one of our groups — Women of Meraki on Twitter and Instagram.
- Candid feedback on a regular basis following Radical Candor.
- Paid time off to volunteer (10 days a year), and much more.
At Cisco Meraki, we’re challenging the status quo with the power of diversity, inclusion, and collaboration. When we connect different perspectives, we can imagine new possibilities, inspire innovation, and release the full potential of our people. We’re building an employee experience that includes appreciation, belonging, growth, and purpose for everyone.
Cisco is an Affirmative Action and Equal Opportunity Employer and all qualified applicants will receive consideration for employment without regard to race, color, religion, gender, sexual orientation, national origin, genetic information, age, disability, veteran status, or any other legally protected basis. Cisco will consider for employment, on a case by case basis, qualified applicants with arrest and conviction records.
À propos de Cisco Meraki
Le monde moderne fonctionne sur Internet, et Internet ne peut pas exister sans son infrastructure sous-jacente. Meraki rend la mise en place, la gestion et la maintenance de cette infrastructure plus facile que jamais. Regardez derrière la caisse enregistreuse de votre café préféré ou au plafond de l’épicerie et vous constaterez probablement notre présence. Qu’il s’agisse d’un café ou d’un millier de cafés, d’une école maternelle ou d’un campus universitaire, d’un hôtel ou d’un hôpital, Meraki les connecte.
Chaque jour, les Merakiens ont un grand impact. Au moment où vous lisez ces lignes, il y a plus de 11 millions d’appareils Meraki desservant des centaines de millions de clients, et ce nombre augmente chaque jour. Cette popularité s'accompagne de grands défis en matière d'évolutivité : notre système principal traite plus de 10 milliards de requêtes par jour...
Nous entretenons une relation de collaboration avec Cisco, ce qui nous permet de bénéficier de la stabilité et des ressources d'une plus grande entreprise sans pour autant sacrifier notre esprit de jeune entreprise.
À propos du rôle
Il s’agit d’une excellente occasion d’être un membre fondateur d’une toute nouvelle équipe. Si vous souhaitez occuper un poste où vous pouvez orienter la feuille de route et façonner le fonctionnement de votre équipe, ce poste est peut-être pour vous.
Nous sommes à la recherche d’un responsable technique ou d’un ingénieur logiciel (généralement avec plus de 8 ans d’expérience) pour se joindre à l’équipe de configuration. Vous concevrez de nouveaux services et systèmes, vous travaillerez sur les défis en matière d’évolutivité et de résilience et vous nous aiderez à créer cette nouvelle équipe. Il y a beaucoup de travail interorganisationnel ainsi que de leadership technique et d’occasions de croissance à venir.
« Qu’est-ce que les configurations? » vous pouvez demander. En un mot, la « configuration » comprend tous les aspects configurables d’un appareil Meraki. Il est très important qu’ils soient corrects afin que les appareils se comportent comme leurs propriétaires le souhaitent. Ils doivent également être générés rapidement, afin que les changements dans le nuage se propagent rapidement aux appareils. Enfin, ils doivent être sûrs, afin que les ingénieurs de Meraki puissent apporter des modifications sans craindre de compromettre leur exactitude ou leurs performances. L’objectif principal de cette équipe est de rendre ces services de système principal plus résilients et tolérants aux pannes.
Vos fonctions :
- Jouez un rôle clé dans la création de l’équipe de configuration, encourager les pratiques exemplaires, les mesures de qualité du code et les normes, et définir les SLA/SLO pour les services que vous possédez.r
- Concevoir, développer, faire évoluer et maintenir l’infrastructure et les services de système principal qui alimentent la génération et la distribution de la configuration. Nous croyons en la propriété sur l’ensemble du cycle d’ingénierie logicielle.
- Refactoriser les monolithes en microservices, extrayez les API et les composants réutilisables, et nous aider à passer à la conteneurisation.
- Optimiser et régler les performances des systèmes de rendu de la configuration.
- Collaborer avec l’équipe de services infonuagiques voisine ainsi qu’avec d’autres
équipes réparties dans le monde entier, y compris des spécialistes de l’expérience utilisateur, des ingénieurs de micrologiciels, des ingénieurs d’assistance réseau, des SRE, des responsables de l’ingénierie et des responsables de produits.
- Vous aurez l’occasion de travailler sur des projets qui couvrent de nombreux domaines (réseau, bases de données, développement d’applications Web, systèmes et algorithmes graphiques) pour aider nos services dorsaux à évoluer pour gérer d’énormes quantités de demandes.
- Vous ferez une différence immédiate et significative pour les centaines de millions d’utilisateurs qui comptent chaque jour sur nos points d’accès, nos commutateurs, nos appareils de sécurité, nos caméras et nos capteurs de l’IDO!
- Contribuer à notre processus d’apprentissage continu. Nous comptons sur des autopsies irréprochables pour tirer des leçons des incidents de production afin de rendre nos systèmes plus robustes.
À propos de vous
- Vous vous souciez profondément de créer une culture d’équipe amusante et solidaire, où tout le monde est encouragé à grandir et à apprendre d’un groupe aux antécédents variés.
- Vous aimez penser aux systèmes et aux architectures, à leurs scénarios périphériques, à leurs scénarios de défaillance et à leurs cycles de vie. Vous êtes intéressé et avez de l’expérience pour rendre les systèmes plus résilients et tolérants aux pannes.
- Expérience avec Ruby on Rails. Vous ferez de nombreux choix d’architecture et de conception propres aux rails. Vous êtes pragmatique lorsqu’il s’agit de langues et de décisions techniques et vous acceptez l’idée d’être indépendant de la langue.
- Vous souhaitez découvrir la véritable nature de pile complète de nos produits de réseau (du matériel au micrologiciel en passant par le système principal et l’interface utilisateur Web). Vous pensez à l’expérience client et pouvez promouvoir des objectifs qui permettront de l’améliorer considérablement.
- Expérience avec la mise en cache : comment concevoir et structurer des caches multicouches.
- Basé sur les données. L’observabilité n’est pas seulement un mot à la mode pour vous. Non seulement vous vous tournez vers les indicateurs pour trier les problèmes, mais vous créez également de nouveaux tableaux de bord et outils d’introspection pour aider d’autres personnes à répondre à leurs questions.
- Expérience de l’amélioration de systèmes complexes, réflexion sur l’envie de tout réécrire à partir de zéro. Vous envisagez les compromis entre la mise à niveau, les refactorisations incrémentielles et les changements architecturaux à plus grande échelle.
- Expérience dans le dépannage et le débogage des systèmes distribués. Trier de grandes listes de problèmes en projets concrets.
- Excellent communicateur. Vous collaborerez avec des équipes réparties sur plusieurs fuseaux horaires. Vous utilisez des documents de conception et des visualisations/données pour prouver vos points de vue et obtenir l’adhésion.
- Expérience des migrations et des mises à niveau logicielles. Vous savez comment déployer les choses en toute sécurité.
Points supplémentaires pour :
- Expérience approfondie de Postgres ou d’autres SGBDR.
- Expérience avec des technologies de conteneurisation – Docker et Kubernetes
Nous vous encourageons à nous écrire même si vous n’avez pas tous les points ci-dessus. Cela fait beaucoup de domaines de responsabilité différents! Vous n’avez pas non plus besoin d’avoir une formation en réseautique. Nous vous aiderons à les choisir parce que nous pensons que les grands ingénieurs viennent de divers horizons.
Pour vous donner un avant-goût de ce que vous pourriez apprendre pendant votre séjour ici, notre pile technologique :
- Ruby (Rails, EventMachine, Licorne), Scala (Jetty, Akka, Netty), Go
- Git, Gerrit, GitLab, Jenkins, TeamCity, Ansible
- Postgres, LittleTable (notre base de données de séries chronologiques personnalisées qui stocke 100 To de données et est écrite des millions de fois par seconde), ElasticSearch, Redis
- Debian, Ubuntu, OpenStack, AWS, Docker, Kubernetes, Terraform
- gRPC, tampons de protocole
- ELK, Graphite, Grafana, Prometheus
- Maven, sbt, Artifactory, NGINX
La vie chez Cisco Meraki
Nous sommes passionnés par la création de produits authentiques que nos clients adorent. Nous sommes convaincus que vous aimerez y travailler.
En tant qu’employé de Cisco Meraki, vous pouvez vous attendre à ce qui suit :
- Un environnement et une gestion favorables et amusants qui valorisent vos contributions et vous aident à vous développer; conversations professionnelles régulières.
- De nombreuses possibilités de développement professionnel et personnel via des groupes dirigés par des employés et des programmes de mentorat. Découvrez l’un de nos groupes, Women of Meraki, sur Twitter et Instagram.
- Des commentaires francs sur une base régulière en suivant le principe de la franchise radicale.
- Des congés (10 days a year), payés pour faire du bénévolat (10 jours par an), et bien plus encore.
Chez Cisco Meraki, nous défions le statu quo grâce à la puissance de la diversité, de l’inclusion et de la collaboration. Lorsque nous mettons en relation différentes perspectives, nous pouvons imaginer de nouvelles possibilités, inspirer l’innovation et libérer le plein potentiel de nos employés. Nous créons une expérience pour les employés qui inclut l’acceptation, l’appartenance, la croissance et des objectifs pour tous.
Cisco est un employeur d’action positive souscrivant au principe de l’égalité d’accès à l’emploi; tous les candidats qualifiés seront pris en considération pour un emploi sans égard à l’origine, à la couleur, à la religion, au genre ou à l’orientation sexuelle, l’origine nationale, l’information génétique, l’âge, l’invalidité, le statut d’ancien combattant, ou toute autre base protégée par la loi. Cisco envisagera pour l’emploi, au cas par cas, des candidats qualifiés avec des dossiers d’arrestation et de condamnation.