Thursday, January 31, 2013

Cloud application requirements and faster horses

Wanted to share my experiences gathering requirements for private cloud apps in an enterprise environment… no rocket science, just some thoughts.

What triggered this post is a quote from Henry Ford.  Ford was known to have at the forefront of the automotive industry and built first version of his vehicle without much customer input.  When asked about this strategy he responded: "If I had asked people what they wanted, they would have said faster horses".  This illustrates a challenge I encountered when defining cloud application requirements for enterprises:  how do you ensure that clients providing input for requirements do this in such a way that it stimulates innovation rather than bend innovation back into what is known.

Typically, you go through an iterative process with clients to find out about their needs.  You create a solution or part of it and validate progress with your clients.  This assumes that your clients know exactly what they want and for cloud environments that they understand the promise, benefits and capabilities of a cloud environment.

Today, most people take cloud, IaaS and PaaS for granted.  It's in every presentation I attend these days (yes, also in mine!).  In addition, everyone can go to Amazon and request a virtual machine without much difficulties.
However, to be able to provide requirements that define an end-to-end cloud platform in an enterprise  environment requires a very detailed and thorough understanding of cloud concepts.  In fact, your stakeholders rely on you to acquire that expertise and use it to create systems that are easy to use.  They want you to hide the complexity… just like their experience with Amazon and the likes.
As with most innovations and revolutionary steps in technology, your users only understand the possibilities once they've seen a glimpse of what is possible.

As such, gathering requirements for enterprise cloud environments requires some homework to be done before getting clients input.  In general, avoid asking open ended questions like: how do you think your applications will look like in 5 years.  This requires your stakeholders to have figured out an entire cloud application strategy and from there formulate requirements. This is not something all of your client have a readily available answer for.  Again, they rely on you to create such strategy.
Instead, provide specific proposals for components of the cloud platform and get feedback on those.  This gives your clients a reference for their feedback.  This allows them to fairly quickly relate to the use cases they have and decide whether the proposed solutions can work.
By extension, in some environments it might even be useful to create a proof of concept that you use to demonstrate business capabilities and highlight specific advancements.  Of course, this assumes that you have access to up-front budget to invest in such proof of concept.

Disclaimer:  the context here is private cloud solutions for large enterprises, so your mileage may vary.  In other environments other guidance might apply.