Week In The Life Of A Staff Software Engineer

Week In The Life Of A Staff Software Engineer
Photo by Danial Igdery / Unsplash

If you've spent any time on YouTube, chances are you've seen those "Day In The Life Of A Software Engineer" videos. They're often staged portrayals of elaborate morning routines and luxury high-rise apartments with cinematography that rivals Hollywood.

These videos excel at portraying an idyllic day: from sunrise yoga classes to artisanal coffee brewing to rock climbing montages. However, for all their visual appeal, there's often a glaring oversight: a genuine perspective of what it's like to work as a software engineer.

Debugging, problem-solving, technical discussions, collaboration, code reviews, release planning, and other critical aspects of the job receive at most a passing mention.

So, over this past week, I've kept detailed records of my workday in order to provide a realistic view of a typical workweek as a Staff iOS Software Engineer at Turo.

It's likely more detailed than most people care to see, but when I was first exploring this career, this is the kind of play-by-play I was looking for.

I've replaced real project names with fake ones (movie names) just to be on the safe side and I've intentionally been a bit vague with the details in some areas.

I like my job and I want to keep it. 🤫

Monday

  • 8 am: Rest day from the gym. Personal errands in the morning, apartment cleaning, quick grocery run, coffee, etc.
  • 9 am: We still have some Objective-C in our codebase, so last Friday, I had started converting one of those classes to Swift. I picked that work back up and wrote new unit and snapshot tests.
  • 9:40 am: Opened up a PR for the conversion and did a quick self-review.
  • 10 am: I had another PR ready to go on Friday, but I was waiting for translations that, fortunately, came through over the weekend. So, I pulled in the new translations, addressed the final code review comments, and requested another round of review from the team.
  • 10:15 am: [Backlog Grooming] We've got a new project - Interstellar - on the horizon and it involves a somewhat sensitive area of the codebase. While the details of the new project aren't finalized, I know that there's a couple of components that will need to be more reusable in order to support this new experience. So, I start looking into refactoring them and improving our code coverage for this area of the codebase.
  • 11 am: A quick breakfast, more coffee, and a little reading on HackerNews and iOS News.
  • 11:20 am: Continued working on the refactor.
  • 12:20 pm: Taking a short break to address minor comments on the PR I opened this morning.
  • 12:40 pm: Lunch and some code review.
  • 1:40 pm: My main focus right now is Project Matrix. We're on the home stretch, so just working through some of the final bug fixes, TODOs, and release blockers.
  • 3 pm: Came across some potential tech debt in the codebase. So, I started searching through Slack messages and older channels to try to better understand the expected behavior.
  • 3:30 pm: This is looking more and more like a bug now rather than just tech debt. I pinged one of my Android co-workers to see if they're experiencing the same thing - no luck.
  • 4 pm: I'm leading the small team spearheading Turo's move to SwiftUI. Just had a brief call with  a few of the other team members to discuss the status of the tooling (like linters and pre-commit hooks) and other helpers we're in the process of developing.
I'll be talking about this transition in more detail at an upcoming iOS conference. 😉
  • 4:20 pm: Returned to investigating the tech debt / bug topic. After discussing with Product and Design team members, we decide that it's a low priority issue we can address after launching Matrix.
  • 4:30 pm: Our release engineer just released the latest version of our iOS app which includes a major project I've been working on for the past few weeks. So, I started monitoring our metrics and logs for any new issues following the initial rollout of the feature.
  • 4:40 pm: Back to Matrix now. Concentrating on some TODOs and writing documentation. I'm still checking the metrics and logs periodically and will continue to do so throughout the evening.
  • 5:15 pm: 1:1 with a teammate I'm mentoring.
  • 5:40: Signed off for the day.

Tuesday

  • 6:30 am: Gym.
  • 8:30 am: Shower, breakfast, coffee, etc.
  • 9 am: Looking at a few code review requests that came in yesterday evening.
  • 10 am: [Standup]
  • 10:15 am: [Sprint Planning]
  • 11 am: Continued working through the final release blockers for Matrix.
  • 12:30 pm: Lunch and some code review.
  • 1 pm: Still working on Matrix, but focusing on adding tests and addressing code review comments.
  • 1:30 pm: Most Matrix release blockers are now resolved.
  • 1:40 pm: Found an edge case on mobile clients for Matrix that would require changes to the API response. Set up a meeting with Android and backend engineers to discuss further.
  • 2:30 pm: Ran into an offline data storage edge case that effects Matrix's implementation. Checked in with the Android team to see how they're navigating this issue. We align on similar solution for both platforms.
  • 3 pm: I'm the technical lead for Interstellar. It's still in it's early stages, but met with Product and Design teams to provide initial engineering input on designs, project scope, and estimated development timelines.
  • 4 pm: Matrix team meeting where everyone aligned their status on release-blocking issues, discussed pending analytics events, and reviewed our phased rollout strategy.
  • 4:45 pm: Responded to comments on open PRs and successfully merged in a couple of them.
  • 5:30 pm: Signed off for the day.

Wednesday

  • 6:30 am: Gym.
  • 8:30 am: Shower, breakfast, coffee, etc.
  • 9 am: Code review (re-reviews mostly) and looked at a proposal (request for comments) from another member on the iOS team.
  • 9:40 am: Left for the office.
  • 10 am: Arrived at the office and continued working on Matrix. Mostly focused on implementing the changes from our launch discussion yesterday (updating analytics events, PR comments, and a bit more testing).
  • 11 am: Learned that another coworker (on a different team) was modifying the behavior of an existing feature that Matrix relied on as part of an A/B test. Had a quick call to ensure that the new changes would still be compatible with both of our use cases.
  • 12 pm: Catered lunch in the office and spent some time catching up with coworkers.
  • 1 pm:  Stopped by a Valentine's Day event organized by the building with a few coworkers.
  • 1:15 pm: Back to Matrix. Noted some small differences in how things were behaving across different platforms (Web, Android, and iOS), so I started a call with folks from Product, Design, and Engineering to make sure we were all on the same page.
  • 2 pm: Guiding a coworker through a SwiftUI issue they were having and brought them up to speed on the SwiftUI transition team's recommend conventions and best practices.
  • 3 pm: Discovered a bug in a recently launched feature and released a hot fix.
  • 3:30 pm: SwiftUI transition team meeting. Talked through some of the development issues the larger iOS team was running into, how we wanted to prioritize the remaining work, and a presentation from one of the members about the newest design system components they had built out.
  • 4:40 pm: Heading home.
  • 5 pm: Some misc. tasks: updating some analytics events, a couple SwiftUI questions from coworkers, and sending out a new internal build for Matrix testing.
  • 6 pm: Signed off for the day.

Thursday

  • 6:30 am: Gym.
  • 8:30 am: Shower, breakfast, coffee, etc.
  • 9 am: [Engineering All-Hands / Tech Update] Company-wide engineering updates and presentations from other engineers about new tooling, initiatives, or other developments they're working on.
  • 10 am: [Standup]
  • 10:15 am: Updated portions of the Matrix project's UI to use the new design system components.
  • 12 pm: Discovered a potential release blocker for Matrix on the backend. Meeting with product, designers, and other engineers on the team to triage and align on a solution.
  • 12:30 pm: Engineering only meeting to delve deeper into the implementation details of the new solution.
  • 1 pm: Group code review session - we split into small groups of 3-4 engineers to collectively review PRs. It's hands down my favorite meeting of the week and where I feel I learn the most.
  • 2 pm: Back to Matrix.
  • 2:30 pm: Quick call with a coworker to help them debug a SwiftUI issue.
  • 2:45 pm: Back to Matrix.
  • 3:30 pm: Starting today, I'm also supporting Project Spectre. We gathered to go over requirements and to start the handoff to my team. (I usually don't work on these many projects at once.)
  • 4:30 pm: Back to Matrix.
  • 5 pm: Encountered a bug that affects the entire app, not just Matrix. So, I put together a tentative solution as a starting point for discussion. I don't love the solution, but I'm hoping - with the team's help - we can come up with something more refined.
  • 5:45 pm: Created a proposal (RFC) and requested feedback from the team.
  • 6 pm: Addressed some feedback on an open PR and merged it in.
  • 6:30 pm: Signed off for the day.

Friday

  • 6:30 am: Gym.
  • 8:30 am: Shower, breakfast, coffee, etc.
  • 9 am: Looking at a few code review requests that came in yesterday evening.
  • 10 am: Team "coffee meeting" over Zoom. With many of us working remotely, taking a little time to just chat and hang out helps us feel more connected as a team.
  • 10:30 am: Had a meeting with the other engineers on my team to work through the spikes, tasks, and API definitions needed for Spectre now that it's officially assigned to our team.
  • 11 am: Doctor's appointment.
  • 12:15 pm: Over lunch, I brought Matrix's integration branch up to date with the main line (mostly resolving merge conflicts) and addressed some open PR comments.
  • 1 pm: iOS team meeting (discussed improvements to our snapshot testing setup, had a coworker present on DocC, and reviewed a new internal developer tool).
  • 2 pm: SwiftUI Office Hours. Myself and other members of the SwiftUI transition team dedicate time every week to assist engineers encountering SwiftUI development challenges as we navigate this transition from UIKit.
  • 3 pm: More code review.
  • 3:30 pm: A coworker reached out a SwiftUI issue they were having. After some debugging, it seems like a dead end until we can drop iOS 15 support. We find a workaround for now, but it's something I'll have to bring up with the full transition team next week.
  • 4 pm: Back to Matrix. Addressed the remaining TODOs and opened up the final PRs. 🚀
  • 5:15 pm: Helped a coworker plan out their new feature's implementation in SwiftUI.
  • 6 pm: Signed off for the day.

My evenings usually follow a familiar routine. After work, I'll usually work on side projects like writing books, blog posts, newsletters, or indie app development. Occasionally, I'll also enjoy a bar trivia night or happy hour during the week too. 🍹


Hopefully, this deep dive has provided you with a clearer picture of what a typical work week is like for a full-time software engineer. As you can see, every day is different - new problems, new solutions - and that's all part of the fun. 🚀

If you're interested in more articles about iOS Development & Swift, check out my YouTube channel or follow me on Twitter.

And, if you're an indie iOS developer, make sure to check out my newsletter! Each issue features a new indie developer, so feel free to submit your iOS apps.

Ace The iOS Interview
The best investment for landing your dream iOS jobHey there! My name is Aryaman Sharda and I started making iOS apps way back in 2015. Since then, I’ve worked for a variety of companies like Porsche, Turo, and Scoop Technologies just to name a few. Over the years, I’ve mentored junior engineers, bui…
Indie Watch
Indie Watch is an exclusive weekly hand-curated newsletter showcasing the best iOS, macOS, watchOS, and tvOS apps from developers worldwide.

Subscribe to Digital Bunker

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe