Customer Driven Design
Something that I have noticed, customers can drive the software's design quite easily. I don't work in the product department, but I am the developer who implements the ideas. This is my take from being asked to implement these new decision with the knowledge it's coming straight from the customer.
I have worked on several products with various teams sizes, and the customer usually has some direct input at some point. It's usually into the design, or the idea for the some functionality to be added, or replaced. I'm not sure why it is, but these are my ideas:
- We think the customer is the domain expert.
- If we don't implement it, we will upset them.
- We do not want the customer to leave.
- It is easier to source ideas from them.
- Big opportunities could be had with just one more tweak.
This is a short list of ideas why, but it's obviously more complex than that. I don't think customers have the best ideas for software. They can be the domain expert for what the software helps provide assistance to, but they are not the software experts. Customer feedback is import. It does not require action.
When customer's suggestion, and feedback is prioritized, I have notice it gets near immediate action. This wasn't because the backlog of tasks are empty, but because it gets expedited. To remedy this, I would create a backlog for customer requests. Let that new backlog collect for awhile. Improve your software, and drive it in the direct it needs to go. We are the software domain experts.
I don't know if there is any software that is perfect so give yourself the opportunity to fix, or replace the parts that need it. These fixes will help software maintainability, and open the door to add new functionality to the software. This could be a good time to consider the customer feedback into your new design, if it make sense. Once you're done, the team will feel the improvements working on the software, and customers will notice too.
Lets make conscious decisions about our software by not being reactive to feedback, or relying on it for direction. Customers are relying on us for good software. Plus we don't want our software to be an endless feature treadmill. The final product will be a reflection of our thoughtfulness so we must build the best product with the limited resources we have.