Test-Driven Development vs. Customer-Driven Development
The concept of Test-Driven Development is nothing new, nor is Behavior Driven Development and Acceptance Testing Development, but what about Customer-Driven Development? If you haven't heard of it, it is okay, it is not as popular, but it is as if not more powerful. As a software developer, it is effortless to forget you are building something for real people. You sink into the code, the project manager gathered the requirements, and the process is underway. Where do the customers come into play?
What Are These Development Types?
Test-Driven Development (TDD)
Test-Driven Development is the process in which all the focus is on if the code was written right, and if it passes the coding tests and validation. Here you focus on the requirements first, then build your code tests around it. After you have your criteria, you then create your code actually to fulfill your tests. So for this and the rest of the examples, we will say a user signs into your website. Your test case: creates code to validate a username and password.
Behavior-Driven Development (BDD)
Behavior-Driven Development is where you focus on the requirements and then determine if this fits the behavior. Similarly to Test-Driven Development, you are building around your test cases; here, your test cases have a different meaning. Does the test case complete the desired behavior? The test case here is if the user gets signed in.
Acceptance Test-Driven Development (ATDD)
Acceptance Test-Driven Development is the process in which your tests are built much more collaboratively in your group. Here you are determining not only did the code do what it was supposed to do but did the user get signed in too.
Customer-Driven Development (CDD)
Here is what Customer-Driven Development means to me and why I believe it is so important. While the above process is relatively simple and you say well of course when we test we will make sure they get authenticated, and the user is signed in.
You Failed Already
If you went through the above, you failed already. Why is the customer signing in? What do you have on your site worth signing in? Why would they want to give you the information? Can they figure where the login action is? Once the sign-in is available, is it clear what they are supposed to do? This can go on and on, and it is a simple two text box, one-button design, right? Nope. If you are making something for your customers, you MUST seek answers to if they even care and if they do why. If you don't, you will miss the mark before you started.
Getting Focus Groups Are Expensive
Focus Groups are expensive, and they take tons of planning. But you do need a focus group to have a focus group. I complete customer interviews as part of my process of building a site. Here is what I have found: you can call just about anyone, and as long as you say, "Would you help me x." Help is the key here. People love to help; it makes them feel good. So if you have a few questions you want to ask, call your target market and ask.
Communicate With Them
Before, During, and After give you customers a simple way to communicate with you. That can be a forum, Facebook, contact form, product reviews, and more. Almost any product has reviews, and within those, you will find at least one way you can make your product better. You have to listen to your customers, and they will tell you what they want and how to grow your business.
Create Your Customer-Driven Development Plan
You have the tools at your disposal to do all of the above. When you start your development, help your developers understand who the customers are. Build your test case around the customer. Iterating the example above, your test case should be, Do I need to sign in? Can I find the sign in? Then you test did the code work and did the user get signed in.
Customer-Driven Development doesn't abandon TDD, BDD, and ATDD; it combines them and lets you have the best of it all. Using Customer-Driven Development allows you to push the boundaries forward, but it also ensures what you will make an impact.
Familiarize and Plan
Implementing Customer-Driven Development is hard. To get there and do it well, you need your team to understand the customer. Put them in their shoes. Say you are building a grocery shopping app, send your developer out to complete the tasks that drive the need and let them experience the pain your solving. Then at each iteration, ask them is this helping that?
Get a customer representative. The representative is the person who is or knows the customer the best, and they have the power. The customer representative is the person who ultimately says yes or no to a feature or produces your acceptance criteria. It is their job to ask why and how and what next.
Get the roadmap in place, have your customer representative sit with the development team on all cycles. You have to prioritize your development and releases, and the customer representative will be the one who gets the features in phases that matter and drive anticipation without frustration for the next release.
You Are Not Successful Without Them
Every business owner knows this - "You are not successful without customers." It is a no-brainer. So why is it when we develop new products, websites, or anything, we so often think we know what the customer wants without them? Test-Driven Development is straight forward and nothing new, but taking your company to the next stage requires Customer-Driven Development. The likelihood that you are already doing some form of Customer-Driven Development is high, but if you bring it to the top as a real goal, you will win more business.