Things Will Take Longer Than You Think They Will

One of the most important rules of programming is Hofstadter's Law:

It always takes longer than you expect, even when you take into account Hofstadter's law.

One mistake that smart junior engineers tend to make is under-estimating the amount of time that a project will take. It's not that more experienced engineers are sandbagging their estimates, but after gaining experience and seeing how hard-to-predict pitfalls can lay ruin to the best of plans, they learn to bake in an educated amount of buffer. This skill comes from better understanding of both the problem domain and the human elements of the project.

When estimating it can be easy to just consider the technical challenges, but often organizational elements of the project can cause serious delays. When estimating, make sure you account for delays in gaining access to systems, getting responses from other involved parties, or other inflight projects that might compete for resources or delay launches for the sake of stability.

Stakeholders would rather have a reliable delivery date than hear an overly ambitious estimate that needs to be extended later in the project. Trust that things will probably take longer than you initially think.