As I re-enter the world of Freelance web development I am beginning to remember some of the down falls of it. As I get further into freelance consulting I realize that there is a common issue whether you're working for an agency or working independently. Most clients do not understand web development, now typically I deal with an agency and they have a pretty solid understanding and it's on them to educate the client. My first few freelance projects were with individuals and it became very apparent that they had no idea what they were asking for. They were just saying things the've heard or have seen on another site but may not fit with what they actually need. So, how do you properly educate a client on what their needs are without making them feel like they don't have a say in the project, after-all, it is their project.
After several years in the web development industry I have figured out a few ways to explain to clients why what they're asking for is not only a ridiculous request but also bad practice without coming off as rude or aggressive. An important thing to remember is you always get a better reaction if you offer an alternative. Keep in mind, the client hired you because they see you as an expert in this field.
This is a big one, clients don't understand not all browsers are created equal and just because you've seen some technology out in the world doesn't mean it'll fit in your project or budget.
The way I explain this to clients is, building a website is like writing a book. If I wrote a book in mandarin (assuming they don't speak it) and handed it to you, could you tell me what that book was about? This is the difference in coding languages.
I usually use this one if a client is asking for something that is heavy on server side code or has a native app that they want me to make changes to when I don't know any native languages.
The most typical one that comes up is browser limitations. I address this a similar way except I replace mandarin with the Queen's English. Typically they say Yes, I could tell you what it was about. There are a few words that mean different things however versus that of American style English.
I then explain that the book represents the code, and you (the client) represent the browser. In this case because you cannot understand everything in the book even though its a form of your native language, you are Internet Explorer.
This usually gets a laugh but then they understand why what they're asking for will not work across the board.