How do you communicate if you won't hit an estimate?
Immediately, with brutal honesty, and positively.
1. Immediately: Never delay communication. Most people will be less upset about the schedule than the fact that they weren't informed.
2. With Brutal Honesty: Explain exactly what's going on. You may end up with a pleasant surprise. "Oh, can we just have xyz then?" or "How can we reduce the scope?" or " How can we help you make this easier." An informed customer/boss is a resource to be used.
3. Positively: Find a way to deliver something by the deadline. "ABC will be delivered as planned on October 31, but we have run into unexpected issues with Feature xyz, so it may not be fully implemented at that time." sounds a whole lot better than, "We won't hit the October 31 deadline." You may even give them options in terms of features & dates. They may not like it, but once they make a decision, they feel more a part of it and you will have bought some goodwill for a while.
Stuff happens. Good project managers will adjust and move on.
Additionally, if you are being blocked by something external, you MUST let your project manager know ASAP! One of his primary jobs is to remove impediments, so you can do your job.
Product Manager at a Fortune 500 technology company here. Definitely agree that this is the right answer.
In particular step 3. You will get all of this, some of this, and none of this, is an especially good approach.
Part of your Product Manager/Product Owner's job is to educate stakeholders that you are giving them capacity - not deadlines. Once this education is in place it's easier to have these conversations.
On a sidenote, this is part of what makes Agile so effective. It gives you a framework to have these discussions.
I'll add that in a healthy environment, this communication opens up avenues that the (frightened, frustrated, isolated) developer doesn't have while alone: the whole team is now available to help think about real priorities, entirely different ways to achieve the end-goal, ways to put more resource and/or time on the affected feature(s), and more.
Yep, this exactly. Your estimates will get better as you have more information, so keep everyone updated as you get into the thick of it. This is why Agile has daily standups. If you don't have a daily status call, do try to get into some sort of routine update.
It also helps if you know what is the highest priority and what can get sacrificed.
If you're late, talk about it in your retrospective. Taking time to look back will help you make better estimates in the future. Often times I gauge how reliable an engineer's estimate is based off of how many questions he/she asked me during the kick off meeting.
whoever reads this, please pin it to your wall or whatever it is you pin to. Couldn't have said it any better.
I would reiterate on the "brutal honesty" part. In some cultures, it is considered rude to say No and a lot of developers make that classic mistake of being hesitant in saying No. Even when they know that a deadline is going to be missed, they find it difficult to communicate. But no matter what you come from, you need to learn how to just say it as soon as possible because ultimately, the client will find out anyway and that will not be good.
Also, most clients are willing to negotiate even though they don't tell you that. Just this other day, I had a client bugging me for a very complex feature thinking I will do it for free. They said and I quote "We cannot go live without this feature and you must do it for us". I then went back with a paid estimate and set the delivery to 4-5 weeks, they immediately changed their mind and said "ok fine I guess we can go live without it for now but lets work on it together". Within a few hours, it went from "no can't go live" to "ok will go live for now"
I would also include any secondary effects on projects further up the pipeline, and communicate any necessary changes to keep those projects on schedule.
Those you're speaking with will appreciate your willingness to have that kind of foresight (the effect of which will definitely offset some of the short-term disappointment).
Immediately, with brutal honesty, and positively.
1. Immediately: Never delay communication. Most people will be less upset about the schedule than the fact that they weren't informed.
2. With Brutal Honesty: Explain exactly what's going on. You may end up with a pleasant surprise. "Oh, can we just have xyz then?" or "How can we reduce the scope?" or " How can we help you make this easier." An informed customer/boss is a resource to be used.
3. Positively: Find a way to deliver something by the deadline. "ABC will be delivered as planned on October 31, but we have run into unexpected issues with Feature xyz, so it may not be fully implemented at that time." sounds a whole lot better than, "We won't hit the October 31 deadline." You may even give them options in terms of features & dates. They may not like it, but once they make a decision, they feel more a part of it and you will have bought some goodwill for a while.