Ref: The Pragmatic Programmer
Don't blame someone or something else, or make up an excuse. Don't blame all the problems on a vendor, a programming language, management, or your coworkers. Any and all of these play a role, but it is up to you to provide solutions, not excuse.
TIP 3: Provide Options, Don't Make Lame Excuses.
Before you approach anyone to tell them why something can't be done, is late, or is broken, stop and listen to yourself. Talk to the rubber duck on your monitor, or the cat. Does your excuse sound reasonable, or stupid? How's it going to sound to your boss?
Instead of excuses, provide options. Don't say it can't be done; explain what can be done to salvage the situation.