I find that the people that set themselves up for trouble are the people that want to please everyone. I want to please everyone, but I’m also realistic in that I want to tell people the real picture and not some fictional world where nothing goes wrong. Some people like to paint this idealistic world – those people are also living in a dream world. In the real world people make mistakes, things aren’t perfect and you can’t promise everything will be fine. The only thing you can do is be honest, learn from your mistakes quickly and try to stop it from happening again.
I prefer being honest and telling people exactly what is going on, instead of pretending everything is going fine, because at some point things won’t and by telling people things will go smoothly you’ve effectively lied to people. I personally want to do right by the customer/client, and sometimes that means saying that it’s going to take some time to develop/test/deploy something. It means sticking by your guns, and being completely honest that things do take time in proper software development.
I really like this approach and I find it effective. Customers are glad to hear both good news and bad news from me, because they know that I have nothing to hide. They know that they will always be able to help make decisions and do right by the team.