Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
When the engineering team can get into a rhythm of software development, healthy habits form. This process includes creating tests, writing software, running tests, refactoring the code, and releasing the latest version. In better teams, this pattern becomes the heartbeat of the organization.
When the releases happen frequently, each release doesn’t have to be a massive production. Instead of each release containing major milestones or massive feature sets, releases can be smaller and contain incremental improvements.
With each change being small, the impact of unexpected side effects can also be small. Each release improves the software incrementally. With each iteration, the software gets better, the developers learn more, and the business gains value.
Working in small iterations also reduces stress. Building a house is a lot easier if you focus on just a few bricks at a time. A pattern of successful releases increases confidence and morale. This is the kind of successful team that developers love to be on.