There are two ways to handle client requests:
- Build the request exactly to the client’s specs and deliver it on time.
- Take a step back and figure out what the client’s end-goal is, regardless of what their stated specs say. Then architect a solution that you think best fits their goal and pitch that to the client. Then build it.
In my experience, clients often tell you how they’d solve the problem instead of telling you what the problem is first. The issue is that since your clients are hiring you, they rarely know the entire realm of options when it comes to solving the problem. If you are the one doing the work, you probably have a better big-picture view.
I once worked on a project that we built exactly to client specs because the client was insistent that we start immediately. It looked great from the surface, but a number of backend systems were tedious to use, didn’t connect, and missed some clear feature opportunities because the client wasn’t a system architect and hadn’t thought them through. We were technically in the clear because we followed instructions to a T and delivered on time, but the client was still frustrated and we ultimately had to fix the issues to keep the client. We should have pushed back and architected it in the first place. It would have saved time, money, and frustration for both parties.
If you build it to the original client specs, you miss an opportunity to be the expert that helps solve problems and sets your clients up for long-term growth and success with the things you build. Handling requests like a consultant makes for better solutions that are more flexible and scalable in the long-term.
I think the second route is best. That is the way I approach all client requests, no matter what size, or who the client is.
Developers who think for their clients and write the code keep their clients coming back. Developers who just write code are a dime a dozen.