When you get into the rhythm of pushing new features through the product development lifecycle, it can be addictive. Theoretically every new push brings more customer value, so why not keep going? Restated, when should you stop writing code and put your efforts elsewhere?

If you assume that you’ll never truly know (except in a vacuum), I think there are two main factors to consider: First, every feature you implement requires justification to build and effort to maintain. Second, if you are following lean principles it’s important to create valid experiments by measuring the viability of your current product, not one that is constantly shifting.

Let’s break that down.

Every New Feature Costs Something

Internalizing the lifetime cost of everything you build is critical to your [and your customers’] sanity. A friend of mine recently endeavored to simplify her life by trying the 100 thing challenge. Take a look at the three driving principles and you’ll see the parallels to product development:

Reduce by reducing the number of our possessions for an extended period of time, we prove to ourselves that consumerism does not define us

Refuse by refusing to go along with in the misleading lifestyle of consumerism, we form new priorities in line with personal virtue and what is best for the world around us

Rejigger by rejiggering our lives through simplicity, we nurture better relationships with family and community and nature

If you ignore the preachiness, this can serve as a template for your product. Don’t add new features just for the sake of it. The best apps do something specific, and do it very well. Refuse to add something that serves as a barrier between your customers and derived value just because it’s an emerging trend. Lastly, by focusing on the relationship your customer has with your product, you’ll shift focus from business-centric to customer-centric interaction goals.

Your Product Should Sell Itself (Eventually)

The purpose of shipping early and often is to err on the side of learning too much. If you’re launching a new product, chances are you’re only going after early adopters. These people LOVE using unfinished products, since the chance of finding something that exactly addresses their wants/needs is high. These initial customers probably try 10 new services a week. Instead of chasing their wish list, you should figure out their common thread and target more of their peers. Reach out to them and figure out which part of your value proposition they care about — this messaging should be clear and consistent throughout your marketing and product (i.e., product/market fit). If you can tune this acquisition engine, you should see clear improvement in your cohorts without additional feature work.

Keep Building Tools

The caveat emptor to the above advice is that you can never have too many tools at your disposal. While your product may be “good enough,” the instrumentation you use to measure your product are probably not. Devote some dev cycles to email tracking, behavioral metrics and personalized drip campaigns. Some might argue these are core product enhancements, even if they’re invisible (when done well). If they are helping you attract and engage new customers, I think it’s a moot point — just make sure that you’re not spending your time building the perfect product at the expense of one that’s good enough.