Keep expectations where they should be
There are many pitfalls when time estimating or promising features. You may be overly enthusiastic and get swept away by the enthusiasm, you may believe too much in your own abilities, you are afraid to tell the customer the real costs, you simplify the impact of the uncertainties and risks in the project or you simply forget about all the boring stuff that needs to find time as well such as testing, documentation, meetings...
There is a saying that you should multiply your estimates with pi, but I don't buy that. Better to learn how to estimate correctly and to know when not to estimate than to just tell the customer that the project will cost three times as much as you believe. In the end no one will be happy if the project gets delayed.
Honesty is a good trait. If you cant make an estimate say so. And try to keep your hybris and megalomania pinned down, so common traits among developers. After all we are a bit like gods, being able to create anything we can imagine in the virtual world called a computer.