r/RedditEng

A Day in the Life Of A TPM During a Code Yellow

A Day in the Life Of A TPM During a Code Yellow

written by Nomi Khedawala, Technical Program Manager

Intro

I’m Nomi (Know-Me).

I joined Reddit as a Technical Program Manager in October 2024. I came from a background in product operations and technical program management, and what drew me to Reddit was the pace and the scale of the problems (and being a longtime lurker). I’ve had the opportunity to work on so many different areas of the business in my tenure here so far: Games on Reddit, Age Verification, Data Foundations, and even Search and Answers!

I'm part of the Tech PMO team, Reddit's centralized team for Technical Program Managers. Each of us manages programs for a specific org, set of teams, or one-off high priority initiatives. I recently wrapped up a company-wide Code Yellow focused on our consumer data foundations, and I'd like to share with you what a typical Thursday has been like for me during this Code Yellow.

If you're not familiar with Code Yellows at Reddit: they're our mechanism for escalating specific operational issues. When a problem is too big or too cross-cutting to fix through normal prioritization, we declare a Code Yellow. Think 4-6 week sprints with clear exit criteria and a temporary but significant shift in engineering priorities. They're designed to converge fast on a set of goals.

The Code Yellow I led alongside Paul Raff, our Data Foundations Lead, spanned the full consumer data supply chain across 10 surface areas. We defined how events should be instrumented, stood up real-time data quality monitoring, built curated data tables from raw events through aggregates and cubes, migrated metrics, and established a steady state operating model so the work would persist beyond the Code Yellow. It's the kind of program where the scope keeps wanting to expand and the TPM's job is to hold the line on what "done" actually means.

What follows is a snapshot of a typical Thursday during the Code Yellow. Thursdays were my heaviest day. Here's what one looked like.

Morning: 8:00 AM - 12:00 PM

8:00 AM - I start the day by facilitating a session of our Collaborative Problem Solving forum. This is something I built and run for our TPM team. The intent is that we get together every other week to work through real challenges we're each facing on our programs and look for opportunities to standardize how we operate. It's part peer support, part playbook development. Today I'm running a quarterly check-in to make sure the forum is still hitting the mark for the team.

9:00 AM - CPS wraps and I shift into Code Yellow mode. I'm reading through Slack messages that came in overnight and earlier this morning,. answering Qquestions from engineers on the Code Yellow and a thread with Paul about one of our exit criteria. I'm also reviewing every tracker, timeline doc, and milestone artifact to make sure nothing material has changed since we sent the Steer Co agenda out 48 hours ago. The Steer Co is a meeting with our executive sponsors and stakeholders, it’s later this morning and I want to be sure we walk in with a complete and current picture.

10:00 AM - Paul and I co-host office hours for any Code Yellow participant withquestions about scope, timelines, goals, or non-goals. These sessions are some of the most useful meetings on the calendar because the questions get genuinely technical. Today we're working through how to structure the data supply chain from raw events through fact tables, aggregates, and cubes. Someone raises a question about backfill strategies and the cost tradeoffs for different look-back periods. Another engineer wants to talk through whether we should have separate fact tables for web vs. mobile or consolidate by platform group. Paul and I don't always have the answer on the spot, but we talk it through with our counterparts and agree on a path forward whether that's deferment, fast-follow, or recommendation to senior leadership.

10:30 AM - More prep for the Steer Co. I'm pressure-testing each section of the agenda we drafted earlier this week. Is the status accurate as of this morning? Are the risks framed clearly enough for a room of senior leaders and our execs to act on? Do we need to add more context about a risk?

11:30 AM - I lead the Steer Co. This is our steering committee meeting with our CTO, CPO, VPs, and Directors. We share the program's current health, walk through progress against our five exit criteria, flag risks and blockers, and lay out what they should expect between now and our next check-in. Steer Cos are not the place for surprises. The prep I did all morning is so that every question gets a clear answer.

Afternoon: 12:00 PM - 4:00 PM

12:00 PM - Straight from the Steer Co into the cross-functional engineering sync. This is where I gather status updates from all of the eng teams contributing to the Code Yellow. We talk through their progress, timeline changes, risks, and I share relevant outputs from the Steer Co we just finished. Information has to flow quickly upwards and outwards during a Code Yellow. The engineers executing the work need to know what leadership is thinking, and leadership needs to know what progress is being made week over week.

12:30 PM - I meet 1:1 with a teammate to talk about how we can make the CPS forum even better. This week's session was my quarterly assessment, so we're comparing notes on what's working, what's not, and how to make the outputs more actionable. My goal is to take these findings, write up a retro, and present it to my manager and Sr. Director later to establish a baseline and start folding the best ideas into our team's standard operating procedures.

1:00 PM - Lunch. I close the laptop, make some coffee, and spend time catching up with my wife. One of the genuine perks of working from home is being able to take an actual break with the people you live with. Thumper, our cat, hates to see me coming, but I have to get a good arm wrestling match in with him so he doesn't sleep all day.

https://preview.redd.it/d1jk14d28w1h1.jpg?width=1999&format=pjpg&auto=webp&s=31938427152fe2c857bdaf24259437e70746c550

2:00 PM - Back at my desk. I go through my raw notes from the Steer Co and start synthesizing them into a stakeholder summary: key takeaways, discussion points, action items, and owners. Before I send it out, I reach out to each action item owner individually via Slack to confirm they're aligned on ownership and timelines. I learned a long time ago that assigning someone an action item in a meeting recap they didn't agree to is a fast way to create confusion and lose trust.

2:30 PM - I start drafting the weekly update that goes out to our Code Yellow participants and leadership. Milestones, health of each exit criteria, timelines, what moved forward this week, what risks or blockers surfaced, and how we're addressing them. This is one of those artifacts where the quality of the writing matters as much as the substance. If leaders can't parse your update in under 3 minutes, they stop reading it.

3:00 PM - I switch gears to the CPS retro. I'm taking the notes from my 1:1 earlier and incorporating them into the retrospective document I'm drafting for my manager and Sr. Director. The goal is to establish a clear baseline for the forum's performance and propose specific improvements that could be codified into how we run the CPS forum. This is the kind of work that doesn't show up on a sprint board but compounds over time.

3:30 PM - I'm starting to wrap up. I respond to Slack messages I couldn't get to earlier, schedule a few messages for teammates in different time zones, and share my draft weekly update with my program leads so they can add their content. I'll revise and edit tomorrow morning and get it out before the end of day Friday.

What a TPM Actually Does

A TPM's job is to make sure that the right things are happening at the right time and that everyone has what they need to focus on what they're good at. I handle the coordination, the communication, the risk identification, the stakeholder management, and the organizational scaffolding that lets a program with dozens of contributors across multiple teams actually converge on a set of milestones and objectives.

I love being a TPM because I love to be a part of other people's successes. Being a TPM means that you wear multiple hats so that the people around you can have peace of mind that all of the peripheral stuff is being handled while they can focus on their craft. TPMs are enforcers, enablers, coaches, communicators, therapists, and most importantly... friends not food! 🐟

If you're interested in becoming a Snoo, check out our open roles: https://redditinc.com/careers

reddit.com
u/SussexPondPudding — 4 days ago
▲ 65 r/RedditEng+1 crossposts

Localization at Reddit: Developing for a Global Audience

Written by Cláudio Ribeiro u/EmeraldMacaw

TL;DR: Considering localization (L10n) at the inception of an online product isn't just a “nice to have,” it helps beyond translations by keeping the code cleaner, improving the UI's flexibility, and making sure the text content is top-notch.

Oftentimes, when a new online product is released, translation is treated like a future problem. It seems logical to say “I'll come back and fix it once we've scaled.” This happens often with software created by companies focused on a local market. But, including localization in the beginning is helpful beyond reaching more users: it makes the code more readable and guarantees text will display as intended everywhere.

Localizing after a product is out can be compared to making a fuel car electric, or trying to restyle a subreddit after millions of users have already gotten used to it. The effort required to retroactively localize is the most compelling reason to not leave it as an afterthought. Take Reddit, for example: our first attempt at localizing Old Reddit was crowdsourced and loosely supervised, which created an inconsistent experience and incomplete translations. Contributors also lacked the necessary context and visual aids to get the work done. In the end, few people used the localized versions and Reddit remained an English-first platform. (Though I must recognize the Pirate English version was pure gold.)

Once it became more noticeable that more and more people from different backgrounds and origins were browsing, contributing and creating, Reddit began working on a localized, globalized heart of the internet. Our first attempts were timid (volunteer translators commenting their suggestions in threads that contained the source strings), but we’ve matured our approach. We’ve implemented a translation management system (TMS) and are developing code in ways that keep localization in mind. Reddit now offers translations into 35 languages from 33 countries and supports 7 different alphabets that are used by millions of users.

Not surprisingly, we faced some setbacks before we got to where we are today: alphabets that wouldn't render, translations that weren't 100% adequate (as reviewers couldn't edit them), truncated text where the UI lacked room, untranslatable content (try translating the Tragedy of Darth Plagueis the Wise…), a mess with genders, plurals, and syntax, etc. These were difficult challenges to overcome, and we learned lessons along the way.

On that note, I’d like to share some of them with you. Below we’ll focus on some key aspects that illustrate the pros of pre-planning and how to get the house in order: accessibility, design, content review, time-to-market, data analysis, quality assurance, and code maintenance.

Accessibility

One of the first places where localization proves its worth is adding descriptions to images, buttons, and options (they even have their own writing style to be most useful to the end-user) to make a platform more accessible. Localizing the website is still relevant even when there are no ambitions to expand the brand abroad, as it's essentially “localizing” for users with impaired vision.

By making sure accessibility is implemented, a company can access a market within their own domain, and it becomes easier to localize into other languages. Accessibility is a way of “localizing” for users who need it; it includes different alphabets, such as  sign language and braille.

At Reddit, focusing on accessibility was a gamechanger. We improved our apps to include those with impaired vision, which allowed us to better serve our existing users–and to remain inclusive when we entered new markets with new languages.

Content descriptions can provide translations to screen readers, too

When it comes to a product's design, localization can also help in less obvious ways. English is a “short” language, meaning it doesn't take much space and can express a lot of information without a lot of characters. This makes it easy to fit into tiny spaces, but other languages can take up way more space (up to 40% more than English in some cases) and that can often break the UI for users of longer languages.

This is where pseudo-localization comes in: it can run in design tools (Figma, Sketch, Penpot) and in the code, artificially expanding each word in English to 20~40% its size in a random distribution, allowing for designers to account for the most expansive languages without compromising the original content. It's like using “banana for scale” for buttons. Using pseudo-localization to design products improves the overall experience by preemptively ensuring the UI is comfortable to use in any resolution and language.

Psuedo-localized text in English

Cross-Functional Collaboration

When localization is introduced into a product's development lifecycle, it could mean potentially dozens, if not hundreds of extra specialized eyes will carefully inspect each word being written by different teams, for different projects, at different times. In order to do their best work translating, they interpret the context and the intention, so they can preserve the tone in their language. Their reading is way more focused than the general audience's, especially on a  platform like Reddit, which has a truly unique personality and tone.
Translators are professional linguists who need to read, interpret, and fully understand each string we publish, be it in our product itself, in the Reddit Help Center, or even in marketing material. This greatly amplifies Reddit's capacity to fix typos, outdated content, inconsistent experiences, and so on, as translators need to pay more attention to the source and often find errors a casual reader might miss.

A set of corrections spotted by linguists in Reddit's Help Center

Linguist eyes bring an extra level of polish to what we write and make our content even more slick and “together,” which translates into trust with our users. A translated product name can sometimes even serve as inspiration for a company's naming conventions, and since each culture has its unique way to express itself, different perspectives can make what we say more universal and human, which is kind of our thing.

Linguists will navigate through the entire UI/UX to see the localized product in practice. This allows them to help engineering teams by finding issues that might have been overlooked, or that the regular user wouldn't bother to report. Any new feature release gets extra pairs of hands play testing the content. This, allied with the content review component, adds an extra layer of polish and  results in a better overall user experience. 

Sometimes an L10n bug will also help to improve existing English content

Localization Infrastructure

Caring for localization infrastructure helps in content homogeneity, but also makes us more nimble when it comes to market expansion. Even if expanding into new markets seems like a distant dream, getting the structure ready from the get-go gives a company much more speed when deciding to launch in a new region. 

Implementation of plurals in a string

Properly implementing plurals is important because many languages have more than “one, other” plural options.

It ensures that code is ready to connect to translation management tools when needed, and dramatically reduces the cost and time spent to get things in place for translators and engineers. The effort required to go back and finish an incomplete structure and remove redundant code when more challenging markets come aboard (e.g. multiple plurals, different characters, right-to-left orientation, etc.) will inevitably delay your go-to-market timeline in those markets. When Reddit  introduced Arabic, addressing these concerns was critical to how we shaped our approach and launch strategy.

Reddit in Modern Standard Arabic

By creating strings with localization in mind, the code also becomes cleaner and string drift is avoided (i.e. we don't have the same word being spelled in three different ways in three different files). Centralizing all the product's strings means normalizing the storage of site content, which is a core tenet of good database and software design. We decoupled the management of translations from logic and reduced complexity and overhead in our code.
Engineering with L10n in mind helps make the code cleaner, more readable, and robustly documented. It's easier to understand where any string gets inserted, makes changes simpler and safer (ensuring no hardcoded strings ever reach production), and paves the way for automated tests that can enforce  best practices.

After an online product is localized, bugs are squashed, and continuous rounds of testing are carried out to ensure nothing is broken and that translations follow the context, are easy to understand, and don't conflict with the UI. That’s a huge win for users and development teams.

Strings before descriptions have been added

Descriptions can also be helpful for engineers who might need to update a piece of code related to a specific string.

L10n should be woven into every aspect

Localization ties together linguistics with development, influences marketing strategy, provides data for a coordinated expansion, encourages best practices, and is intimately intertwined with product development, whether it has been activated or not. That is why it can't be seen as a “plug-in” you can add at a later stage, but as a foundational layer that must be taken into account at the ideation stage. It will most certainly save you a headache in the future.

I'm new to L10n. Where should I start?

Check out the Unicode CLDR Project and find out how implementing a repository that takes care of dates, currencies, patterns, and measurements can also help in preventing bugs related to date, time, and locale.

Read about the ICU Message Format to learn how your strings can contain logic, plurals, and gender variants (this can be used even in English to personalize the user experience with “Mr.” and “Mrs.,” for example).

See the first steps to create localization-ready code in Python and Go.

reddit.com
u/DaveCashewsBand — 11 days ago