Staff Software Engineer
The Wikimedia Foundation is looking for a Staff Software Engineer to join our Platform Engineering Team, reporting to The Engineering Manager. As a Staff Software Engineer on this team, you will be responsible for working closely with our product and engineering platform teams as well as technology teams across the foundation to build and deliver the Wikimedia API Platform which includes an API Gateway, an API Developer Portal, and full lifecycle management of Wikimedia API services. The staff software engineer will develop innovative solutions that create value, support our mission, and position our technical stack to sustainably grow and scale, while also mentoring and growing Junior Engineers.
This role will directly support our application platform serving the world’s favorite encyclopædia. Wikipedia is one of the largest internet properties in the world, visited by 1 billion people a month across 280 different languages. Our foundational technology supports all of our properties, products, and offerings that empower the global free-knowledge community to produce and consume knowledge. Wikipedia and its sister projects are powered strictly by Free and Open Source software, with MediaWiki at its core, surrounded by an ecosystem of microservices in PHP, NodeJS, Python, and Go.
Due to our scale, commitment to opensource, and our desire to support the infrastructure of free knowledge, it is no easy task to build and maintain foundational technology. To deliver key capabilities that are needed, Staff Software Engineers must develop strong understandings of internal and external clients, partner closely with Product Managers and partners in engineering to identify, design, and build technical capabilities that support products and services that unlock value.
We are a distributed and diverse team of engineers with a drive to explore, experiment, and embrace new technologies. During the past few years we have been transitioning our platform from a monolith to a hybrid microservices architecture, and started migrating our microservices onto Kubernetes running on bare metal. This work underpins our goals of modernizing our platform to help build and support the future work of the WMF, its sister projects and the global community.
If you find what we do interesting, if you are up to the challenge of improving how APIs function for one of the Internet’s top 10 websites, and you enjoy the idea of working with a globally distributed team, you might be just the person we need. Come as you are!
You are responsible for:
- Collaborating with Product Owners, Engineers and Stakeholders on product discovery and improvements of our existing systems
- Participating in the development and integration of the Wikimedia API Gateway, including:
- Feature identification and implementation (ex: rate limiting, throttling, authentication, etc.)
- API Protocols and Architecture Style support guidelines (ex: REST, RPC, Kafka, etc.)
- Migration of existing APIs to the API Gateway
- Integration of the API Gateway into our security strategy
- Developing easy-to-use self service pathways for API consumers via our web API portal
- Assessing and addressing technical risks
- Helping maintain, scale, and extend our API Platform
- Helping shape the technological direction of our systems working with the Tech Lead and Product Manager to identify solutions for given requirements
- Monitoring system performance and identifying, defining, and implementing internal process improvements and SLOs
- Gathering and documenting technical requirements
- Mentoring Junior Engineers
- Directing your own work and are proactive in asking for input.
- Working and communicating clearly and effectively within a team that spans multiple time zones across the world
- Changing the world for more than half a billion people every month ;)
Skills and Experience:
- 8+ years of experience designing and building APIs for internal and external stakeholders
- You have a good working knowledge of software design principles and the API lifecycle
- Expertise in REST web services
- Experience building or managing an API Gateway (ideally with Envoy experience)
- Experience designing API guidelines and interfaces
- Deep understanding of how to integrate API Gateways into a legacy technology stack and the ability to execute this.
- Demonstrated experience building out API Gateway features including, rate limiting, authentication, throttling, etc.
- You have a good understanding of how to scale applications, in terms of load, complexity, and performance.
- You enjoy writing unit tests, reviewing code, responding to code reviews and discussing architectural approaches.
- You have experience with multiple programming languages are are willing to use the right tool for the job. We currently use PHP, Nodejs, Python, and Go where it makes sense.
- You have worked in a Linux server environment.
- You are willing to travel occasionally - sometimes internationally - for team and organizational meetings.
- You are a proficient English speaker and writer.
Qualities that are important to us:
- Commitment to the mission of the organization and our values
- Commitment to our guiding principles
- Ability to disagree in a respectful manner and yet work towards a solution even when you disagree
- Good at asynchronous communication
- Solutions-focused. The Wikimedia ecosystem is complex, resources are limited, and our guiding principles are ambitious. We want you to work to find solutions embracing these factors.
- Self motivated with an ability to navigate through ambiguity and bring a project to completion with limited directions
- Problem-solver with a passion and willingness to learn and dive-deep into technical details
- Possess a growth mindset with ability to identify additional skills, knowledge, and/or expertise required and the drive to develop themselves where needed
Additionally, we’d love it if you have, but these are pluses not requirements:
- Experience working on open source, collaborative development projects
- Familiarity with Envoy API Gateways
- Experience working with on-premise technology stacks
- Experience working with microservice architectures
- Experience working remotely
- Experience with NoSQL and traditional databases
- Experience working with tools like but not limited to Kafka, Hadoop, Storm, Flink and Spark
- Experience with an internet software environment operating at scale; for example, messaging platforms that process hundreds of thousands of events per second
- Big thumbs ups if you are a contributor to Wikipedia