Why is it so hard then?
First, what do I mean when I say “Know Thy Customer?” Ultimately I mean that the best teams have customer value at the heart of their software development processes – they truly “Know Thy Customer”. I’m not saying anything new – however, I do want to talk about how to take this beyond simply “proclaiming” you know your customer or that you have a prioritized backlog down to some ways you can execute and engage.
I’ve made many mistakes in my almost 20 years of developing software. Lots and lots of technical and team related mistakes – live and learn. Perhaps the most consequential mistakes that I’ve made have always had to do with making assumptions about my customers. Certain times I thought I was “smart enough” to understand my customer’s needs. Other times, I was focusing on the wrong customer – all of these situations resulted in less than optimal solutions. Nothing could be worse than building the wrong product for the right people.. or the right product for the wrong people.
I’ve spoken many times about situations where you establish a “pull” model versus a “push” model of delivery. In a “pull” model you let customers decide exactly what value they need and what problems they want solutions for (very Lean thinking). Many models make this a priority – for example Scrum promotes the concept of a Prioritized Backlog and our Product Owner is responsible for making sure that the right problems get addressed at the right times
Note: I always see software as a solution to business problems.. not features
In any model, it’s really important to ensure all team members hear the customer’s voice (the right customer as opposed to the wrong customer) – to be able to identify with and understand customer problems, needs, expectations and what they see as valuable. A Product Owner, for example, may simply be a proxy to a customer and as a result creates a possible danger of isolating the true customer and the rest of the team. There is nothing worse than valuable requirements getting lost in translation. Guess what, being a Product Owner is a HARD job!!!
There are LOTS of ways to better understand your customer. No single technique is the answer for all situations. You can use JRD (Joint Requirements Development sessions), surveys, community forums, user groups, and having onsite customers. The models I prefer are those models that inspire direct customer engagement, customer collaboration, customer community, and continuous feedback. Obviously having an onsite customer is the best answer – a customer deeply involved in your processes. This may not always be possible and you may need to look to augmenting your onsite customer experience with more electronic and scalable solutions to reach a broader audience.
I really started to pay attention to this method as a result of Scott Guthrie. I was watching him present at a Microsoft PDC years ago on Silverlight. The first thing he did was pop up Microsoft Connect to display the top pieces of feedback in the list for Silverlight. He then went from the top down demonstrating how this feedback was taken seriously and was now available in the new version. The resounding cheer and excitement this produced was stunning - emanating “wow.. you listened to us.. and you have proof! We love you Scott!!!” BANG – hit me like a bowling ball to the face… this model was powerful. This was a demonstration of pull and of “know thy customer”.
This model is driven by a feedback hub that acts as both a repository for feedback and ideas as well as a place for customers to collaborate with products and, more importantly, each other. This model encourages customers to use their own voice when describing their needs feeding directly into the delivery team.
This same approach is how the Customer Feedback and Idea portal works in Telerik TeamPulse (as an example). The Customer Feedback and Idea portal acts as the central experience for customers to submit feedback, collaborate with the team, and vote on other feedback. This same feedback is surfaced directly in TeamPulse making it super easy for the team to directly collaborate with customers – get clarifications, see the results of voting and hear the customer’s voice directly. Once in TeamPulse the team can consider the feedback, decompose the feedback into more discrete requirements and then work these into the regular planning cycle. These plans can get pushed into TFS where the implementation team can directly consume and use to drive engineering, deployment and testing.
So… the most important thing you can do on your project, outside of all the agile stuff I preach about, is “Know Thy Customer” – make this the core centerpiece of your Agile buffet table of practices.
Click on the links for more information on TeamPulse and the Feedback Portal.
Joel Semeniuk is a Microsoft Regional Director and MVP Microsoft ALM. You can follow him on twitter @JoelSemeniuk.