Often, the more experienced we become at consulting with clients and writing software we develop a bad habit that can undermine our credibility. We start presenting our solution before we take the time to walk through our client's problem with them.
Patterns are part of building software. We are wired to recognize them. They help us break down our clients' problems into manageable chunks and help us build solutions to those problems.
There comes a point when the ability to recognize patterns can start to work against us. It plays out when clients begin to describe a problem or an idea to us and a few words in we know where they are going. The problem isn't that we are wrong. The problem is that we are right and we don't let the client finish. In doing so the client doesn't think to them self, "Wow, that consultant is amazing. They knew what I was about to say, cut me off mid-sentence and gave me the answer." What they do think is something along the lines of, "Wow that consultant doesn't respect me enough to let me finish a thought and thinks I'm an idiot to boot."
Realize that there is value in listening. In every client interaction we as consultants have the opportunity to build credibility or lose it. One of the best ways to build credibility with clients is to hear them out. Patterns are a good thing but they are not prescriptive. They can help us identify problems and solutions but at times they can also work against us. Listen to your client, take detailed notes and then provide them with a solution that solves their specific problem. Whether their problem is completely new or one you have solved a thousand times this is something we owe our clients. We as human beings value being listened to, really heard out. Being a developer is not just about writing software. It is about taking the time to truly understand our clients, their business domain and their specific solution needs. To not give them this courtesy is not only disrespectful but it also sets us up for failure.
Taking the time to truly understand a client and their needs builds the credibility and relationship necessary to provide them difficult feedback that is needed at some point in every project. When you take the time to listen to your client you communicate that you value them, that their problem is real and that you build confidence with them that you as a technologist will be able to provide a solution to their problem. While patterns do help us identify the problem and craft a solution it is rare that a client's problem fits perfectly with the pattern. Listening and understanding are what bridge this gap, allow us to provide them with the solution and give them the ear to hear that solution from us as a consultant.