Early Career / Junior Software Engineer — Backend
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 it has ever been before. Meraki enables connectivity everywhere from neighbourhood cafes to renowned universities to airports to global hospitality groups operating thousands of sites.
Our devices are some of the most popular in the world: there are over 7 million devices online globally. This popularity comes with large scalability challenges: our backend handles more than 10 billion requests to our devices 24/7/365.
We maintain a positive relationship with Cisco that gives us the stability and resources of a larger company without sacrificing our startup vibe.
About the role
We are looking for an early-in-career Software Engineer (typically up to 3 years of experience) to help build features and solve scalability and reliability challenges around Meraki’s Dashboard, the core web application and cloud infrastructure. From this dashboard, our customers can control their entire Meraki stack: access points, firewalls, switches, client devices, cameras, and more.
You will be joining the Network Access team which is responsible for the core part of Meraki’s infrastructure — help people and organisations manage access to their networks. Our main focus is scaling backend services that enable advanced network authentication and access policy enforcement on all Meraki devices. You’ll be joining a team of 5 experienced engineers with a diverse set of backgrounds spread across Berkeley, Boston and London, so we’re confident that you’ll be well-supported.
What you will do:
- Design, develop, scale, and maintain the backend services and infrastructure that power authorization, authentication and accounting of network connections.
- Learn the difference between authorization and authentication!
- Design systems and services that enforce access policies based on authenticated user/device identities.
- Refactor monoliths into microservices and help us move towards containerisation.
- Collaborate with other globally-distributed teams including UX specialists, firmware engineers, SREs, engineering and product managers.
- Contribute to a kind, inclusive team that’s enthusiastic about simplifying networking products for our customers by scaling distributed systems.
- Work on projects that span numerous domains — networking, databases, web app development, systems — to help our platform scale to handle enormous amounts of data.
- Make an immediate and significant difference to the hundreds of millions of users that rely on our access points, switches, security appliances, cameras every single day.
Here are some real examples of the work the Network Access Team is working on that might help you to get a better idea of what this job entails:
- Refactor internal frameworks/libraries and APIs that provide a simple, unified interface for other developers when they work with access policies.
- We need to scale our backend services to handle 10x the load they can today. You could help us rethink the way we do sharding and load-balancing and make our infrastructure elastic.
- Ensuring data (access policies) consistency across three parts of the system -- 1) Meraki devices, 2) backend data services and 3) Meraki Dashboard - to enable a global customer base. Think of it as a large distributed storage.
- Our policy management system is built on the top of the event sourcing pattern. Currently, we use LittleTable (our custom time-series database that stores 100 of TB’s of data and is written to millions of times a second) as an application state storage. We’re reevaluating LittleTable for this use-case and looking into evolving our architecture.
- Build great observability/troubleshooting tools and create dashboards for our team, so we can have visibility into the internals of our system and figure out where the slow spots/memory leaks are.
- Introduce exhaustive code quality metrics and standards as well as define SLAs/SLOs for the set of services we own.
About you
- You like thinking about systems — their edge cases, failure scenarios, and lifecycles.
- You thrive when you’re given a lot of freedom and autonomy.
- Interested in backend/platform engineering or distributed systems or data processing.
- Familiarity with at least one of the following languages: Scala, Ruby, Java, C/C++, Go. You embrace the idea of being language-agnostic.
- Basic familiarity with SQL.
- You can design a domain model using your favourite OOP/FP language.
- Excellent communication skills (our team is distributed across several time zones).
- Experience in debugging backend code.
- You’d like to see the true full stack nature of our products (from hardware to firmware to UI).
- Ability to attend meetings in the evening (not frequently) to accommodate for California.
Bonus points for:
- Interest in general security and/or data privacy and/or zero-trust networks is a plus.
- You’re excited about solving scalability challenges both on the organisational and technology levels.
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 or security either. We will help you pick them up because we believe that great engineers come from a diverse set of backgrounds.
To give you a taste of what you could be learning in your time here, our tech stack:
- Ruby (Rails, EventMachine, Unicorn), C++, Scala (Jetty, Akka, Netty), Go
- Git, SVN, Gerrit, GitLab, Jenkins, TeamCity, Ansible
- Postgres, LittleTable (our own time-series DB), ElasticSearch, Redis, Vault by HashiCorp
- Debian, Ubuntu, OpenStack, AWS, Docker, Kubernetes
- gRPC, Protocol Buffers
- ELK, Graphite, Grafana, Prometheus
- Maven, sbt, Artifactory, NGINX, FreeRADIUS
You will be working in a complimentary team where every team member is focused on doing what they love. For example, some team members are amazing at building web-services in Ruby but didn’t come in with as much C++/JVM knowledge.
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 a team 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.
- Meaningful and candid feedback on a regular basis following Radical Candor.
- Paid time off to volunteer (10 days a year), and much more.
- When the pandemic is over: trips to the HQ in San Francisco with stunning views of the Bay Bridge; delicious catered meals every day and fully-stocked kitchens and all you can eat snacks.
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.
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.