Andrew Chen

New here? Check out my list of featured essays

Product design debt versus Technical debt

Comments


Amazon’s tabs are a classic example of product design debt and the refactoring process to pay it down

Incrementalism creates Technical Debt, and also Product Design Debt
Most startups these days build products using the various philosophies of agile – both in the formal sense but also the informal sayings of “deploy early and often,” “fail fast,” “ship and iterate,” etc. Coupled with A/B testing, customer development, and thinking through business problems in a scientific, hypothesis-driven way, you end up with a powerful cocktail of techniques to build a modern startup in the most iterative way possible. This kind of incrementalism is mostly great, and people should generally do more of it.

The interesting part is when you get a couple months into your product cycle. You often end up with lots of half-done experiments lying around, an infrastructure that isn’t built to scale, and a mishmash of code that needs to be refactored. Most engineers know that in this kind of a case, the best practice is NOT to rewrite your code, but rather refactor it continually and take down the so-called “Technical debt” so that it’s always under control.

However, there’s the other side of the coin, which is the product design. After you’ve added a ton of new features and stuck them all on the homepage, you create Product Design debt. The Amazon tabs at the top are a great example of this – you have a design philosophy built around tabs, you scale it as far as you can, and then you have to refactor your design.

Arguably, MySpace is a company that never paid down their product design debt, and their traffic has been impacted as a result.

Anyway, let’s dive into this topic more, starting with technical debt.

Technical debt
Most of my readers are probably familiar with the concept of technical debt, but just to re-summarize from this great article on the topic:

The first kind of technical debt is the kind that is incurred unintentionally. For example, a design approach just turns out to be error-prone or a junior programmer just writes bad code. This technical debt is the non-strategic result of doing a poor job. In some cases, this kind of debt can be incurred unknowingly, for example, your company might acquire a company that has accumulated significant technical debt that you don’t identify until after the acquisition. Sometimes, ironically, this debt can be created when a team stumbles in its efforts to rewrite a debt-laden platform and inadvertently creates more debt. We’ll call this general category of debt Type I.

The second kind of technical debt is the kind that is incurred intentionally. This commonly occurs when an organization makes a conscious decision to optimize for the present rather than for the future. “If we don’t get this release done on time, there won’t be a next release” is a common refrain—and often a compelling one. This leads to decisions like, “We don’t have time to reconcile these two databases, so we’ll write some glue code that keeps them synchronized for now and reconcile them after we ship.” Or “We have some code written by a contractor that doesn’t follow our coding standards; we’ll clean that up later.” Or “We didn’t have time to write all the unit tests for the code we wrote the last 2 months of the project. We’ll right those tests after the release.” (We’ll call this Type II.)

Of course, we are mostly interested in the second type. Eric Ries has a great article advocating for why it’s OK to Embrace Technical Debt. Another great article is from Joel on Software called Duct Tape Programmer. All of these articles are worth reading.

I won’t focus too much on the definition since those other posts do such a great job – instead, I think it’s worth talking about why an iterative approach tends to produce technical debt. I don’t think it happens all the time, but there’s always a temptation for it to happen.

Ultimately, the problem is that if you are trying to learn something about the business, and your technology is meant just to support that experiment, 99% of the time it’s not worth it to do things the “right way.” The reason is that you don’t know if something is going to work, and as a result, you don’t want to invest in scale or perturbing your entire codebase for something that might be disposable. So instead, you just put a 10% or 25% version of the product out there (now commonly referred to as the Minimum Viable Product) and do as little coding as possible to get there.

The problem is, when the feature is successful, very rarely is a team going to then go back and rewrite it – every experiment creates more questions, and the temptation is to move on to the next question.

Product design debt
A similar problem to this is Product Design debt, which impacts the user experience rather than the underlying technology. The same temptations that lead to technical debt also lead to product design debt, because it’s always harder to do things the “right way” and it’s almost never a rational investment of resources. Show me a site that has great visual appeal, and I’ll guarantee that they don’t A/B test.

Product design debt happens because of scenarios like the following:

  • “I want to test this new feature, where should we put it? How about the tabs?”
  • “Can we throw this experiment on the homepage and see if people click on it?”
  • “Our navigation is kind of getting out of control, but if we fix it, most of the site’s features will lose a ton of traffic”
  • “We just added a Lists feature and we want to promote it, can we just add a button next to everyone’s name?”
  • “Yahoo just bought our startup and they are going to stick us on their homepage!”

(just kidding on the last one)

The point is, as a product experience grows deeper, at some point the initial design philosophy of just adding more links to a page or more tabs or more buttons just stops scaling. Yet it’s often hard to reorganize the whole site, especially if it means taking a short-term dip on traffic, so the “safe” thing to do becomes to incrementally add things until the user experience is horrible.

Kudos to Facebook for looking at their product and deciding that they needed to refactor everything first into a big newsfeed stream of “stuff,” and then all their features into a generic container of apps. They’ve also done a lot to actually remove options from the menu and navigation.

Why homepages becomes a Las Vegas visual experience
Incrementally-developed UIs that are never refactored often turn into a Las Vegas visual experience over time. Ya know, something that looks like this:

Why does Vegas look this way? I’d speculate that all these buildings are ultimately infringing on the public good of aesthetics, and light pollution becomes a tragedy of the commons. If all of those buildings were to power down, it may be that the relative distribution of business would remain the same, but we’ll never know since that will never happen :-)

Important navigational areas like homepages, inboxes, notifications, etc are all the same way. Each incremental menu item is not a big deal, and provides a lot of value downstream, but a slight incremental cost. But do this enough times, and you’ll start to pollute the overall design aesthetic, which is a public good that all features share.

For startups, this shouldn’t be a huge problem because you should have a product person who manages the whole experience and can resolve the public good problem. But there’s a danger in bottoms-up startup cultures where anyone can throw up an A/B experiment, which on one hand is great, but on the other hand creates UX pollution. The other class of cultures where this becomes a problem is short-term optimizing cultures, which may have a “feature of the week!” they want to focus on, which they need to exaggerate each feature each week.

For established companies with multiple teams competing with each other, this may become a key problem because then it really is a public good within the company.

Product types that are most susceptible to design debt
Ultimately, I think product experiences that provide a million little features are the ones that need to watch out the most.

This means:

  • Social networking and Community sites that want to unify chat, forums, polls, videos, blogs, etc.
  • Portals that want to unify news, communication, tools, etc.
  • Games that want to unify lots of different missions, communication, characters, revenue-generating activities
  • Retail products that want to unify lots of product categories and SKUs
  • Classifieds sites that want to sell lots of different services, products, people, etc

All of the above products are hard to design for because they are meant to be open and support lots of diverse activities, but refactoring the UI constantly becomes a strong need as the initial navigation paradigms probably will not scale.

I wrote an article a while back specifically on social community sites, called Social Design Explosion.

Ideas for when and how to pay down product design debt?
For entrepreneurs out there who are building metrics-driven products but also committed to a great user experience, I would love to hear when and how you pay down the product design debt. Please comment!

Want more?
If you liked this post, please subscribe or follow me on Twitter. You can also find more essays here.

Written by Andrew Chen

November 25th, 2009 at 1:26 pm

Posted in Uncategorized

  • I think "Product Design Debt" as a concept is right but as a term is confuse. You could have named it "User Experience Debt". Product Design is a whole concept, and User Experience is only one important part of it.

    Best regards!
  • Nice Vegas pic from the House of Blues Foundation Room! Certainly doesn't look that lively from my recent visits.
  • PXLated
    Great article.
    Being a designer, I can only speak to the design/ui angle. Have been the design director on some very large well known sites and have faced this a few times with failure and success...
    The failure was the original site for a large bank system. All started well but the online VP didn't have the clout to stand up successfully to the VPs with bottom line responsibility. The home page would start out great (usable) but over time every VP would demand that their division also be featured on the home page. Every 6 months or so I'd have to go in and clean house. Organizational structure can affect the design debt. When we redesigned the whole site a couple years later, the new VP of online did have clout and all went well.
    On the successful side, I was the design director taking one of the big five retailers online. It was during the dot-com bubble when Amazon was worth more than all the rest of the bookstores combined. There was a lot of pressure from the minions to do many things the way Amazon did. Luckily, I had daily meetings with the pres. and had done a complete analysis of the Amazon site so could clearly explain and demonstrate what worked, what didn't and where they were going to have problems in the future as they expanded. This was during the time illustrated in pic #1. During our dev, Amazon did start expanding and pic #2 was an example of why they were dropping all the tabs and going to #3 and then on to #4. I wanted to run around to all the VPs pressuring for the Amazon way and niener them but didn't :-) Here again, organizational structure affected the outcome.
    That big retailer now 8 years later has a tab interface with dropdowns. I've always wanted to go back and find out why.
  • onso
    the amazon example is trivial. as a amazon user, i didn't even notice all this stuff. amazon connects me to the cheapest prices w/o taxes and shipping charges. I could care less about the rest. this is like saying walmart should optimize the way they lay out their mechandise. Amazon probably has products that can fill 100 walmart megastores. optimizing can be good but it can waste time. and most people who talk about optimizing are just talkers. they don't do anything about it.
  • pxlated
    Sorry onso, the Amazon is not trivial. I think what you're missing is that in the pictorial example the first is the way Amazon started, the second is what would have happened as they expanded - Amazon realized the mess a tab interface creates on scale and skipped to #3. And, Amazon is somewhat a special case as it's been around so long they get by with some things others wouldn't be able to. With their scale, it's hard to totally refractor. eBay and others have tried and failed.
  • There is a bar in the East Village called Burp Castle. It is known as a talking bar. Which means it is an environment set up so you can have normal-volume-level conversations while drinking with friends. In order to avoid the "Tragedy of Commons" – where individuals "talk a little louder to be heard above the noise" repeats until everyone is yelling and no one can hardly communicate – the bar institutes and encourages shushing. Meaning when staff or patrons feel it is getting too loud, they start shushing loudly... until the crowd shushes itself. It works. It's even kind of funny and charming once you're used to it.

    My point being, you've effectively articulated a tragedy of commons or institutionalized behavior symptomatic of software-building, user-experience dependent, entrepreneurial organizations. Basically firms that require constant and sustainable innovation as a foundation for business.

    As some commenters have pointed out, there are disciplines that can be adopted and made cultural in a software development organization, where reinvention, or refactoring is an institutional norm. The earlier this is engrained in the culture of a growing firm, the more that successfully managing and growing that firm into a sustainable enterprise will consider and depend on thoughtfully balancing the frequency of refactoring with the tolerance of design debt.

    Lack of any such process whatsoever results in the classic exposure to competitive disruption as a company's core institutional liability.

    Basically, any innovation company has got to consider building in a discipline of shushing in order to keep the conversation alive.
  • manavecplan
    Fantastic article Andy...you have no idea of what an eye-opener this is to someone who was considering the design of the website of his startup. I might just touch base with professionals now. Thanx a ton for this...
  • manavecplan
    This was probably one of the best articles I've read which would help me in designing the site for my startup. Or outsourcing it entirely. Fantastic...
  • yuchiang
    Andrew - WGT.com is a metric driven a/b testing culture, but we also have a very strong IA lead and invest a lot in user experience. What we have learned is that you have to be agile and test like crazy but every 3 or so releases we have a product expert review the information architecture and experience to specifically unify, clean-up and refactor the sections that need the most help. We find that you have to book out time and resources on a schedule or else this will never get done. Also we have found that if you target correctly you will see improvements in acquisition numbers and retention, so paying down debt can be ROI positive.
  • Great comment, thanks for the thought. Glad to hear that you've figured out a balance.
  • Nice way to sum up the pre- and post- product design decisions. I found it very timely since I happen to be wrestling with this type of problem except in a HW application. I think the principles all still apply. The main difference is turn around time and cost.

    Fortunately, we have a proven product. So going back to your point "99% of the time it’s not worth it to do things the right way". Now it is a case of refining on that and doing it the right way.

    Thanks for the refresher.
  • Another product design debt example from Amazon: some orders (mp3s, video on demand, kindle purchases) don't show up on the "Your Orders" page. If you know to your supposed to look for a "digital orders" link, then you'll find them.

    I think part of the answer is to have a strong vision about what's core to your product and make sure that just works. The core of the product is the features that support the core of what your user's are trying to do. Iterative development by itself tends to produce swiss army knives -- lots of features, everyone uses a different set, but it's not the ideal tool for any particular job.
  • Amazon has lots of local optimizations that don't make sense from an uber scale :-) My girlfriend actually worked in their UX department and all sorts of stuff drove her mad. But hey, it still works as a business, and Amazon does so many other things right.

    I think the core value proposition is so strong that this other stuff doesn't affect it as much.
  • Yeah, you see this everywhere. Simplify, simplify, simplify.
  • i would argue that this debt is worth it because you are "levereged" in that you have a product that actually works -- you have underlying costs to manage that debt but at least you have a meaningful product
  • Yes, it works in the short-term, and that is exactly the danger. The question is, how long does it work before it starts to degrade the experience enough to go the other direction? Leverage is great until you go bankrupt. So there are limits, and it's up to every product designer to figure out what they are.
  • Fantastic blog post. The scenarios you described sound very familiar.

    It's a great feeling when code and product design cleanup happens. It's an even better experience when reorganization of the products and code are ongoing.
  • Our tool + the corporate blog became a Las Vegas visual experience. We designed the product, added more links + more tabs while the whole thing stopped scaling.

    Andrew, slowly but surely things became too busy everywhere, so we are in the process of doing a major overhaul of all sites.

    http://My.ComMetrics.com (this one is coming up)
    http://ComMetrics.com - hopefully new one is being released next week.

    We designed a ton of new features and stuck them all up on the blog as well as the web-based tool for benchmarking blogs. The result was that things got overloaded, looked too complex and possibly scared people off.

    So we prepared our ideal design.... but when we did an A/B test we discovered that what we loved was not what our customers went for.

    They wanted, a slim and simple design, a clean visual experience.

    There went my Las Vegas light show. But A/B tests help, especially if one follows them up with personal interviews asking such things as:

    - why do you feel this way about your preferred design,
    - why do you dislike it and so forth.

    Thanks for this post.

    Regards
    Urs
    @ComMetrics
  • nice post andrew - enjoyed the read
  • Wanderson Santos
    Good article.

    By the way, to mitigate this problem, there's already a discipline called "Information Architecture".

    Please, take a look at some considerations about your article:

    - "Two Level" Technical Debt has been contested by many people, like Uncle Bob. See http://bit.ly/12TLp7. For me too, there's one type of technical debt. It´s strategic. Non strategic is merely a mess. =)

    - I think "Product Design Debt" as a concept is right but as a term is confuse. You could have named it "User Experience Debt". Product Design is a whole concept, and User Experience is only one important part of it.

    Best regards!
  • Yes, I think IA and IxD are the toolset needed to address this creeping kind of debt. The question is though, when you're in the middle of a startup going 10,000 feet a second, trying to rapidly iterate and push your product out, what's the right way to build this into your process? Especially when startups are generally started by technically-inclined entrepreneurs that know all the benefits of agile, but all the costs of taking a planning/research-oriented approach?

    To me, it starts with the conversation and the business case that this is an important issue to address. IxD and IA are skillsets to address it, but you have to make entrepreneurs CARE about this issue first.
  • the "Broken Window" theory!

    what a coincidence. i was just reading through AQ's blog where he points to a link that talks about the same trend. they even have a name for it , after having done some real-world experiments + it's context in software.

    http://www.abdulqabiz.com/blog/archives/2009/11...
    http://www.davecheong.com/2006/06/30/broken-win...

    ~B
  • Thanks for the post, Andrew. I feel a little embarrassed I've never come across either of these terms before reading this, but there's also a good side to this. Sometimes you get to the point where you feel like a lot of content you read is re-tread. It's great to be read something that reminds you there's so much more to learn. I look forward to reading your posts.
  • I made up "product design debt." Maybe there's already a word for it on the design side. The "technical debt term" is very popular amongst engineers.
  • Circulated around mint.com :) Nice article.
  • Thank you sir! I think Mint is an interesting example of this, where the company took a very top-down approach which helps with the overall product consistency, but as you guys have added features you'll need to refactor your design.
  • Craig
    Great article Andrew! Product Design Debt also applies to the physical world, sometimes at a higher cost, because "refactoring" means literally physically re-tooling the product with very long development cycles. Companies are deathly afraid to throw away marginal features at the expense of offending a fewcustomers. As is oft noted, Apple tends to get this right.
  • jamesshamenski
    Leveraging A/B tests across huge audiences (a la Amazon) is a fun luxury at the expense of opportunity costs along the way. Before one invests in product & technical debt, I believe it's important to fall back upon Steve Blank's advice. Listen to your customers. If they ask for 101 new features, then run in the other direction and find someone with a troff of cash and build what they need.
  • I think Steve Blank's advice has a lot of similar with the small-group, qualitative "lead user research" approach of a firm like IDEO. The thing I've struggled with in reading his "4 Steps" book is how to apply it to consumer products and services rather than enterprise. He and I have had some interesting email threads on exactly that issue.
  • I fully agree that it's important to listen to your customers -- especially when it comes to paying down debt of any kind. Technology rises and falls on real-world, end-user customer feedback.

    But, it's important to listen to customers' PROBLEMS, not their SOLUTIONS. This is the difficult line to walk in any discipline, and especially so in tech (both UX and under the hood).

    In my experience, customers' solutions to problems are nearly always wrong -- because they don't have the technical experience to map it out well from the beginning. Besides, that's not their job, that's what they pay nerds (term lovingly applied) for. It's us nerds (programmers, UX pros, or other) who need to listen relentlessly to the PROBLEMS, and invent elegant SOLUTIONS for our customers.

    When we get this role right, it's magic. When we get it wrong, it's a disaster. Yes?
blog comments powered by Disqus
Recent posts

Want more? Featured essays and book recommendations