You are skipper of a boat leaving the port trying to navigate the bay to some fantastic destination, out past the horizon. You have a chart, a compass and you can see some buoys. You plot a course that should take three hours.
Three hours later you are a bit miffed when you have run aground on a desert island.
When you are cruising around on a boat, the wind, tides and currents affect where your boat ends up. You can’t just set a bearing and expect to end up precisely where you intended. Instead you need to recalculate where you are and refine your bearings. The more recalculations you do, the closer you stay on course.
Releasing software is similar but even the destination changes. It’s obvious when you’re in control of a boat, but when releasing software it’s easy to forget that getting regular user feedback is essential to staying on track.
Communication is surely an important piece among the many moving parts in the releasing software machine.