What are we optimizing for?
We make decisions and tradeoffs at every turn, and it’s up to us to be mindful of them.
This is a repost of an article written for The Pastry Box.
When I was given the opportunity to write for The Pastry Box, the first thing I did was get really freaking excited. The second thing I did is what I normally do when I embark on a new project of any sort: research.
Looking back
I started by looking at older posts from the publication, specifically from 2012–2015 (before this reboot). The posts I saw there were often talking about developing for many devices and screen sizes.
It was the peak of responsive design adoption, and we were really starting to grok the idea that content needed to be flexible and work at any size, not just target specific devices. This meant that we could code one experience and it would magically work on all devices, regardless of screen size. We had chosen to optimize for a landscape of hundreds of device sizes. It was really magical. One site could be tens of sites depending on the device you were using to look at it! We even started delivering different images to devices that had better screen resolutions. If a user has a great screen, of course they want to see the sharpest most beautiful image they can, right?
What are we optimizing for now?
Fast forward to 2018, and we are in a bit of a performance crisis. Specifically, we are gaining more and more awareness around the fact that data is expensive, and a great internet connection is a privilege that not all of our users have. Maybe our users don’t want the 400KB photo that’s 3X retina-ed? Maybe they just want to finish the task they were trying to complete. There’s a great site from Tim Kadlec dedicated to awareness around the cost of data: https://whatdoesmysitecost.com
Progressive web apps are gaining traction as a tool to help us build offline-first experiences that still work well on unreliable connections. We developed new techniques like code splitting and tree shaking to help us make sure we are only delivering the assets the user really needs. These days, optimizing for performance is just as important as optimizing for one experience on multiple devices. Sometimes, we admit, adaptive solutions are actually better for our users’ needs.
What am I optimizing for now?
As I grow in my career and my personal life, I’ve learned that being intentional about the tradeoffs and optimizations we make leads to better results. Personally, I’ve found that I have made better career strides by diving in on design systems and accessibility work instead of focusing on being a generalist UI engineer. While I’ve not been as social as I have in the past, I’ve been able to cultivate career growth and still had time for my hobbies. That’s a tradeoff I’m consciously making right now.
On my team, we decided early on to take on some technical debt and optimize for delivering a release sooner. Since we’re conscientious of this, we set ourselves up to fix it later by building refactor time into our roadmap, and discussing areas of improvement during our regular retrospectives. We’re intentionally not engineering for scale, since we work on an internal app. We’re choosing to optimize for developer experience over site speed.
A ripple effect
When we’re not being intentional about our optimizations, it can lead to a lot of unintended but incredibly detrimental effects down the road. I’ve seen months of dev time lost because we valued developer experience too much and performance suffered and had to be fixed, but this can happen on an even larger scale.
I think many of the products we use and companies we interact with are becoming more and more aware of the tradeoffs that they made early on, perhaps unconsciously, and are questioning the ripple effects of that.
As social media addiction becomes more and more of an issue, Facebook is forced to examine the underlying principles behind the idea that more time users spend on Facebook, and the more ads in front of the users’ faces, the more money Facebook makes. Facebook is launching an overhaul to their news feed that rewards engaging content, specifically from friends and family. They’ve decided to try to optimize for making their users feel positive from their interaction with Facebook.
As the media optimizes for clicks and views rather than quality content, the race to release a story first and creating viral content has become more important than quality, or even factually correct, content. Facebook is also assuming much of the responsibility for letting fake news thrive on their platform and the ripple effects of that on things like our elections.
Twitter (oh, Twitter) has decided to optimize for “newsworthiness” over culpability for enabling a platform for hate. They often optimize for engagement over complaints of harassment and other safety issues.
Google, in the wake of the controversial Damore memo, decided to optimize (in this case, at least) for a safe work environment, instead of letting individuals voice opinions that made women feel uncomfortable publicly in the workplace. They also are dealing with some backlash, as with Facebook, in regards to their relentless tracking of users’ data which they use to sell ads.
When I’m evaluating my optimizations, it’s helpful for me to balance tradeoffs by avoiding negative connotations. For example, in some circles it’s looked down upon if your product “doesn’t scale.” Why? Do all products need to serve billions of users a day? No! But many do need to get to a viable MVP state as quick as possible and scale is not and should not be an optimization they’re making at the beginning. That’s not to say they shouldn’t be thinking about it, but there are more important things. And frankly, you’re probably never going to need to scale that much anyway.
I made a decision not to support server side rendering for the application I’m working on, and at first it felt kinda dirty, but I reminded myself that there’s no real reason that I’d need that for an internal app that’s mostly going to be used on desktop and can only be accessed on corporate internet (which is already fast). It’s not a bad thing, it’s a sensible tradeoff.
Whether it’s a lack of awareness or an intentional choice to let these tradeoffs lead product decisions, no one can deny that they’ve had huge, huge effects on society as a whole. Even when our stakes are much lower than social media’s, I think everyone can benefit from habitually asking themselves and their peers, “What are we optimizing for?”