As an employee, freelancer, or an entrepreneur, you need to manage client expectations. This is often a neglected field, but it is one of the main differentiators of professionals.
When I was freelancing, I needed to take care of the expectations. If I managed them wrong, no matter if I did spectacular work, the relationship was unlikely to go on the right track.
One thing that worked spectacularly is to send regular status reports. Every day, or every other day I sent something: a pull request, some documentation, or an email stating that everything is on track or if there are any problems. Instead of just giving a "completed" signal, I sent regular reports. Several highly positive feedback mentioned this practice.
The need to manage expectations is not just for software development. The general idea is simple: let the other party know exactly how the work is going, preventing second guessing. Be open about setbacks and when you need input. Your job as a provider is to keep clients "in the loop".
It works within a company too. In particular, if you work in sprints, let others know that the sprint is attainable and is on track.
It's easier just to get immersed in the work and neglect any communication. It is a common problem with knowledge workers, as it's not that easy to switch to "emailing" mode. But it's worth it. You might be on the right track, but if you don't communicate it, people will start to worry.
A similar issue is when people don't report setbacks or don't make it clear what input they need to reach milestones.
One of the worst thing for a manager is to think everything is on track, but get informed just before the deadline that the team won't make it. They have no way to prevent the impending disaster in that case. It's easy to blame management, but in this case, the culprit is the silent developer.
Granted, in some cases, the management just did not care about the project problems. They let themselves into a blissful ignorance that everything is going in the right direction, just to wake up to reality too late. In that case, the blame is on them. But you should never be silent in case of problems.
Have you heard about scrum? It has a notion of daily standup meetings and short sprints. In contrast to the waterfall model, it promotes an environment where communication is regular, and deadlines are common.
It prevents staying blissfully ignorant for too long. Missing sprints are a clear indicator that something is wrong.
In the good old days of the waterfall model, these types of problems might not surface until months later, often too late. No wonder why most of the software projects failed to stick to the schedule.
You need to manage expectations. If you are a freelancer, the expectations of your clients. In the case of a corporate job, the management's.
Let them know your progress, even when they did not ask for it. Over-communication can be managed more efficiently than under-communication.
And by all means, let them know if there is anything you need, and especially if it's unlikely to meet a deadline.