Postmortem
September 11, 2025
Do you know what makes a great product? Neither do I, but I do suspect it’s a combination of the following:
• A nice idea that satisfies the needs of the customers
• Easy to use
• Cheap / Free?
• Reliable
Most software products nowadays have become commodities. It’s easier to switch from one to another without losing much of anything.
If the points above are satisfied, you get to have a steady stream of income and customers will keep paying for it without needing to ask why.
However, if the customer attention is shifted to one of them in a negative way, it’s a potential start for problems.
Trouble starts when you start thinking:
Do I really need to pay X amount monthly for this service?
Do I really need it?
If your product is not easy to use or unreliable, it turns into user friction.
If your product is becoming more and more expensive, the customer will start to ask if it’s all worth it.
The objective for your product to have a long life and a steady income is for the user to keep paying for it without thinking why.
That is because your product is just a fungible good, one in 1000 for the customer.
Now, for the postmortem part.
Some years ago, the team that I worked with received the ownership of a product that no one in the company wanted anymore.
It was a nice idea, but not new, our competitor was ahead of us with their product, and also far more popular.
The product offered:
• Cheap monthly services
• No contract (which was unusual for this type of service)
• Automatic payments with the option to cancel anytime
So, we had a nice idea, convenience and good value, ticking 3/4 above mentioned points.
Reliability? Not so much.
It turns out no one wanted to deal with this product internally because it was unstable.
We used an ActiveMQ queue to send a message when the customer’s payment was due and proceed with capturing the payment.
The main issue was that the application that was handling would stop the payment processing after some time.
This left the customer with no services and no way of contacting support, basically disabling the account.
The technical team tried several of the following:
• Restarting the machine so that the message queue was resumed, until a solution was found.
• RAM increase so that the machine would halt less frequently.
• Upgrading the JAVA VM version on the OS.
• Basically throwing quick fixes at the problem because they did not have time to investigate more thoroughly
But by the time where developer resources were allocated to the project several things happened:
• Customers just gave up on the product. There was just too much hassle in owning it, even if it was cheap
• As more and more customers left, less and less priority was assigned to the project.
• These all created a negative feedback loop that made business terminate the product.
A good product isn’t just about having a nice idea or being free/cheap.
It’s also about consistency.
Once customers start to leave, it’s hard to win them back.
Build products that people don’t have to think about, but enjoy using.