Code.org is an education innovation nonprofit dedicated to the vision that every student in every school has the opportunity to learn computer science as part of their core K-12 education. We expand access to computer science in schools, with a focus on increasing participation by young women and students from other underrepresented groups.
Interested in a career with Code.org? Learn more at code.org/about/careers.
This is (most of) us at our in-person get together during the summer of 2023! This crowd works together to build and serve the platform for all our students and teachers.
If you are interested in applying for one of our roles, we'd love to hear from you! You can find a list of open positions on our Careers page.
The engineering team at Code.org is divided into four sub-teams that build and support different areas of our platform.
Our Student Learning Team owns all our activities (we call them labs) that our students use each day. This team works mostly on front-end tech (we use React and a lot of custom JS) and we have a great working relationship with many partners and open source projects. For example, we use Google's Blockly for all of our block-based programming. We support students in their learning journey all the way from Kindergarten through 12th grade.
Our Teacher Experience Team builds the tools that attract new teachers to Code.org (we call these acquisition products) and develops the platform that empowers our existing teachers to teach our curriculum (our teacher tools). As with our student tools, we rely on React to build our front-end and our server-side components are served using Ruby on Rails.
Our Platform Team owns core components that serve the needs of our student and teacher teams (for example, authentication and user profile) and also has the mission of reaching students who we can't yet reach. This includes building integrations that connect us with schools that use different Learning Management Systems (LMS) and packaging our curriculum so that it can be used in remote schools who don't have access to reliable internet.
Our Infrastructure Team provides the backbone for the platform that supports our students and teachers. This includes our hosting infrastructure and related services (we use AWS), data management, security programs, developer and deployment services and much more. This team also owns our scaling and provisioning systems, which are critical during Hour of Code, where we invite every student in the world to complete an hour of coding with us.
Our developer experience may be different to what you’ve seen in your past roles. Working closely with our product team, we ship to production every weekday and we have a variety of cadences - sometimes you are writing code that goes live that day; other times you are on longer term projects - and while we do follow 2-weekly sprints, we do so in a lightweight way. We index towards getting the right things done the right way vs. taking a purist view of any particular methodology. All our code is open source and we use JIRA and GitHub pull requests to track all of our work items. We also care a lot about quality and testing and are fortunate to have incredible support from SauceLabs, who help us run our suite of UI tests on various student devices (e.g., iPads) in their cloud device farm.
Our 30+ engineering team shares on-call responsibilities. Each engineer covers a 24-hour shift and uses our escalation paths and playbooks to respond to site outages or other live-site issues. We are proud of our site’s reliability - on average, each engineer is only woken up once per year for issues that are typically quick to resolve. Instead, the "Developer of the Day" usually spends a portion of their workday managing the production deployment and triaging less urgent issues.
Yes! In 2019, shortly before the pandemic, Code.org became a remote-first organization. Today, we have engineers in every US time zone and accommodate working hours accordingly. Most of our meetings happen between the hours of 9am and 2pm PT.
We also recognize the value of in-person time, and a few times per year we get together in person, typically in Seattle. Some of these events (like our summer “Codechella” meetup) bring everyone in the organization together. At other times, smaller departments and teams will gather for more focused gatherings.
We strongly believe in spending time with our students and teachers, so many of these in-person events include trips into schools and classrooms to gather feedback or play-test our products.
Beyond solving challenging technical problems, we have a few things that make our engineering org different from others you may have worked in:
We all share our passion for our mission. Each of us is here to support the mission to expand access to computer science for every student across the world. We all have our unique story and perspective about what drives us towards this mission.
We care deeply about each other. When engineers are struggling with an issue, we step in and we help. One of our principles is that we are hard on problems, but kind to each other. We promote engineers regularly, but we don't prescribe over-engineered solutions just to support someone's promotion path. Instead, we invest in our engineers with a generous professional development budget and access to other learning opportunities.
We work hard, but we set clear boundaries. While we support students across the world, we hold ourselves accountable for clear boundaries between work and home life. We enjoy no-meetings Wednesdays, 3 weeks of flexible paid time off, an additional org-wide 2-week office closure at the end of the year, and other generous benefits.