As a web design / programmer you may find that you have clients that come to you with a firm idea of what they want their website to look like and to do. This may be helpful in creating visuals but if you do not agree with something on their design then you need to let them know. As the expect they may look to you for advice on what works and what doesn’t work, but even if they don’t ask you, you may still need to speak up.
Explaining to a customer why something won’t work can be tricky and if you can have alternative solutions to show them that you can prove have been successful then they are more likely to go with it.
Make sure that both parties know exactly how the end website is going to look and function before going in to programming. Give your client a clear understanding of what is included in the price right from the start. If the client starts to add in other functionality whilst in the programming stages, advise them that it will be additional. If the added extras are getting too much it may be worth suggesting that you do them as a stage 2 project once the website is live so as not to hold it up any longer.