2023 Retrospective

What I learned and did in 2023

We're wrapping up 2023, and in the spirit of reflection and gratitude, I'll look back on my year in the same way I did for 2022.

More writing

In 2022, I talked about how I built things in public, and that trend continued this year. Between this site and the engineering blog at my company, I wrote about an article per month, conducted various demos, and recorded several screencasts and tutorials. I also wrote a guest article on the PerfPlant Calendar about a service I architected for pre-caching on large sites. I started interacting with people outside of Twitter on places like the Web Performance Slack and Rands Leadership Slack. It has spurred my development and served as a great source of ideas.

My writing also included documentation and standardization of our RFC (Request for Comment) process, as well documenting new architectures and the technical interview process I created to fill a vacancy on our engineering team.

Web performance

I have been beating the web performance drum for a few years now. This year, performance improvements became an official company goal and a point of emphasis. I'm extremely proud of this because it took 3 years of sharing, educating, and talking about performance to make it happen.

In the process, I learned new insights through exploration, such as a 500ms reduction in the session’s median First Contentful Paint (FCP) results in a 20% increase in user engagement, which as consistent across my company's entire portfolio. People are starting to understand that while 100ms seems like a small amount of time, it is significant in the eyes of the user.

I also hypothesized that if we limit the number of prebid partners and set a bid floor for display advertising, the decrease in competition could help with conversion rate. It's counterintuitive that decreasing the number of bids would increase the revenue, but with the change we've seen an uptick in the quality of the bids, decreased competition for bandwidth, increased our CPM for advertising, and also reduced the Total Blocking Time (TBT) by 50%.

This article sums up the importance of balance with ad revenue vs. site performance, but the suggestion of reducing the number of ad partners was met with hesitation on the business side. I used a presentation from the NY Performance Meetup to help move things forward. It was helpful for my company to see how one of our competitors approached ads and what some of their wins were.

Design system

This year, I also led the planning and creation of a new design system. I wrote a pair of articles (part one and part two) about this to describe this process. This was a continuation of a workshop with Nathan Curtis I took last year. The shortlist of technology for this system included:

  • Lit Element
  • Storybook
  • Style Dictionary

Although this system originally encompassed 5 different brands, it's flexible enough to expand indefinitely in the future. The choice to do the system with web components ensured interoperability between multiple properties and will hopefully give us the promised longevity of leveraging the web platform, while also helping make things more reusable, testable, and accessible.

Job changes

In February, I was promoted to principal engineer based on my contributions to the overall business. A lot of this was spurred on by my web performance work and getting involved with the larger business strategy.

Being promoted wasn't the only change though. This one is still super fresh, but the company I have been at the last 6 years was sold to new ownership at the beginning of December. It's so fresh that I actually haven't met anyone from my new company other than seeing the executives in a virtual town hall meeting. As the result of this change, my scope as principal engineer went from the oversight of a platform with 5 brands to about 40 brands. The company that resulted in the acquisition is twice the size, and the product portfolio was born from multiple other acquisitions. It is definitely a more complex landscape to navigate with business priorities that may have shifted.

AWS

Many of my efforts leading up to the company acquisition this year involved cost savings and infrastructure right-sizing. I was able to shrink my company's footprint considerably without affecting our service level objective. This included a 20% reduction in our EC2 spend, as well as a 40% reduction in our data transfer and storage spend.

I also went through the Well-Architected Review (WAR) process with AWS to evaluate our infrastructure and workloads, and engaged with our reps to assess our training needs. Additionally, with my new role, I really leaned into system architecture. I completed training materials for AWS Certified Cloud Practitioner, Solutions Architect (Associate), and Developer (Associate). I don't plan on sitting for the certification exam, but taking the time to do the prep was still beneficial.

Additionally, I completed two different system design courses on Udemy, Mastering the System Design Interview and Rocking System Design and read several books on the subject.

Application telemetry

Over the course of the year, I expanded our application telemetry footprint to include everything from cost management, to application performance monitoring and slow database query logging. Most recently, I completed an accessibility monitoring pipeline that uses Playwright and axe-core in our CI/CD that logs to AWS DynamoDB, stores the raw JSON files in S3, and has a REST API Gateway. It was a fun little project to close out the year that I'm excited to see evolve.

Year of the snake

Spurred by the sudden popularity in generative AI and wanting to add more machine learning capabilities to my repertoire, I started authoring projects with Python this year. It was good to add another general-purpose language to my skill set and already proven useful since there are packages like pandas, scikit-learn, and Matplotlib that have robust capabilities.

However, I'm not just using it for data exploration. I've also written a few serverless production services with it. It works out nicely because the release cadence of Python is much more relaxed than other popular languages for serverless functions like NodeJS, and it stays within its support lifetime for multiple years.

Looking ahead

My work year ended with quite a shakeup, and I'm looking forward to learning more about my new work situation. Next year, I'm excited to take on new challenges and expand my scope as a principal engineer by solving problems that have a larger business impact.