Defining Your Customers

This is not a post about customer validation as defined in The Lean Startup book. Rather it is a post about who your actual customers are when you are creating a new product, especially early on in the development process. A product can be something that you are creating for your employer, for a client you are freelancing for, or even something your are making for your own personal use.

A customer is defined as “a person who purchases goods or services from another; buyer.” However, in the age of free services such as Google and Facebook, I would like to redefine a customer as “a person who makes use of goods or services from another” for the purposes of this post. This new definition of a customer would also include the company owner, product owners and other stakeholders of the project that you are developing.

In today’s environment we can develop software as little bits of functionality and deliver them almost immediately to our customers, both internal and external. No longer should we be developing in a vacuum, delaying delivery on a piece of functionality until it’s “complete.” Continuous Integration and Continuous Deployment offer the customers, of a software product, early access to the functionality that is being developed.

With this early access, the customers of a product can help to shape the features and functionality very early on and ensure that the correct product is delivered to the paying customers when it is finally released to the world. From a developers perspective, this might be frustrating because of the constant rework and changing requirements. However, there is an upside for the developers of the product as well. Once the product is finally delivered to the paying customers, there is a greater chance of it being used and increasing the revenue generated by the product. This can be infinitely more rewarding, to create software that is used as opposed to creating software that no one wants to use. Also, once the product is released to the paying customers and they are using it, there will not be a big push to quickly change the code to meet the needs of the customers.

If you are developing a software product, you should be releasing it to your customers as soon as there is anything visible that they can use. Enjoy the feedback that you get and take solace in the fact that you will developing a quality product that has a greater chance of succeeding.

« Using SQLite to Test Active Record Models RSpec Shared Examples and Ruby Metaprogramming »