45. Low Friction Change
A web-property is not a static thing, but a living system that’s always changing. This means the web technology stack must be continually updated to respond to customer demand and changes in the marketplace. These updates should embrace the idea of low friction flow. Making this concept a reality requires several types of expertise, as outlined below.
Change Management for Code
In the early days of the internet, webmasters needed to directly log in to web servers to apply changes to code and pages. This method provided no tracking and no revision history; no documentation of what had been done. Any mistakes made would quickly create friction in the system and adversely impact the customer journey. So, when change management systems such as Git and SVN appeared on the scene, a big shift happened.
A change management system creates a central location for documenting changes to code and web pages. They provide revision tracking, team collaboration tools, reversion capabilities, and more. There’s much more to them, but for our purposes, the important thing to note is that system friction can be greatly reduced where the inevitability of change is both acknowledged and supported. Such tools can greatly aid in a team's ability to maintain a system over time.
Change Management for Content
A web-property primarily consists of content, the information that supports and guides customers on their journey through the sales pipeline. This content must be changed and kept up to date as time goes by. The team that maintains the content - typically a group comprised of authors, editors, approvers, and publishers - must be kept in sync and supported in their work with minimal friction. A content management system’s native ability to facilitate and track ongoing content change can be very helpful in this regard.
When we talk about change management at the content level, we’re referring to the systems that allow a content team to create content, revise that content, collaborate on revisions, submit changes for appropriate approval, publish and revert as needed. A system that genuinely reduces friction will support daily activity but stay out of the way as it supports content which in turn supports a low friction customer experience.
Every complex web property will have ongoing bugs. Every complex web property will no doubt be maintained and supported by more than one person. A very important factor in supporting low friction change is the ability to separate the activity of identifying bugs from the fixing and resolving of those bugs. We often fall victim to the seductive draw of fixing bugs on the fly as we encounter them. They are right in front of us, we see what needs to be done to fix them, why not? And of course, our clients love to ask us to fix problems on the fly, “while you’re in there.” But this lack of team and system discipline about change very often ends up creating friction rather than reducing it.
Communication within a team about change is critical and may involve many details. When a system is implemented which supports tracking all of the changes and captures these details, the team finds that their world is instantly more sane, manageable, and transparent. When there is a reliable change management system in place, friction is reduced.
Often a client will beg us to "just fix it!" When we agree to “just fix it” without utilizing our bug tracking tools and standard process, we typically end up being sorry, as we find we’ve created complexity and added friction. When issue tracking and resolution are systematized the entire team ends up feeling more stable and the work more reliable, resulting in greatly reduced resistance.
Deployment methods, easy backups, and reversions
A good deal of the work related to changing websites isn’t visible from the outside. Various teams make their changes in a repo or in a CMS, revising and perfecting as they go. When the work is completed and finalized, the teams will deploy the changes to the production web app. However, there are a variety of deployment methods. The act of deployment creates an opportunity for friction reduction in the change management process, so the particular solution should be selected with an eye to optimizing value.
A service called Beanstalk (beanstalkapp.com) wraps several of these solutions into one, and so it’s a favorite of many developers. Beanstalk hosts Git and SVN repositories which provide teams with a frictionless code change environment. They also provide code deployment capabilities. Once changes are completed by a team in their repository, predefined system rules kick in and cause new code to be deployed up to staging and production servers. Additionally, this service provides ongoing notifications, email digests, and a detailed history of commits and files. This creates a low friction change management system that is orderly and reliable. Of course, Beanstalk is only one of many such solutions, but their business model serves as an excellent example of the use case.
No change management system can be considered complete without appropriate backup and reversion systems. Code repositories and deployment tools offer one layer of backup and reversion, but these do not necessarily account for database-level backup and reversion. Often in a web system, the code is separate from the data. The data resides in a database that is constantly in flux. A modern server and database infrastructure will include snapshot backups of the data, as well as easy to use reversion tools that allow teams to revert a site to a prior state if a mistake is made or the web property is compromised in some way.
Change management through good, reliable backup and restore systems can be a great help in the effort to remove friction. In the event that a database server dies, there is no greater form of friction than having to pull the site offline while the support team tries to figure out how to restore the lost data. Having the support of a quick backup and restore process in place eliminates this possibility altogether.