Discover more from gk3.fyi
The Cost of Craft
Why is it so hard to do great work at scale?
For context —
I wrote the original version of this note in September 2021, after spending that year attempting to improve the craft and quality of the Instagram creation experience. Through this work, I noticed some broader organizational themes that were making progress difficult. Frustrated with the slow pace (and also about to head out on a six week vacation), I decided to write and share my thoughts and observations with leadership. I hoped that putting everything in one place might make it easier for the topic to keep moving while I was out.
I returned to plenty of positive responses and promises that things would improve. Great! But… my break ended up being the time and space I needed to realize that I didn’t really care about anything I was working on anymore. The last year or so was fueled mostly by my own momentum, which proved impossible to get back once lost. I tried to get excited about something new, but everything felt so boring. After ~7.5 years at Facebook and Instagram, it was clearly time for me to leave.
Before my last day, I decided to share a refined version of this note on Workplace (aka internal Facebook at Meta), hoping it could inspire other designers across the company to think differently about their approach to craft.
In this third version, I've heavily rewritten and expanded the note to make it more general and relevant beyond the Facebook context. It’s been over a year since I left, and I’ve had a lot of time to reflect on the challenges of creating quality at scale, as well as the critical roles that incentives and vision play in the bigger picture.
I hope that, through this note, you'll gain insights into the complexities of digital product design and find inspiration to approach your own work with a fresh perspective. Enjoy!
At the start of 2018 I decided I wanted to try and transfer to Instagram. I reached out to Ian Spalter and asked him to lunch. Even though he was the head of design, he graciously accepted and we had a great chat about my career and goals — mostly centered around one question: "why do you want to be at Instagram?"
I wanted to see first-hand how Instagram was able to execute at such a high level of craft and quality. I was coming off of three years on the Facebook Video team, feeling incredibly burnt-out. I was tired of "moving fast" and “testing” incomplete, rushed versions of big ideas. After a few rounds of questionable data the other functions would push design to start making compromises. Eventually we’d ship a distorted, soulless version of our original idea that never actually felt very good but was great at moving metrics.
Instagram appeared to be a utopia in comparison. People there paid attention to detail! Bugs were fixed instantly! Good design was the deciding factor in debates, and intuition and common sense were usually more important than metrics. Every time they shipped, they raised the bar for craft and quality. Every animation was just right, no glitches or weird transitions, each interaction carefully considered and executed.
I was so curious to understand the difference. What was their secret sauce?
About six months after that lunch with Ian, I was lucky enough to get an opportunity to join Instagram. And at the beginning, it was everything I hoped it would be! I got to work on some incredible projects with extremely talented people. I learned about the importance of simplicity, focus, and restraint. I un-learned a lot of bad habits. I worked with engineers who cared just as much as I did, which meant we got to ship experiences that were so good I couldn’t tell the difference between the real app and my prototypes.
Over time Instagram continued to grow and evolve. The product got bigger and more complicated as it accumulated more competitors and employees. Three years went by and I noticed that it was starting to feel more and more like the environment I left Facebook to escape — a place where metrics and growth mattered more than creating experiences that people love.
This is certainly not unique to Instagram. Since you have chosen to read this particular note, I’m going to assume that maybe you have also noticed a downward trend in quality over the past few years. It appears inevitable that all digital products must eventually trade craft for scale.
What drives this cultural erosion? After reflecting on my experiences across a number of different teams, I think it all really comes down to one simple thing:
The cost of craft rises with each additional person.
(person = any IC product manager, engineer or designer)
The secret sauce I was searching for was really just a perfect blend of size and talent. I was comparing Facebook (which had hundreds of designers and thousands of engineers at the time) with a much smaller, extremely talented team, where everyone (!) was generally working in the same direction. Of course they were able to execute on another level! It’s simply so much easier to keep 10 people in sync than 10,000. Each additional person makes it harder for everyone to stay focused and in sync.
The perks of being small
A small, talented team can make it feel almost effortless to design and ship incredible software. The trap here is when you start to take this for granted and assume that craft and quality are “just a part of your corporate DNA.” In reality, there are a number of subtle, “free” perks to being small that can create a false sense of security.
Here are a few I noticed while at Instagram:
Small teams have a good reason to stay focused, since there's usually not enough people to do much beyond whatever is absolutely essential to the vision. This focus reinforces a shared drive for simplicity, and teams inherently build components thoughtfully in an attempt to save other people’s time.
Small teams → Fewer headcount → Higher quality hiring
For a long time, Instagram was the “small, cool team” that could only hire a handful of people each year (compared to Facebook’s seemingly infinite headcount). This allowed them to be much more selective, and they almost always got the best people out of each internal new-hire pool.
With fewer open roles, you can spend more time focusing on the best candidates. You’re also more likely to wait for the “right” candidate, instead of seeing each hire as just 1% closer to your goal for the year.
Everyone cares (a lot)
Because they were more selective, Instagram prioritized hiring people who genuinely loved the product and were passionate about making it better. These are the type of people who will prioritize bug fixes, regularly go a little above and beyond the spec, and speak up when they see bad ideas that will make the product worse.
If you take these benefits for granted and don’t foster a culture of intentional quality while small, the craft and quality will start to evaporate, replaced by increased product complexity and tension between teams.
It is really hard to keep things simple, especially if you have a product that people really like. When you do things well, people will always ask you to do more. Your features will multiply and expand as you try to make them happy. Soon, new competitors will emerge that will tempt you to stretch your product in new directions. The more you say yes, the bigger and more complicated your product will become.
At the same time, when companies grow it becomes near impossible for leaders to be involved in every single product decision. Teams and orgs will need a way to make smaller decisions on their own. An abstraction layer will be created to give everyone a way of knowing if they are pushing their part of the product in the right direction. I believe that the components of this layer play a major role in how a product evolves.
While I was at Facebook, this abstraction layer consisted mainly of data and metrics. Leadership would come up with goal metrics (Very Important Numbers) that loosely mapped to the current core business goals. If these metrics moved in the right direction (up and to the right) then it meant that the work you shipped made the product “better”! Your personal ability to move these metrics was referred to as your "Impact", and it was a major factor in assessing your job performance and salary (aka bonuses and promotions). This created a huge incentive to get very good at moving the important numbers.
For the most part, the way you move these numbers is by shipping some kind of change to the product. In my experience, these changes tend to fall into one of three areas: Innovate, Iterate, or Compete.
A major transformation like reimagining entire parts of a product, or making a whole new product. This means lots of exploration, experimentation, and uncertainty. It also requires alignment across many teams, which gets more difficult with scale. If you do get to ship, you may find that it can take time for people to adjust to big changes or adopt new behaviors, making short-term metrics look “concerning”. These kinds of projects seem to be more common at the start of a company, but become "too risky” over time.
Smaller, more incremental changes to a product. You might be improving existing functionality, or expanding a feature in some obvious way. These projects are easier to execute than big, innovative projects, and they usually have a lower risk of bad metrics. At the same time, they also have a low chance of driving any meaningful user growth or impact because they’re not as flashy or exciting as new features.
Expand a product by borrowing features from a competitor that is semi-adjacent to what you already do. These projects are seen as "low risk" and sometimes “essential” because that competitor has already proven that people really want this feature. They have high short-term impact potential too, whether from the novelty effects of people trying something new or the excessive growth push (maybe a new tab or a big loud banner) requested by leadership to ensure that "our new bet is successful.”
Leaning too far towards any one of these areas will cause your product to become distorted. For example, spending too much time only iterating on existing features could leave you vulnerable to new, differentiated competitors. Too much innovation could end up disorienting and frustrating people who depend on your product. Healthy products thrive on a careful blend of each (another secret perk of smallness — it’s easier to maintain balance).
Sadly, keeping things balanced can be very challenging when metrics and career incentives are too tightly intertwined. Instead of focusing on what is good for the product, people start focusing more on easy ways to move the numbers. Perhaps a couple of big, expensive Innovate projects didn't produce "angle-changing" impact on their metric fast enough. Suddenly, Compete projects start to look like an attractive shortcut to success.
Compete projects are seen this way for a few reasons. They typically require building out some new space in your product (because elegantly fitting new features into existing experiences is much more time consuming). But then how will people find this new space? Ideally, you would convince someone to give you a coveted slot in the tab bar, but you'd probably be fine with a very visible button on a popular existing surface. The best part of creating your own surface is getting to make up your own rules and patterns, without needing any other team’s approval (huuuge time saver). You’ll also get a pass for bending broader design system rules because your new surface is “such a unique use-case,” and your Director/VP said you can do whatever you need to get it shipped. When you ship, leadership will push for a thirsty growth move “just this once” to make sure this new idea “gets enough eyeballs.” This all adds up to a repeatable slam dunk, short-term metrics win that is hard to resist.
When the balance skews towards Compete, it is easy to lose sight of the big picture. The vision for the future devolves into questions like, "what if we had more users?" and "what if we just did more stuff?" This mindset drives products to become big, complex messes of features, leaving you wondering, "who asked for all this?" You end up with a lot of smart people who let numbers overrule their judgment.
These changes don't happen overnight. It starts more slowly with a sloppy new feature here and a couple of "temporary fixes" there, yet you still have hope that things will turn around. Then you notice that teams are cutting corners just so their impact can fit neatly into the six-month performance review cycle. Tech debt starts to pile up, and there always seems to be something new and important to distract people from addressing the mess they created with their last project. Over time, the complexity compounds — bringing increasing amounts of tension along with it.
When your vision is just "let’s do more stuff," you may find yourself discovering more and more new competitors over time. They might be in spaces that are adjacent to what you're already doing, or in completely new verticals. Every new competitor means a new team is formed, with new goals, and usually a directive from leadership to “defeat” this new competitor at any cost.
Early at Instagram, I noticed a lot of value was placed on simplicity. One way that manifested was through a strong aversion to creating new surfaces. When you build a new surface, you force users to expand their mental model of your product. These new surfaces will also require additional entry points to help users find them. When you have a small product with plenty of room, this is an easy problem to manage. However, as the product grows and features multiply, internal competition for space intensifies. Top-level space becomes some of the most sought-after real estate in a product. Being on a high-traffic surface means tons of “free” exposure and engagement for your new surface.
Because you can only fit so many buttons on a screen at once, teams will find themselves fighting to do more and more with a fixed amount of space. Without a shared vision uniting these teams, tension will build over time.
You may hear people say things like:
“it’ll be faster if we aren’t dependent on this other team’s project, we will build our own version of this component”
“I think their project will fail/has already failed, we can’t link our team’s success to theirs”
“it is a waste of time to build this component to work everywhere, those other surfaces won’t have any impact on our goals”
“we must ship whatever is best for our goals, even if an alternate version is better for another team”
“those other teams will just have to figure out how to adopt this new pattern sometime after we ship”
This kind of thinking directly translates to poor craft and feature sprawl:
components break more easily because they aren't built in a flexible, reusable way.
everything ends up being a one-off, which adds to a pile of tech debt that never gets fixed because there is rarely any impact in behind-the-scenes fixes
design consistency between different experiences starts to drift because it is faster and easier to just ignore what everyone else is doing
teams get overwhelmed trying to do everything on their own, which leaves little time to focus on quality and craft
To reverse this tension, you have to try and hit the brakes and bring everyone's goals together into a shared vision. Something that goes beyond just "let's get more users." Unfortunately, when you've been "moving fast" for too long, you have so much momentum that slowing down seems impossible. Instead of doing the hard work to figure out the vision, leaders often try to reorganize their way out of the problem by consolidating teams and projects. This may work temporarily, but if you don't address the underlying incentive structure that is creating complexity, the tension will inevitably come back.
Craft is simply more expensive at scale
Companies with a small, talented team and a clear vision can easily produce high-quality products with a focus on craftsmanship, since everyone is motivated to do things well. As teams and companies grow, the cost of maintaining quality and craft increases exponentially, requiring more time and energy to keep things consistent. To keep “moving fast,” it's essential to allocate an equal number of people to focus on the foundational aspects that have brought the company to where it is now.
What can we do?
It’s never too late to start pushing for change, but just know that bigger companies tend to move much more slowly. You won’t be able to fix things overnight, and it will be a long and tough uphill climb. Smaller companies are a bit more malleable and can be quick to adopt new ways of doing things, or just easier to find broad alignment.
Suggestions for ICs:
Define your values
Get as many people together as possible and write down/agree to the principles that drive your product decision making. It’s easier to push back on bad ideas when you can point to something in writing.
Find leadership buy-in at the highest level possible. Ideally your CEO or Founder, but if you are at a big company you may need to settle for a VP or Director.
Constantly push the vision
As a designer, you have the power to create very realistic looking glimpses into alternate futures. Dedicate some of your time to making some wild stuff that pushes the boundaries and reminds people that anything is possible.
Invest in relationships with collaborators
You can’t do anything by yourself, so spend time connecting and understanding the people you work with. Learn about what they care about, and share the same. Having a good relationship with your partners makes it less uncomfortable when you push back on bad ideas. It is a lot easier to say “no” to a friend, and then collaborate on something you can say “yes” to.
(btw, I went deep into the connection between relationships and craft at Framer Loupe in my 2019 talk chasing quality.)
Suggestions for leaders:
Continually refine the vision
What happens when you succeed? If you feel like you’re focusing more on growth than creating great work, it might be time to figure out a new vision for the future.
Fix the incentives
Introduce a craft or systems-focused counterbalance to metric goals so that success doesn't come at the cost of user experience. Success at the cost of the experience can no longer be acceptable.
Add questions like “how much did you help other teams this cycle” or “how many components did you contribute/improve” to performance reviews. Only focusing on measurable outcomes will blind you to all of the other outcomes that are impossible to measure.
Stay focused on foundation
Dedicate a block of time every year where you don’t ship a single new feature and just focus on improving what you already have. Establish foundation teams and ensure they grow at the same rate as the rest of your company.
Implement "local" design systems
Allocate a portion of headcount from larger organizations for dedicated local design system teams. These teams will work closely with other teams in their area, improving coordination and identifying overlaps in projects.
Establish a strong connection between local and central design system teams. Local teams will advocate for their organization's needs and assist the central team in implementing changes more efficiently.
Empower local design system teams to make decisions that benefit the entire system. By focusing on a solid foundation, these teams will accelerate the progress of other teams by anticipating their needs and managing core elements that feature teams should not have to handle.
(important note: I am pretty sure Mig Reyes incepted me with this “local” design systems idea at some point)
The pursuit of craft and quality in software is an ongoing journey, one that is heavily influenced by company size, incentives, and vision. As I've shared, there are many factors that contribute to the challenges of maintaining quality at scale, but there are also ways to address these challenges and foster a culture of intentional quality.
For me, I'm grateful to have found my way to humane, where I've been for a little over a year now. As I had no idea what the product was before joining, my main hope was that I would get an innovative, craft-focused design culture in a start-up style wrapper. So far it has been all of that and so much more, and I try to mindfully soak in those vibes every day.
I hope that these reflections and insights have been interesting and perhaps even inspiring for you on your own journey. Remember, the pursuit of craft and quality is a continuous process, and it's up to us to shape the culture and systems that allow it to flourish.
Thanks for reading! Subscribe to get more of my posts in the future.