The Gold Master: Why Modern Software is Never Finished
Jan 10, 2016
Gone are the days of the “Golden Master”. In fact, programmers new to the industry may not even recognize the term. Let's travel back in time, before cable modems and fast internet connections to when software was distributed on floppy disks or CD-ROMs. There was little or no opportunity to “update” software once you shipped it, and add-ons or Service Packs for Windows were big deals.
What is a "Golden Master"?
Once upon a time, back in the 80's and 90's, development teams aimed to “finish and deliver” a piece of software. In other words, developers would spend lenghty amounts of time creating software before transitioning a system over to manufacturing. Software was developed over a number of months, tested exhaustively and then delivered to manufacturing, where it would be mass produced. At this point, the software would be ready to serve as the “Golden Master”, and shipped to consumers. As opposed to today with automatic monthly updates, there was little or no opportunity to “update” software once you shipped it, and a Service Pack for Windows was a big deal.
Welcome to the Internet
The real change is the transition of physical software moving to online services. With the rise of the Internet and improved bandwidth, we learned how to interact with software as a service (SaaS). Over the decades, the world adapted to online banking, purchasing, and consuming media without downloading software at all. While we still have some examples of “shrink wrap” software, these packages are far from static. Software is now developed in such a way that updates are distributed digitally.
Release Management is also never done. Managing the timelines for web sites and SaaS systems is a continuous and dynamic process. An update to a web site or a large feature release is always going to be followed up by another one, and while some web sites exhibit seasonal activity that can be predicted. Organizations supporting the web, understand that these teams need a steady environments and testing systems. It has taken nearly a decade to catch up, but most modern organizations have adapted to Release Management, just in time to play catch-up for mobile applications.
The Continuous Mobile Platform
Not only is developing software for mobile applications never done, but this platform never stands still. Take either the Android or iPhone platform as an example. If you develop mobile applications you already know that you can’t just release software and let it sit for months on end, untouched. Industry leaders, Apple and Google, release game changing features on their respective platforms every 6-12 months, with additional updates in between. In mobile, moving fast is a competitive advantage.
Letting your mobile apps sit on the sidelines and grow stale over time will begin to show age or become incompatible with new device capabilities. From a Release Manager's perspective, a mobile release is iterative, but practically continuous. There’s a perpetual need for testing environments, and in the most advanced systems you may have multiple releases targeting multiple devices in a single day.
With Mobile, the concept of a static release loses meaning. Device-level applications change frequently and the server-side systems, that support them, are constantly evolving. While web sites may present new challenges, the life cycle of mobile applications reach an entirely different level of responsibility. Release Managers understand that “production” might refer to a billion connected users and that Environment Management will involve maintaining stability of testing.
What’s Next: Release Management for the Internet of Things
Today, most of us are experiencing the maturation of mobile application delivery models. What’s coming in the next decade or two promises to bring even more dramatic changes to Release Management. The Internet of Things (IoT) refers to the movement to connect everything together to bring the immediacy and agility of internet-based systems to the devices and infrastructure that support industry and everyday life.
IoT is happening fast. Industrial Engineers now support hyper-connected factories that can be reconfigured remotely while Civil Engineers can build infrastructures that digitally send information and react to dynamic weather conditions. As high-profile companies start to make use of autonomous drones to support delivery in e-commerce, this trend will become visible to the general public, creating a new pressure on companies to advance their own software services.
What Testing Environments will be necessary for software updates, deploying a nationwide network? What will be required to test critical systems supporting a power grid? Will we still be talking about the “Golden Master”?
Modern Software is Dynamic and the Releases Never End
Today, software is never done. Even legacy systems still require constant attention and continuous updates to adapt to change. Only the smallest, most trivial systems or software that is no longer running can truly be considered “finished”.
From a Release Management perspective, you’ll frequently encounter groups claiming that a piece of software is “finished”. While there’s a good chance that you’ve come to appreciate that your systems are not well-served by finite Gantt charts, using SLDC terminology from the 1990s, you need tools that accept the reality, that software rarely enters an “end-of-life” phase.
Plutora: A Modern Software Tool for Today’s Perpetual Release Cycles
If you are supporting modern software systems, you need tools that have been designed to facilitate a continuous approach to Release Management. You need a tool that understands that today’s release will likely endure minor changes monthly, or even weekly. You need to use a tool that is designed, not to support aging, but to adapt to a rapidly evolving software industry.
With Plutora you can use your last release to create awareness of the current release, in the form of performance data and playbook maintenance. You can upgrade old processes, viewed as static and unchanging, and make them as dynamic and responsive as the software systems you are delivering.
Your ability to continuously deliver quality software is your competitive advantage, and Plutora can help you manage the complexity that accompanies continuous delivery.