Website Development: Why Shorter Development Iterations Will Save You Time and Money
Clients often come to us with incredibly innovative ideas that require advanced coding, custom user interfaces, UI problem solving, and extensive testing to fine tune and prepare for public launch. These projects go through several stages of planning, designing, and blueprinting before actual coding even begins, and often the customer has a long list of 'must-have' features they want to include in the site.
However, several issues arise when defining the scope of a project, particularly when preparing an RFP (Request for Proposals) and comparing the subsequent bids:
- 1.Clients often create "Features Lists" that include very general descriptions of the feature they want included in their app. For example, "I want Facebook integration." This could mean anything from embedding a script that shows a user's facebook feed to allowing users to "Like" a page or even intend to mean users can use Facebook to login to the site. This leaves a wide range of interpretation in terms of what these features mean, how they will work within the site, and what resources are required to implement them.
- 2.Clients typically define a scope of work that goes far beyond the core functionality of their site, which extends the overall development period and requires planning for features that will likely change while the core functionality is developed. This also means that attention is diffused around many peripheral features rather than the core functionality of the project.
Both of these issues can lead to "Scope Creep" - the effect of a project's scope expanding without consideration for additional time and resources (costs), and in the worst of circumstances can cause severe delays, compatibility issues between conflicting technologies, and fallout between clients and developers.
When a prospective client approaches MediaLabPro with a new concept for a website or mobile app they want to develop, ideas for specific functionality generally fall into two categories:
- 1.Core Features: features and functionality that define the unique user experience provided by the app.
- 2.Add-ons: features that expand the app, but which are often features the client has identified within other websites and phone apps that they want to include in their app.
Core Functionality consists of the features and elements of the app that define the unique value proposition for the user - specifically, what the app does at its most basic capacity.
For example, you could sum up YouTube as a place where users can upload videos and other users can browse through videos and watch these videos. Of course, YouTube has a TON of other features - video editor software, share and embed features, comments, subscriptions, custom channels, advertising, and so on, but the core utility of the site is the uploading, browsing, and viewing of videos.
So then Add-ons are features and elements of an app that expand the core functionality to do more than its primary purpose, such as those mentioned above.
One drawback to outsourcing software development is that there are periods of time when a customer cannot tangibly SEE the daily production of their website - as developers must write enough of the core framework for the code to be stable before anything with even limited functionality can be shown to a customer. Most clients are not tech savvy enough to monitor a GIT account or even FTP into a server to see new files uploaded, so there is an inherent 'silent period' in which the plans for the project have been defined, and the developer has anything online for the customer to see.
In a perfect world, the developer goes into his hole and four weeks later emerges with a perfectly built website and it is exactly what the customer wanted. Of course, in reality, the code usually has to be debugged and tweaked a little... and low and behold, after having designed their site over a month ago, the customer now has some different ideas about how they want their registration process to work (or some other feature). In the worst case scenarios, the code that is written doesn't meet the client's expectations at all (though proper blueprinting should eliminate this possibility).
When these outcomes are applied to multiple features within a website, you can start to get a sense why experienced developers budget time and expenses for revisions and fine-tuning.
By understanding these patterns, we can reason that limiting the scope of each development phase will result in more accurate bids, shorter 'silent periods' when feedback and adjustments are suspended, and less wasted or unnecessary work.
Another effect of overloading features into early builds of a software, is that most users will focus on 1-2 functions of the software that suit their needs best and many peripheral features will go largely unused or entirely ignored. It is far more cost-effective to simply ASK your user base what features they'd like to see added rather than go build 10 features to learn which 1-2 are actually being used.
By reducing the scope of each development phase within a project to its core features and functionality, developers and clients can reduce miscommunication, scope creep, and wasted work throughout the development cycle therefore increasing the speed in which a working product can be released to the market. By initially focusing on the core functionality of an app or website, website owners can then better allocate their budget in direct response to customer feedback.
We recommend that our clients first prepare a list of ALL the features they want to include in their site, and then work with them to break these features down into a multi-phased development roadmap, starting with creating comprehensive blueprints detailing the core functionality of their site or app.
Once we blueprint, develop, and debug the core functionality, then we recommend the client do initial BETA testing with their app and get feedback from their users before deciding which features to invest in for next phase of development.
This gives our clients time to evaluate their core platform and make more informed decisions on how to invest their development budget and ensures that our clients only pay for what they really want while allowing us to deliver solutions that meet and exceed our customers' expectations.