The sound of coffee grinding wakes me up 15 minutes before my alarm. I’m not a morning person, but I always stumble bleary-eyed into the kitchen for some toast and coffee with my partner, which is my favorite daily ritual. I sit down, listen to my morning news podcasts — The Daily and AM Quickie — and check my phone for any Slack messages I might have gotten from coworkers in other timezones.
I run out the door to catch the Transbay bus, one of the more pleasant ways to commute. I knit a few rows of a blanket I’m working on until I’m conveniently dropped off at the Salesforce Transit Center right across the street from Slack’s HQ. It’s Friday, so I head to the cafeteria to grab a second breakfast 😋 and catch up with some coworkers.
Arriving at my desk, I take a look at my personal todo list to see what’s on the docket for today. I like to review a pull request or two before I dive into my own thing. We “bucket” our pull requests by tagging the whole team rather than an individual, so sometimes I get a chance to review something I’m not actively working on. I like this system because it spreads knowledge across the whole team, and I always learn something.
I have a quick stand up with the people I’m working with on our current shared channels feature. We discuss the progress of the major work streams for the project, and have any technical discussions that are easier to have in person. We take a second to check in with each other: Are we on track to hit our target dates? If not, what’s a more realistic timeline? I really appreciate this time because it gives me an opportunity to voice any concerns candidly.
Mid-morning is usually when cross-team functional meetings are held. Sometimes it’s a workshop, where someone makes a proposal for improvements affecting other frontend engineers (FE for short), like a smarter model cache eviction strategy. Other times, there’s a larger meeting for FE-wide discussions or announcements.
Today, one of the teams in Denver gives us a sneak peak of a new feature they’re calling Workflow Builder. It’s an easier way to build apps without having to write any code or set up a server, and I’m excited about the potential uses for it. I love that it’s making the automation of tasks more accessible. After the demo, the engineers start testing it out, piping messages into the frontend channel. Not only is it fun, but it provides valuable feedback for the team in Denver.
I make a bot that’ll post questions in our tech-questions-only channel anonymously, just in case people ever feel sensitive about asking a “dumb” question. Everyone sticks to the channel’s ground rules of answering directly rather than posting a link, keeping messages relevant, and being kind to inexperience. It feels like an intellectually safe space.
Lunchtime! I take a stroll through the food truck alley outside our office, hoping my favorite samosa chaat truck is there. Today I’ve got lunch with a bunch of frontend people from different teams. We go around the circle introducing ourselves and welcoming new hires. I’m tasked with coming up with a weird icebreaker question, like, “What fruit or vegetable would you most want to be?” On days where there’s no group lunch scheduled, I’ll eat lunch with whomever is around. Yesterday, for example, the backend folks and I had a riveting discussion about what type of entrepreneurial endeavor we’d start if we had a clone.
A retrospective meeting gives us a chance to reflect on our last project. Before the meeting, I share some thoughts I had about the project in our retro channel. This includes things that went well (the thorough review of the technical spec paved a clear path!) and things we could improve on (decisions midway through could have been documented better). I take a minute to read through the thoughts shared by others, adding a ➕ plus emoji reaction to any I agree with. During the meeting, we discuss messages posted in the channel since the last retro date. There’s a clear sense from everybody of wanting the team to work better together, so we plan on actionable things moving forward. After the meeting, my manager posts a summary in channel for anyone that couldn’t attend.
Getting back to my desk, I put on headphones and dig down to work on a tweak for the context bar, a feature our amazing intern Sarah Raines from UPenn and I built together last summer. The context bar is an area right above the message input that shows up when you’re in a shared channel or direct message. It lets you know what timezone they’re in, or if they have notifications switched off. It’s a great way to avoid disturbing someone after hours. I’ll post a clarifying question to the designers and product managers in our feature channel and, once we come to a conclusion, we codify it in a message denoted by a custom gavel emoji reaction. It’s a lightweight system that allows us to keep track of decisions, and we review them with our partners in marketing and customer experience every week to ensure we’re all on the same page.
A bunch of my teammates and I sample obscure potato chip flavors someone brought from their visit to the Toronto office, where our designer works. I try a ketchup-flavored chip. It’s not bad! Our product manager also passes around a bag of egg-flavored chips. I love eggs. I did not love these chips.
It’s Ask Me Anything time in our frontend channel! Every Friday an engineer volunteers to be asked anything for fifteen minutes. We’re a distributed team, so it’s a nice way to bond and find out interesting things about my fellow teammates across physical divides.
I’ve finished up my pull request, complete with linking documents, JIRA tickets, and instructions for manual testing. I find that the more time I take to fill out these descriptions, the faster my changes are approved. Future me also appreciates it! In five months, when I ask myself, “Why was this line added?”, a handy git blame will remind me. 🙌
I take a look at some logs I added a couple of days ago for a puzzling bug. I notice a pattern in the user agents: they’re all on Windows, and on an older browser. Eureka! I’m finally able to reproduce the issue and prepare a fix. As soon as it’s deployed, I get back to the Customer Experience Agent — CE agents are truly the MVPs at Slack — and let them know the cause and the fix. It’s an awesome feeling to be able to help.
I pack up my stuff and head off to meet my partner at the BART station. Once we’re back in the East Bay, we drive over to the YMCA for a workout, and then a quick bite at our favorite local taco joint with the most delicious vegetarian tacos and tortillas I’ve ever eaten. I round off the day with a cozy evening watching a movie and working on my blanket as it warms my lap.
Life at Slack
This is the second in a series of posts describing the everyday life of Engineers in different parts of Slack’s ecosystem (see part one here). Over the coming months, we’ll hear from Engineers on our Product Engineering, Mobile, and Frontend teams. If you’re interested in exploring job openings at Slack, visit our Careers page!
Christine is a Senior Software Engineer, based out of the San Francisco office. She works as a frontend product engineer to make users’ experience in shared channels better. Most recently she has worked on improving awareness of other organizations in a shared channel, admin controls, and making shared channels available on the Grid product. In her time off, Christine knits wearables and creates functional ware at her local community pottery studio.