In any software company, two fundamental forces battle to drive progress: Product and Engineering.
Product is responsible for defining the vision, understanding customer needs, and pushing for new
features and changes to current ones. Engineering is responsible for executing on that vision in a way
that is performant, reliable, scalable, and maintainable. Right now, the majority of organizations are
way too heavily skewed toward Product—and it shows. The enshittification of most of the internet is
evidence of this. Despite insane increases in computing power and ever-increasing internet speeds,
websites now can feel worse to use than they did 10 – 15 years ago. It feels like I spend more time
looking at the skeleton of the sites I visit than the actual content. There is a clear trend of
prioritizing new features over performance and reliability. What do we do about it?
How Did We Get Here?
The current state of software can largely be attributed to a few core reasons:
The Belief That Features are the Sole Driver of Revenue
Many companies operate under the assumption that new features are the key to acquiring and retaining
customers. While this is partially true, it ignores the fact that a poorly functioning product—no
matter how feature-rich—will eventually drive users away.
Failure to Transition From Acquisition to Retention
In the early stages, companies focus on attracting new users and this is mainly accomplished through
releasing new features to expand your market size. However, as a product matures, retaining users
becomes just as critical and many users churn from your product because it is a pain in