Max Revenue

Let’s say you are a CEO of a rapidly growing startup (or a VC deciding whether to invest in a rapidly growing startup).  All the numbers look up and to the right. How do you know how big this company will get?

When looking at subscription-based companies (or any company that is based on Lifetime Value vs a one-time transaction) a few simple equations can help you predict your maximum engagement levels, maximum revenue or (in a future post) maximum EBITDA or profit.

In this post I’ll describe the equations first (sorry – have to go into a little math) and then discuss the repercussions.

The simplest equation is figuring out your peak or maximum engagement.  

Equation #1 – Maximum Sustainable Engagement =  1/CHURN x NEW GROWTH

To figure out the maximum sustainable engagement, take the reciprocal of your churn (i.e. 1/CHURN) and multiply it by your average new growth.  

For example: If you lose 25% of your customer base year over year and get 1000 new customers a year, your max customer size will be 1000 times 1/.25 or 4000.  At 4000 customers you will be losing 1000 (or 25%) each year due to churn which is exactly the same amount of new members you get.  

You can use a similar equation to determine your maximum revenue.

Equation #2 – Maximum Revenue = 1/(ARPU CHURN) x GROWTH x (INITIAL ARPU)

To determine your maximum revenue, instead of churn, use ARPU churn (Avg revenue per user) churn or the fraction of money you make per cohort in year 1 vs year 2.  For example, if you make $1000 from 100 customers in their first year and $800 from those same 100 customers in year 2 you have an ARPU churn of 20%.  ARPU churn accounts for not only churn in terms of inactive members but also churns in terms of less revenue per customer due to less engagement or declining purchases over time.  So if you are growing at 1000 new customers a year with a $10 ARPU (Average revenue per user)  in year one and  a 20% ARPU churn, without any other changes your company’s maximum possible annual revenue would be $50,000 or (1/.20 * 10 * 1000).

In both of these equations, the reciprocal of your churn (i.e. 1/churn) is your multiplier effect.  If you have a churn of 50% you maximum size is 2X your annual new membership. If your annual churn is 10%, your maximum size will be 10X your annual new membership.

So why do these equations matter?  First, by understanding your max sustainable revenue you can start to predict how big of a company you are actually building.  Second, if you play around with the model you will start seeing some key take-aways.  Specifically:

  1. Churn – not growth – is the key metric to building a long-lasting great business.  Increasing your growth or your revenue will linearly increase your market-size potential, but reducing your churn can grow it exponentially.  If 50% of your existing customers drop off each year, you have to make up for 50% of those customers each year before you can start growing.  On the flip side, if your customers stay 99% active a year later retention rate, you only need to make up for 1% of your existing base before you can grow your audience.   You can cover up the churn problem in the short term by growing quickly but eventually it will come back to haunt you.  (Note: this is one of the reasons I am so bullish on building fantastic long-term engagement.  Long-term engagement of existing customers is the key to long term profits – even more than new membership growth)
  2. Churn is the combination of both people who stop using the product AND a decrease in revenue.  Companies often think of churn as the % of customers they lose completely each year.  But real churn is the amount of % of revenue you lose each year from each customer.  This is particularly true for ecommerce-based and entertainment-based companies where customers may still be active but just buy less in year two than they did in year one.
  3. All else being equal, all companies that have churn in a steady state have a maximum size.  If you are losing customers (or revenue per customer) each subsequent year, you will have to make up for it.  Eventually the existing customer base will get so large that the company can only replace its churning revenue and basically be running to stand still

I find it interesting that a large number of investors, press and potential employees considering companies overlook these numbers and just look at the hockey-stick rate of growth.   In my mind they are missing a key component that may eventually come back to haunt them.

In future posts, I will delve into more of the details on how you can more accurately estimate churn, and growth rates and eventually start predicting the max sustainable EBITDA.


  • The Max Revenue model is a simplified equation.  In particular, it assumes long term industry growth is similar to the discount on future revenue.

The Limits To Viral Marketing

wildernessculture-rei1440project-welltravelled-awesomeearthFor the last few years virality has been in vogue.  Talk to almost any consumer or small-business-based startup and they’ll tell you that their marketing plan is to figure out how to grow by word of mouth, become viral (so that each person who joins brings in at least one more person) and then sit back and watch their customer-base exponentially grow.

Virality is a great cause (and often difficult to achieve) but it is almost always fleeting.  You can be viral to start off your membership base but you will almost never remain viral for long.

Here’s why: When you first start becoming viral, your users can reach out to a pool of 100% of potential new users.   As more people sign up via viral channels, the number of potential new users decreases since more people become existing members.  As a result, whereas someone might have originally been able to introduce 10 new people to your service, they might only now be able to introduce 9, 8 or 7 (since the rest already know about it and have signed up).   

A company that starts off with a K-coefficient of 1.1 (i.e. 1.1 new people sign up for every initial signup) will stop being viral once less than 10% of its target audience becomes members. Since the available pool of new members decreases by 10%, you will end up with a K-coefficient of less than 1 and your growth will soon start to decelerate.  A company with a K-coefficient of 1.05 will stop being viral after only 5% of its target audience becomes members.

In fact the only companies that continue to grow by word of mouth in the long run are those that both have absurdly high virality coefficients – think messaging companies like WhatsApp and Facebook –  and are in huge markets (think global population).

Reaching viral growth is a noble goal and definitely can help kickstart your company.  But keep in mind that it will only get you the first set of customers of your total audience.  

Observations and 5 Predictions for the Apple Watch


I’ve now owned an Apple Watch for around 4 months. I bought it because a) I wanted to live in the future (and I think we will all be wearing some type of wearable in the future) and b) because I am testing out a few new ideas on it. I read many articles, talked to about a dozen people who own one and heard the full spectrum of opinions.

When asked what I think about the watch, I describe it with one word: potential.  Today’s version 1 of the watch (or v1.5 now that OS2 is out)  is not yet a must-have product:  it can be horribly slow, the battery dies quickly and there is no real killer app, but I get enough small “wow” moments that I think a future version will be amazing.

Here are 5 predictions for how future versions of the watch will realize its potential.

  • The Watch (and smart wearables) will eventually transform payments. I have had Apple Pay on my iPhone for at least a year and never was impressed with it.  Apple Pay on the watch, on the other hand, is a wow experience.  I push a button on my watch and my payment in the store is complete. For the first time we have an experience that is faster and easier than pulling a credit card out of your wallet.  It will take time to build out the network effects but my guess is that using smart wearables like the Watch to pay will start taking off now that credit card payment systems are switching to chip readers which feel even slower than swiping.
  • The watch will be appreciated more by women.  One great feature of the watch is that it stops you from taking out your phone all the time.  If you get a call or text, instead of fumbling for your phone, you can just quickly peek at your watch.  This is a nice to have for men since their phone is in their pocket but is much more useful for women who usually keep their phone tucked away in a purse where the message gets lost.  I expect women will continue to be more excited about the watch as less bulky, more fashionable and smaller versions of it come to market. (You can see this starting to emerge with yesterday’s launch of the Hermes Apple Watch)
  • The watch (and its descendants) will eventually end the popularity of Fitbit and activity tracking devices.  The first version of the Apple Watch already has an activity monitor on par with Fitbit.  But on top of that it also comes with a lot more functionality (you can use it as a phone, send/receive text messages etc…).  Given that people will only want one (if any) device on their wrist, they’ll end up going for the one with the most functionality.  iPod/music device sales plummeted once the iphone came out and without a drastic change the same thing will happen to the activity monitors as smartwatches gain popularity.
  • The Watch (and its descendants) will usher in a number of new and useful apps that were previously not possible.  I have not yet seen a must-have 3rd party app on the watch but that might change now that WatchOS2 allows much more functionality.  Apps I could imagine would include:
    • Haptic feedback apps (or apps based on vibrations ) as their main feature. For example, musicians will soon have a vibrating metronome on their wrist taping them at a regular interval so that they can keep a consistent rhythm.  You could also imagine a “SpeakerTap” watch app where a public speaker (like a Presidential candidate during a debate or a salesperson during a big presentation)  could be discreetly notified if they are going off message.  
    • Gesture-based apps:  You could imagine a minority-report type app where waving your hand will cause changes on your screen or an app that turns a chopstick into a Harry Potter wand if you hold it in your watch hand.  Nintendo Wii and a bunch of other controllers already support this type of functionality but you still have to find and hold a controller. Anyone with a smartwatch now has an accelerometer, computer and gyroscope always on their wrist which makes the functionality much more convenient. 
  • Future versions of the watch will turn into 24/7 health-tracking devices.  Rumor has it that Apple really had to tone down what they put into the first watch to have it launch early 2015.  The next version of the watch will likely have GPS (which is already in other watches), and many more health sensors such as oxygen-reading and blood pressure sensors.  Given Apple’s recent forays into health, my guess is that they want to eventually become a complete 24/7 health-tracking device that will monitor your health (and the health of your loved ones) 24/7 and notify you of any changes before things become critical.

In short, I still think V1 of the Apple Watch is a niche novelty, but from what I have seen and experienced I am bullish on its future potential.

Creating vs. Disrupting

The word “disrupt” is everywhere these days. In Silicon Valley today you can’t spend more than 5 minutes in a coffee shop without hearing someone describe how their company is going to “disrupt industry <fill in the blank>.”  Entrepreneurs and business school students are repeatedly taught case studies of companies who ended up “disrupting” markets.  It’s even the name of TechCrunch’s popular startup conference.

Disrupting a market to improve it is definitely a difficult and noble cause.  But Silicon Valley’s obsession with focusing on disruption is leading people in the wrong direction.  You don’t build the biggest companies purely by focusing on disrupting an existing market.  You have to come at it from a different angle.

Here’s why:  Thinking purely in terms of “disruption” psychologically limits your direction and potential. If you are just thinking about disrupting an existing industry, you will tend to narrow your market size to just the current market’s customers and their needs.  And product-wise you are led to think of big improvements to current products (i.e. “How can I make a faster horse & carriage for people who currently use it” or “how can I build a better flashlight”?) vs thinking of something completely different.   For example, ten years ago, if you were trying to disrupt the personal flashlight industry would you have thought of developing an iPhone?

Most of the most successful Internet companies today did not find wild success by just taking over old industries — they found it instead by first focusing on creating a new market where nothing previously existed.  They targeted the customers who were not currently served and found a better way of serving them.  And in the act of creating that new market they ended up disrupting many existing markets along the way.

Much has been said about how Uber, Lyft and other ride-sharing services – today’s poster children for “disruption” –  have “disrupted”  the taxi industry.  Yes, people are now definitely taking Uber and Lyft instead of taxis. But they are also using those services in ways in which they never would have used a taxi.  Commuters are taking Uber and Lyft instead of driving to work and paying hefty city parking fees.  People are now choosing Uber over walking, taking the bus, or just not going somewhere.  And the designated driver is getting replaced by the Uber driver.  Uber/Lyft have not just replaced the Taxi service, they have made personal transportation so convenient and inexpensive that they serve a market need an order of magnitude larger than just the one served by yellow cabs.

Other highly successful companies have similarly disrupted an existing industry by creating a new one. Apple’s iPhone is used for so much more than a phone, AirBNB is addressing a much larger market than just hotels, Pinterest is used for much more than pinning images, and Facebook was used for much more than the original college picture directory or “Facebook”.

My advice to executives, product managers and entrepreneurs:  When you are thinking about building out your new enterprise, don’t limit yourself to “disrupting” an existing market and the people who are already served.  Instead, focus on creating a new industry.   Look at who is not being served and go after them instead.  You far more likely to come up with a much larger idea and business .


  • Disrupting an existing industry is too narrow of an approach.  Think about creating a new industry serving people who could not originally be served.  You’ll end up with a bigger total market, a more creative solution and a willing audience eager for a new indispensable product.

Do You Believe in Magic?



I have been helping a few startups try to reach product-market-fit and have encountered a common theme: everyone is too tactical.  Discussions quickly digress into incremental benefits and features.  Attend any company’s product meeting and you’ll often hear debates about adding Feature X vs Feature Y based on criteria like development time and which one the customer would prefer.

Want to build a truly great customer experience? Stop talking about features – or even benefits – and start talking about creating an overall “magical experience.”

Think of it from your customer’s perspective.  Ask customers to describe their favorite products and they will almost never list out features.  Instead they describe an experience that is so amazing and so over-delivers on expectations that they can’t help but feel like something magical just happened.

Some examples:

Uber:  Need a ride somewhere? You used to have to wait for a cab and hassle with cash payments.  Now just push a button.  A personal driver *magically* appears and takes you wherever you want to go.  When you arrive you just get out.  The rest is all taken care of.

Sprig/Munchery:   Need dinner? Don’t think about cooking or calling for delivery. Choose a picture of a beautiful meal prepared by a professional chef.  Push a button and it *magically* appears at your house in 30 minutes.

Amazon Prime:  Need to buy something?  Don’t deal with the hassle of driving to a store and parking.  Tell this website what type of item you are looking for.  Then push a button and in 48 hours it *magically* appears on your doorstep.

At their core, almost all of the most used Internet services today are defined not by their features but by an experience so impossibly simple it just seems magical.

So what makes an experience magical?  Three key elements:

  1. It’s absurdly simple. Something as simple as “Push a button” or  “type in a word” or “wave a magic wand”.   Any work required by the user and the magic goes away.
  2. It’s doing a task that is normally hard. The harder the task feels to begin with, the more magical it will feel to make it simple.
  3. It’s helping solve an important need.  If the task you solve is not important you’ll get a nice “wow” but it just won’t have the same emotional appeal as fixing something that matters.

Before you create incremental features, take the time to flesh out the ideal “magical experience” for your customer.  What very difficult, important task are you going to make impossibly easy?  Ask your customer “If you could push a button or wave a wand, what would you like to have happen?” It’s a much easier way to figure out their most pressing problems and their ideal solution.   Then back into what exact product changes – feature additions, changes AND removals –  you need to make that happen.


  • When building your roadmap, rather than focusing on features, focus on creating an experience your customer would describe as “magical” – then back out the minimum amount of features or changes to make it happen and remove everything else.


Win, Play and Lose

No matter what product you are building, you can’t be the best at everything.  Spread your resources across all areas equally and you will be average at them all.

So how do you figure out where to focus?

One technique we used at Shop It To Me was called “Win, Play and Lose”.  We divided up all the product attributes we could think of for a product into 3 buckets.

“Win Bucket”: The “Win Bucket” contained the few attributes we thought defined our brand or were most critical to solving a crucial problem (such as accurately showing prices or providing a truly personalized experience).  These were core to our offering and were the key way we separated ourselves from the pack.  They were also what we felt the customer needed from us most.

“Play Bucket”: Many of the attributes we would categorize into the “play bucket”.    These attributes are table stakes — we need to have them to be in the game, but we didn’t need to excel with them.  An example here is web page aesthetics.  Aesthetics are definitely important for an eCommerce fashion company.  When buying fashion, people are not just purchasing clothing: they are buying an image of who they want to be.  But we believed winning on aesthetics alone was not going to win the space.  Instead, it was more of a threshold.  If the store had an aesthetic above a certain level, people would feel comfortable to buy.  If not, they wouldn’t.  The most beautiful site might increase sales on the margin, but after a certain amount we believed there were other attributes more likely to move the needle.  So we set a goal for our aesthetics to be competitive but not to outright win in the space.

“Lose Bucket”:  For at least one third of the attributes we would concede and “lose”, consciously deciding to build a version that was less than average in the market.  These were  not easy decisions.  Many of these attributes we chose to “lose” at are the strengths of our competitors and touted on feature lists.  But excelling at these features would not help us as they were not the main reason people were using our service.    By not focusing on these areas, we instead could double-down on the few attributes where we really needed to “win.”   We specifically used the word “Lose”.  By consciously deciding to “Lose” in an area, we made it clear to the team that it was ok to have a sub-par experience in areas that were not critical to our company’s success.

By dividing the attributes of your product into Win, Play and Lose, you can focus your efforts on what matters — the few most important features or products that help solve your most critical problems and lead to success.



  • No startup can build a product from the beginning that is great at everything. The best new products were great at some things and not so good at others.
  • Rather than trying to be great at everything, consciously choose the few areas where you wish to be great (you want to “win”), the areas where you just need to be competitive (where you want to “play”) and the areas where you are willing to be substandard (where you explicitly decide to “lose”).
  • By dividing your product attributes into these three buckets, you can focus your resources on just the most critical issues to your product’s success.

Shop It To Me In Forbes and Hacker News

Two fun news pieces for Shop It To Me today!

1) Forbes just posted a great Q&A about myself and Shop It To Me as part of their designer spotlight series.  Check it out!

2) We just announced in our blog that we recently removed passwords completely from our Shop It To Me iOS app .   We’re really proud of this accomplishment as our app members no longer need to create and remember a unique password when they sign up or log in and we hope other app developers will follow suit.    Currently it’s gaining attention as the post is a top-10 listing on Hacker News.

Let us know what you think and Happy Thursday!



It’s Time To Get Emotional

At Shop It To Me we are customer-driven so we think about product a lot. We’ve noticed that too many Internet companies today think about their product almost exclusively in terms of a functional experience. What need are we serving? What solution do we provide?  What features should we add?  Recent books and blogs encourage that by having you ask questions like “what problem are you trying to solve?”, “what is the pain point you are addressing”?

Those questions are certainly important to answer, but if you want to build a deep connection with your users or customers, you will also need to answer a much more important question: What emotion should customers be feeling when using your service?

Successful consumer products are often valued more for the emotion they generate than the tangible value they provide.  If you look at almost all successful marketing campaigns, you’ll see the deep emotion behind it.  CPG companies are particularly amazing at figuring this out.

Some examples:

  • Michelin Tires are not just tires to help your car move.  They embody safety, security, protection. Michelin ads are all about safety — they have either a huge puffy mascot (who looks like an airbag), or a baby riding inside the tires.  With these tires, you not only have wheels to move your car, you can feel rest-assured your kids and the things you care deeply about will be safe.
  • CocaCola is not just carbonated sugar. It’s bottled up happiness.  Their ads (Happiness Machine, Sleepwaking) all show happiness in unlikely circumstances, and their tagline “Open Happiness” is a pretty obvious connection on how they want you to feel when you open a bottle. .

Having a strong emotional connection is not just for physical consumer products.  It is important for any online service or product as it can have a major impact on who uses the product, when they use it, what you can charge and your overall product’s success.

Take two recent mobile-based taxi-alternatives:  Lyft & Uber.  Both are trying to solve the same problem:  I need to get somewhere now and there is no taxi available.  But both are building different relationships with their users by touching upon very different emotions.

Uber’s messaging and service is built to make you feel pampered, like a high-powered executive.  They primarily use black cars or nice hybrid SUVs to pick you up.  Their site is in classic silver and black with a luxury car featured.  Their tagline “everyone’s private driver” —  reinforces the emotion.   With Uber, you are like the guy in the back of the limo passing the bottle of Grey Poupon.


Lyft is taking almost the opposite end of the spectrum.  They are focusing on being your pal.  Instead of black cars, they solicit regular people to be their drivers.   All of their cars identify themselves with quirky pink mustaches.   Their domain name is a quirky as opposed to a more standard   They encourage you to sit in the front seat and fist-pump the driver when you enter and exit.   Lyft is less like having a private driver, and more like having a friend who today is your designated driver.

 Screen Shot 2013-06-25 at 9.03.53 AM

Based on the marketing alone, one would expect very different experiences with the two services. Want a professional, polite, quiet driver?  Use Uber.  Want a friendly conversation and a quirky fun, low-key experience?  Choose Lyft.

If your business is in a crowded marketplace, creating a strong emotion can be a huge differentiator.    Bottled water is pretty commoditized, and yet companies like VOSS can thrive by creating a product more than 2x the price of the rest of the market (and therefore generate many more profits) because they aren’t just delivering water, they are delivering on the feelings of luxury, stylishness and exclusivity.

At Shop It To Me, we are constantly looking at not just what we do (giving you updates on what you want) but what emotions we want you to feel (smart, in-the-know, excited, accomplished).  Because while the service may help fill a need, it is the emotions that users will remember.

So next time you are thinking about your value proposition or what need you are serving, don’t just stop at the services and features.  Take the time and think about the key emotions you want your users to feel when you successfully fulfill their needs and you’ll end up building a much longer-lasting relationship.


Building An Indispensable Product

At Shop It To Me, we believe a key way companies disrupt a market and have long term loyalty is by building not just a great product or a insanely fun product, but an indispensable product.

Look at some of the services today with the most avid users — Google Search,  Apple’s iPhone (when it first came out), Twitter, Etsy, eBay, Pinterest — all have one thing in common:  They all have built a product that for some audience is indispensable.

What is indispensable?

So, what exactly is an indispensable product?  I believe you can divide it into three different components:

1) An indispensable product solves an important or meaningful problem.  

Every indispensable product out there solves important problems for its users. VCs often refer to this as as the “aspirin” vs “vitamin” scenario (whenever you have a headache or pain, aspirin is a must-have;  vitamins are a nice-to-have).

There’s a reason Google Search is so popular —   It is indispensable in two ways.  Users of Google search trust it to give them answers to the most important questions.  For advertisers, Google SEM and SEO has traditionally been the best place to find customers with active intent to buy their service.    Selling your amazing new tax software for businesses? Get to be at the top of the search results for “business tax software” and you’ll have the huge number of highly targeted leads you need to crush your quarterly goals.

2) An indispensable product has no good substitutes.

To gain real traction, an indispensable product not only needs to solve an important need; it must lack good substitutes when it first comes out.  You can’t have your product be indispensable if users can easily find an alternative.

When the Apple iPhone first came out, there were no other products remotely like it.  It was terrible as an actual phone, but it was the only phone out there for consumers that would let you actually search and view real web pages (as opposed to just mobile versions), or see your emails in a visually appealing and simple way.

If you want to build an indispensable product, you need to make your product unique for the customers you are going after — you can’t just be a slightly better version of a popular product and expect people to switch.

3) An indispensable product is ideally something you need on a frequent basis.

The third point is not a true requirement of indispensability, but an important attribute if you want to build a habit and get frequent usage.   If people find your product indispensable but only need it once every 5 years (or once at all), you may have a great product, but you won’t be building a habit for when competitors enter the space.   On the other hand, if people need your product frequently, you’ve got the ability to train them to be accustomed to your service which will keep users coming back long after other competitors make similar products.  (Think of the millions of people still using MyYahoo! 10 years later)

A quick test for indispensability

So you think your product has all three of the criteria for an indispensable product; how do you know for sure it’s indispensable?  Here’s one easy test: take it away from your users and see how they react. If people start screaming that the service you provide is gone, there’s a pretty decent chance you have an indispensable product.

Think about the products that are indispensable to you.   Smartphones, webmail, Twitter  are all indispensable to certain people.  (Think of how people tense up when their phone goes missing for 15 minutes, or how a reporter would feel if they could not access the Twitter feed and had to wait until news appeared on a website).

We know our Shop It To Me emails can be indispensable from inadvertent tests.  Every once in a while our emails get delayed and when that happens, we often know about it not only from our data but from our support box —  users email us demanding (occasionally with profanity) why their salemail had not yet arrived .   And with our new product,  Shop It To Me Threads, we occasionally test the waters of indispensability by asking user-testers how they would feel if we removed certain features.    We’ve had a number of features that users say are “really great” that we removed from our system because they didn’t notice when it was gone.

So for all of you working on the next big thing:  As you build out your product, and start prioritizing features — figure out what parts are need to make your product more indispensable and focus your energies on that.  You’ll build a stronger product and have a much larger chance of turning your idea into a wild success.


Technical Debt — when to deal with it?

One of the key themes In the upcoming presidential election is what should we do with the US fiscal debt. Some argue we should stop everything to pay it down right now; others think we should put our resources into improving the economy and then pay it down later when we have more resources (i.e. more GDP).

Technology companies face the same dilemma on a micro-level every day in terms of what is commonly called “technical debt”.  When developers write code for a product, they are inevitably writing in assumptions as to which things they will be developing more thoroughly and which they won’t.  For example, a developer initially coding an iPad app to track weight loss would likely put in extra code to record and share your weights on an iPad and not nearly as much code to record morning heart rates or sleep patterns or to record weight on another device like an Android device or a website.

The challenge is that your initial assumptions when you code often end up being completely wrong.   What you thought was definitely on the roadmap last week, might fall off completely after talking to more users, hearing about a competitor, etc… Likewise, the thing you thought was a tiny feature two weeks ago when you started building it now is considered the core of a huge new platform.

The result is Technical Debt — you end up with oodles of code that are being used for purposes for which it was not initially intended.  The code is sub-optimized so you end up taking much longer to build things, usually with more lines of code and more bugs.  The longer you wait, the more the TD will cost you valuable time and resources.  But fixing it means stopping new features, and spending time rebuilding functionality that already works.  It just  feels like you are wasting time that could be spent adding new functionality.

Every development product I have ever been involved with has at least some levels of technical debt.  So what do you do?  When do you pay it down and when do you ignore it?

One engineering philosophy wants to err on fixing all bad code.  As soon as you see any poorly written code, stop what you are doing and go in and find a more elegant solution.

At the other end are the people who don’t want to fix the code until it actually breaks and then go in and only clean the part that is broken.

I am somewhere in the middle.  While it is great to have super-elegant code everywhere you look, I think it ends up being a waste of time as you’ll be over-optimizing.  Sometimes, once the code works you never need to change it, so spending hours refactoring it to make it elegant decreases overall efficiency.  At the same time, waiting for the code to break and only fixing the part that needs fixing ends up penny-wise pound foolish.  You are spending all your time and money repeatedly repairing an old clunker when it would have been cheaper and faster to just get a new car.

So here’s my philosophy.  When considering technical debt, I think about 3 things and make my decision based on them.

1)   How will cleaning up the bad code affect the next few sprints in your roadmap?   Fixing something now that won’t really help make your next few sprints faster is probably not worth your time.  On the other hand, if fixing technical debt will speed up development of functionality you need to build soon, you may be able to get it in for free.

2)   What is the frequency of profanities —   How often are you cursing the poor code quality?  If the curse index is high, it probably will help both productivity and morale to fix it.  On the flipside If you don’t hear people complaining about it a lot, it probably is not a huge pain point.

3) How firm is your deadline?  Everyone has deadlines, but if your next deadline is an absolute MUST-make  (i.e. you are showing it to your largest customer’s CEO on date XX), you may want to just delay the technical debt until missing your deadline is not quite as costly.

So how do you handle technical debt?