When building out custom websites, plugins or functionality for existing websites it doesn’t matter how well you plan things. There are always adjustments that need to be made along the way. Sometimes these needs can be adjusted quickly and easily. Other times it can take multiple versions over time to produce an end product that aligns the client’s vision with functionality.
Reasons for change in scope
There are a variety of factors that can cause these changes in project scope including:
- Unforeseen needs or functionality brought up during the development phase
- New ideas or requests from the client, designer or developer
- Budget limitations
- Miscommunication during planning and design phase
It is very important for developers and designers to be very transparent about the impacts of change in scope. Many times these changes are minor things like changing fonts, altering spacing or modifying the navigation. Other times things that may seem minor to the client, are actually large development projects that may require budgetary adjustments. When these larger scope requests arise it is important to advise the client of any additional costs up front. Also, make sure it is in writing (or email) so you have record of the modification. Avoiding the unforeseen costs until the project is complete is just asking for trouble.
An example of long term change in scope
When working on the Twin Cities Jazz project we encountered a variety of change in scope requests. Additionally, as we learned more about the client and end user needs, we were able to craft the perfect solution.
The Initial Project
The initial project was a website build that needed to show a schedule for their jazz festival. The solution for this was a custom options page with a variety of meta boxes to enter all schedule information. Over time, as the festival grew the options page became bloated to over 1,000 fields and became simply unmanageable.
Re-Vamping the Schedule Functionality
Our first major change to the site was to rebuild the scheduling functionality. This time we went the custom post type route. We created a custom post type for ‘Schedules’ and a custom post type for ‘Venues’. Each venue had a post and each day of the schedule had a post. Within each schedule post there was a custom repeater that allowed the client to input and indefinite number of items including venue, performer and time of each show on that day.
While this solution did work well, there was still no dynamic link between the venues post and the schedule posts. Thus, we didn’t have the ability to display the schedule by venue. Additionally, since we were building on top of the old functionality, code was beginning to bloat and get un-organized.
The New Website & Functionality Build
In 2016 we were tasked with re-building the entire site. This gave us the opportunity to take all that we had learned about the needs of the schedule and build the perfect solution from scratch. We stuck with the custom post type approach, but this time we integrated Advanced Custom Fields. On the schedule posts we used a repeater field that included a ‘Post Object’ field. The Post Object field allowed use to choose the venue from a list of posts in the venue post type. This dynamic link between each schedule item and a venue allowed use to not only show the entire schedule for each day, but also display each venue’s schedule on their single page.
Not only did we improve the end user experience on the front end of the site, but the code is now clean and organized on the back end and we have a solution that the client can easily manage from year to year without the need for additional development.
Growing with the needs of your client
This project is a good example of the need to grow and adapt to meet your client’s expectations. What started as a simple schedule turned in to a dynamic, easy to manage scheduling solution for a very popular jazz festival that the client can very easily manage on their own. It took time for us to fully understand the needs of the client and the best experience for the end user, but working with this client we were able to make suggestions and create the ideal solution for their needs.
At the end of the day it really is about providing a solution that is easy for clients to manage while giving the end user the best experience possible, all while trying to code things in a clean, expandable, and responsible way.