One of the major reasons to use Agile is to increase speed to market. In other words, you want to get a workable product to market faster and be able to iterate flexibly while still serving your customer base. First, you want an application that works. Next, you want to make sure that it can scale. Finally, you want to leverage your data in ways that can help you expand your market reach even further. In this article, I will show you how NoSQL is the perfect fit for achieving your agile product development goals.
Fewer Barriers to Getting Started
Part of the waterfall process of application development was coming up with the big binder of specifications. Once “Ye Olde Requirements Document” was developed (which usually included a data model schema), it was finally time to write code. We can argue the merits of waterfall, but if you are going to do agile, you do so knowing that you don’t really know what the data model is when you get started. Changing the model mid-stream has some real costs and in Agile development, it’s going to happen. With NoSQL you work in the aggregate rather than normalizing data. The point is to try to get something done and working, not making the data model perfect. NoSQL allows you to rip and run, you just use the data when you need to. The end goal, after all, is to provide a solution for your customer - not a data model.
“Move fast and break things. Unless you are breaking stuff, you are not moving fast enough.” – Mark Zuckerberg
If you are an organization creating a product, the whole point is to scale. You should assume that demand for your product will expand to new users and new markets. Too often, I see organizations make technology decisions based on price or because it is “what I know.” The thought process is, “I just want to see if it works, then I will convert it later.” The problem is, by that time, it is too late. Not making the scalable decision up front is like betting against yourself or assuming that the demand for your product will not be as high as it could be. Take Pokémon for example. According to Couchbase, Pokémon’s “legacy profile management system, built on top of a relational database, was capable of supporting existing users, but it could not scale to support the millions of new users expected after launching Pokémon GO.” NoSQL was the scalable solution because The Pokémon Company International could “manage the growth of its infrastructure – incrementally, on demand, and as needed” in order to service all of their new users.
Ability to Leverage Data in New Ways
While we are on the topic of anticipating and preparing for increased demand, let’s consider your existing data. Anywhere from 70% to 90% of data stored in the world is unstructured and you have lots of it. You know you have the data, why aren’t you using it? You could be using it to expand to new markets. While relational databases use a schema-based approach to modelling databases, NoSQL’s schema-less data model allows you to more readily leverage the volume, velocity, and variety of data that we capture today. When considering a technology choice, you should be looking for a product that will afford you the agility and flexibility needed in order to leverage unstructured data in a way that you have not yet used it.
The volume and variety of data that exists today makes it necessary for us to adapt the way we view, approach, and leverage it. It’s a messy business and we must set ourselves up for flexibility, not paint ourselves into a corner. We can’t take a rigid approach, defining a schema up-front because we will not be able to adapt to ever changing specifications. NoSQL and Agile go hand-in-hand as a logical approach to product development because the speed and flexibility they afford makes it possible to respond to and create increased customer demand.