This post comes from our friends at Radii Production. The Radii team specializes in a wide range of services, including web design and development, strategy and marketing, managed services, and web hosting. A big thanks to Radii Production for sponsoring WordCamp Toronto 2013!
WordPress excels for its ease in launching. But because it’s so quick and simple to get a site live, it’s tempting to forego best practices that ultimately result in a better website—tempting, but completely and irrefutably a bad idea. Instead, the method we’ve found to be the most successful takes an additional two steps before launch, steps which help to create a better experience for clients and for the end audience.
Using multiple environments
We like to split the development process into three environments: Development, Staging, and Production. Development functions as the internal work environment, Staging as the client-review space, and Production as the final and live website environment. These environments should be as similar as possible, each using the same WordPress versions and subsequent equipment.
The Development Environment
Development, or “Dev” as we call it, is a completely local environment—inaccessible by clients and the public—and it’s the ideal place to take care of as many bugs as possible. Having a separate environment exclusively for development work allows you to develop the site freely, without concern that any tests or glitches will be seen by unwitting Googlers.
This gives you the ideal space to tackle any and all bugs that come your way, before they get promoted up to Staging, or—at worst—Production. With the hard de-bugging taking place here, you can expect to have the most bugs on Dev, less on Staging, and even less on Production. This launching method will help minimize the number of bugs that can make it live.
The Staging Environment
Staging is the place for all reviews, both internal and by the client. All content is promoted from Dev after its most rigorous Quality Assurance (QA) reviews and should be as close to the finished website as possible. With this extra phase of review, we highly recommend everyone to have Staging, especially for those developers with “launch anxiety.”
Staging, then, allows you to present the website to the client so that they can experience it before it goes live. This minimizes any surprises, as the realized product isn’t always as it was previously visualized by the client, and allows you to focus more on the experience and preferences of the client in real terms. Because it’s accessible by the client—but not the public—Staging creates a common ground between your team and your client in which both of you can experience the site in the same way. Here, the client can give you feedback before the site goes public, allowing you to make any changes before the site is used by the client’s audience.
Staging also gives you the opportunity to train the client in advance of the launch with any applications or administrative tasks they intend to take on, giving them the chance to familiarize themselves with WordPress and how the site will work.
Version Control
By the time you promote to Production, live, your site should create the best experience with the fewest bugs possible. As you promote content through the environments, from Dev to Staging and lastly to Production, you’ll want to create a standard, organized fashion for doing so—and make sure everyone on your team is familiar with the protocol. As you progress through the environments, maintain a checklist of any unresolved issues for each patch so that each review point, prior to promotion, can be as thorough as possible.
We’ve found this process of using multiple environments to actually save time—and certainly headache—so we urge you to consider implementing a similar launch method. In the meantime, happy launching!
Check out the Radii Production blog for more great posts & insights!
What tools/plugins do you use to make this process smooth? I really want to do this, but the last time I tried (not so recent now) the process was very clumsy, it felt like one of the biggest remaining oversights in the WordPress universe.
Hey Ben,
File management you can use source and version control software like Subversion/GIT or a simple zip/RAR to create separate launch packages when promoting files throughout the environments.
Database management is a little different due to the serialization of data, physical file paths, and the GUID in the post table being the full URI. Internally we use the WP Migrate DB plugin (http://wordpress.org/plugins/wp-migrate-db/) to manage the database updates through the promotion process.
If things go wrong, by keeping a history of your launch packages you can troubleshoot quicker… And better yet, retrace and learn from any launch mishaps!
Jim
Radii Production