A Day in the Life: Tech Lead

9:30 am

Today seems like a bacon day. After the usual bus jaunt, I swing by my breakfast spot and swipe the last bacon breakfast sandwich. I head up to the office and post up in the kitchen. I catch up on the usual list — code reviews I didn’t get to yesterday, updates to tasks that require my attention, triaging new bugs. Inevitably, I inform the querying minds where exactly I got my breakfast sando. The technical questions will come later in the day.

When I’m caught up, halfway through breakfast, and fully through my first coffee of the day, I look at my open tasks and see which one I could knock out in an hour before the engineering sync at 11. Looks like there’s a couple of easy bugs that I can tackle: permissions error, missing user field in customer service tool’s configuration, spacing issues on code snippets in one of our resources. I find fixes for two bugs and get one up for code review before it’s time to head into the meeting.

11:00 am

Weekly Engineering Sync.
We have a pretty standard agenda:

  • Follow-up on last week’s takeaways
  • What’s on tap for this week’s tech talk? 🍻
  • Unix Tip of the Week
  • Review #engineering tasks
  • Lightning Talks ⚡
  • Topic Discussion
  • Takeaways

No takeaways from last week. We advertise this week's tech talk: Dave is going to talk about encryption and SSL, which I'm pretty stoked about. We go through the tasks on the engineering board, stuff that the product people don't really need to be in the loop about: addressing tech debt, refactoring complicated models, etc. No lightning talks today, but usually those consist of mini tech talks or explaining creative solutions to interesting problems.

Our topic discussion revolves mostly around improving our development environment and local server. In last week's engineering sync we decided it was an issue, and that each engineer should come back with their hypothesis of what the issue might be. This week, we each share our hypotheses, and start spitballing ways to prove or debunk each. With a few ideas thrown around, we decide to come back next week with results of some kind.

We spend the last 5 minutes of the meeting discussing whether this is the right approach to solving our dev environment issues. I liken this to the turtle in the turtle vs. the hare race. I'm corrected that it's actually a tortoise, and I should get my fabled characters straight. We agree that the tortoise approach is the right one for now: small, steady improvements. 🐰🐢

12:00 pm

Salmon teriyaki for lunch. Easy choice.
People are playing "Meet Yo Team", a game where we pull questions from a jar to learn more about our teammates. The instructions are pretty simple, grab a question out of the jar, ask it to a coworker, profit. Someone asks Ariel where he'd want to live for the rest of his life, if he could pick anywhere. Sounds like we can find him in Tel Aviv for the food, jazz, and diverse culture. Apparently, I need to check out Tel Aviv.

1:00 pm

After lunch, it's data time. I'm working on adding a recently added model to various tables in our data warehouse. Since I'm pretty new to working on business intelligence, there's a fair amount that I'm just completely unfamiliar with. It's a great feeling.

While I work on the changes to the repo, I also keep an eye on Slack. Code review questions come up in #engineering channel, La Croix preferences come up in #hq channel, and of course, DogBot (my twitter-integrated slack bot) updates #puppies channel with the latest dog ratings post. 🐶

3:33 pm

Joe wants to chat about a possible implementation for a bug he picked up. The bug is due to a hard-coded value in our interview note model. This value doesn't correspond to an existing instance of another model in our database. His proposed fix is to add an association on the interview note model to the this other model. He wants to chat out some details of the switch, so we take to the whiteboard and start drawing boxes and lines.

3:48 pm

After the impromptu whiteboarding session, I start thinking about tomorrow's meetings. I need to form some estimates for an upcoming project. The project was proposed as an alternate implementation to improve some of our legacy products, but I need to outline the different stages of the project and how much engineering work is involved in each stage.

I head into my office so I can really concentrate. When I say "my office", I really mean sitting on the couch between the wall and the wheely whiteboard. I start drawing out existing models in our codebase, drawing lines between associations, and determining dependencies. I use another color to draw new boxes and X out lines that won't necessary anymore.

After drawing out the visual breakdown of the necessary changes, I write out all the engineering tasks. I group them by area of codebase, and also determine which ones are dependent on others. They seem to fall into three main categories: prep work, adjustments to our products, and adjustments to the student accounts. I put together a small slide deck to show these three stages, putting the full estimate at 1-2 months.

6:30 pm

Solid day. Self five. Time to head out to trivia night and see if the team can place somewhere in the top 3. It's unlikely.