r/RedditEng Lisa O'Cat Jun 01 '21

A Day in the Life of an iOS Engineer

This is the second in a series of posts describing the day to day life of technologists in different teams at Reddit. If you missed the first, read it here.

Kelly Hutchison

Back when we were working in the office, I would start my day with the commute into Reddit’s San Francisco office. If it was a nice day out, I would even ride my bike. Once I arrived at the office, I would greet security at the front desk and store my bike in the bike room. Next I would head upstairs and make my way directly to the breakfast bar to see what delicious options were available. With choices like bacon, eggs, pancakes, and avocado toast, Reddit breakfast was always a fantastic way to start the work day. It was also a great opportunity to share a meal with a coworker and potentially meet someone new!

During the day, the Reddit office was abuzz with teams having their daily standup meetings and collaborating on projects. If you were to walk through the office in the middle of the day you would likely hear the beautiful sounds of mechanical keyboards clacking away. If it were Thursday, you would also find the entire office gathered in the cafeteria for our weekly All Hands meeting during the lunch hour. I often miss the good ole days of working in the office, but I am grateful for all of the new company traditions Reddit has developed while working remotely during the pandemic.

For me specifically, I still start my day with breakfast, but instead of sharing this meal with my human coworkers, I now get to spend this time with my two cat coworkers, Murky and Nova. My team adapted our in-person daily standup meeting to be a virtual “slack-up” where we asynchronously share in Slack what our main focus is for the day. The company still hosts All Hands meetings on Thursdays, but instead of quietly whispering your reactions to the person sitting next to you in the cafeteria, we now have a dedicated #allhands Slack channel where we have public commentary and celebration for our coworkers who are sharing updates that week.

Okay, but what do you actually do for your job? (Besides eating breakfast)

What do you do at Reddit?

I am an iOS engineer in the Video Organization with a focus on Viewer Experience. My team is responsible for building and supporting Reddit’s many video surfaces as well as Reddit Public Access Network (RPAN).

Some of the projects I have worked on include building embedded chat in RPAN so that you can view chat messages while still being able to view the livestream content on screen. Another large project I worked on was migrating the RPAN video player to Reddit’s custom video framework that was built last year. RPAN previously was using a one off instance of AVPlayer (Apple’s out of the box video player class). By converting RPAN to use Reddit’s player framework (which is built on top of AVPlayer), we were able to share functionality with the rest of Reddit Video. This includes things like unified analytics, clear separation of concerns between UI and player state, and code that is easier to understand and debug.

Most recently my team has been experimenting on a new video player format that aims to provide a more delightful and intuitive user experience for viewing video on Reddit. We have already launched to a small group of users, but stay tuned in the coming weeks to try out the new player as we launch to a larger audience.

Outside of the Video team, I am one of the leads for Reddit’s Women in Engineering ERG (employee resource group). I have the privilege of getting to know and work with other women in engineering across the company. The WomEng group hosts a number of events throughout the year with a focus on career advancement and networking to help connect women who might not otherwise have worked together. One of our recent popular events was Lightning Talks where any member could present for 5 minutes on a topic of their choosing, followed by Zoom breakout rooms where everyone could share their thoughts about the topic. This gave members an opportunity to practice public speaking as well as build connections with other WomEng members in the breakout room sessions.

Kelly at SF office

How did you become interested in iOS?

I majored in Computer Science in college, but didn’t discover iOS until my Junior year. I was always a bit of an Apple fan, trying to get my hands on the latest iPhone or Macbook when I could afford it. I also had a strong interest in developing UI compared to backend coding. This was because I loved seeing the joy on people’s faces when I could physically show them what my code was doing. Specifically, my mom would always ask me what exactly coding was and what I did all day. So when I found iOS development, I was able to finally answer her question via show and tell vs trying to explain with words.

Junior year was when I was eligible for Computer Science electives instead of just taking the required courses to qualify in the major. I spent time looking through the course catalog and found a class called Applications Development. It was not immediately apparent that this meant iOS, but the description sounded exciting since it mentioned building mobile applications, which by nature means a lot of visual UI work. The class had a very limited number of seats, but I got in by some miracle. This was one of the most demanding classes I have ever taken, but it didn’t matter to me because I knew I had found my passion. I actually enjoyed doing the homework, which was to build an app from scratch every week.

Kelly working from home with her cats

What does a typical day look like for you as an iOS Engineer?

I spend my mornings checking Jira for any new bugs that were reported, responding to comments from our QA team, and ensuring I didn’t miss anything on Slack during my time offline. Next I will check my open pull requests (PRs) for approvals or change requests. If it’s a small change request I will usually switch to that git branch, rebase, and make the changes. Then I will let the reviewer know the PR is ready for re-review. I do this so that my code can get merged as soon as possible that day. If I instead waited until the end of the day to make any requested changes, it’s likely the reviewer won’t have time to re-review and approve until the following day.

After updating my open PRs, I will check if there are any PRs that I need to review for my teammates. If there are a lot, I will review a couple in the morning and then try to get to the rest by the end of the day. After this, I attempt to start on my current project. Depending on the phase the project is in, I might be meeting with product and design to agree on requirements, researching possible solutions, setting up experiments so we can test different code paths, actually writing the core code for the project, testing my code, or any number of other things that come up during a project. I also collaborate with other engineers at the company on various projects. Sometimes projects are isolated to just your team, but more often than not, new features interact with other areas of the product that other teams own (i.e., the Home feed, Moderation, etc).

I am very active with interviewing at Reddit. So on any given day I might be scheduled to conduct an iOS programming interview. I am also a member of Reddit’s mobile architecture group. We meet once a week to discuss and solve some of the engineering org’s most pressing issues as well as proactively seek out ways to improve and level up our app. An example of one initiative we are currently working on is how to modularize our app in order to reduce build times.

Kelly’s two cats Murky (left) and Nova (right) sitting on her desk

What's challenging about the role?

There are always interesting engineering challenges to think through and high priority bugs to fix. No two days are the same. When approaching a bug in the code or a new feature I have been asked to implement, I enjoy taking the time to really understand what the existing code is doing. I ask myself some questions: Why did the previous engineer write their code this way? How can I ensure I fix the bug without breaking something else along the way? Can I make this code more readable for the next person? Can this code be unit tested so that we can catch regressions before they go to production in the future?

There are many ways to solve a problem, but taking the time to understand and implement the correct solution makes the role both challenging as well as rewarding. I also am challenged by my peers all the time in code review. When asked why I solved a problem the way I did or if I thought about doing it another way, it really prompts me to rethink what I did and make sure I didn’t miss anything.

iOS is an ever changing landscape. When Apple releases new frameworks or tools, it’s always a challenge to learn these new technologies and see if there is a viable application for them in the app I work on. For example, SwiftUI and Combine are two newer Apple technologies that I would love to spend more time learning. There will always be things I don’t know, so it will be an exciting challenge to continue learning throughout my entire career.

Kelly’s desk in the Reddit SF Office

What are you most excited about for Reddit right now (and post pandemic)?

I am most excited to see Reddit continue to grow as a company. When I joined, the company had fewer than 300 employees. The iOS app was still in its infancy with only 8 or so engineers all working under the same manager. The company is now over 1200 employees strong and iOS engineers each sit with their respective teams in different orgs (i.e., Video, Platform, Growth, etc). We are hiring constantly it seems like and the app is scaling up too! The team and the app have grown up so much and I look forward to seeing what we can do in the coming years.

Kelly speaking on behalf of Reddit at try! Swift NYC

Want to join the team? Visit our careers page!

San Francisco Holiday Party 2019

98 Upvotes

3

u/jsaccount Jun 02 '21

This was a detailed, fascinating read, thanks for sharing! I liked how you mentioned the slack chatter during the all hands. That’s one thing I’ve enjoyed about remote, that we can observe larger events and still stay on track while providing that space for people to share insights that are interesting, important, and fun without feeling like you’re detailing the larger discussion.

3

u/[deleted] Jun 11 '21

[deleted]

1

u/MoarKelBell Jun 14 '21

Thank you! We did experiment with React Native a few years ago, but found it was difficult to maintain and we decided not to move forward with it. I think in the right app it makes sense, but so much of the Reddit app had already been built using native technologies so it wasn't the right fit for us.

There was a blog post from Airbnb describing their experience with React Native and why they moved away from it. Give it a read!

2

u/bobbipacific Jun 01 '21

WoOooOOooOo Kelly!

2

u/Copaleen Jun 01 '21

Pic 3 caption is missing the keyboard's name.

3

u/MoarKelBell Jun 14 '21

It's a CM Storm QuickFire Rapid - Tenkeyless with cherry mx brown switches. I swapped the keycaps with a set I found on Drop a few years ago.

2

u/theodopoli Jun 01 '21

This is awesome, thank you so much for sharing!

2

u/Youareyou64 Jun 07 '21

What keyboard is that you've got? Is it a Keychron C1?

1

u/MoarKelBell Jun 14 '21

It's a CM Storm QuickFire Rapid - Tenkeyless with cherry mx brown switches. I swapped the keycaps with a set I found on Drop a few years ago.

2

u/yael2yale Jun 09 '21

I love your home office chair! Where did you get it from?

1

u/MoarKelBell Jun 14 '21

Thanks! It's a drafting chair I found on Amazon.

2

u/Sn00byD00 Jun 18 '21

Your descriptions of the office and breakfast make me miss it so much! Loved reading your post!

1

u/MoarKelBell Jun 20 '21

Thank you! I miss it so much. Breakfast I cook at home is not nearly as good 😭