"On Being A Senior Engineer" is such an excellent post from John Allspaw of Etsy that I just had to quote from it — and to encourage you to read the whole thing.
From the Unwritten Laws of Engineering:
Promises, schedules, and estimates are necessary and important instruments in a well-ordered business. Many engineers fail to realize this, or habitually try to dodge the irksome responsibility for making commitments. You must make promises based upon your own estimates for the part of the job for which you are responsible, together with estimates obtained from contributing departments for their parts. No one should be allowed to avoid the issue by the old formula, "I can't give a promise because it depends upon so many uncertain factors."
Avoiding responsibility for estimates is another way of saying, "I'm not ready to be relied upon for building critical pieces of infrastructure." All businesses rely on estimates, and all engineers working on a project are involved in joint activity, which means that they have a responsibility to others to make themselves interpredictable. In general, mature engineers are comfortable with working within some nonzero amount of uncertainty and risk.
Excellent advice. One frustration I have with many not-senior engineers is that they say: "we're doing Agile so I can't estimate." Hogwash. A senior engineer can say "this looks like a three month project" and we can count on her estimate because of her extensive experience with this kind of project.i Of course if the requirements change along the way (remember, we're being agile) then the estimates must change — but changing estimates based on changing requirements (a senior engineer behavior) is very different than not estimating (a junior engineer behavior).










