Estimation of features is a critical part of the software development process, especially if you are using an Agile methodology. The ability to accurately estimate features is an often overlooked skill that every developer should have.
As a project engineer, responsible for making sure that we set realistic project timelines and that we actually carry those out. Managing expectations is one of main responsibilities. This is where Agile is so nice — as long as you do it right.
When we start on a new project, usually one of the first things that happens is meeting with the client or whoever is sponsoring the project.
In these initial meetings, at some point we will probably be asked one of two things:
1) how long will it take to accomplish X?
2) how much can we get done before X (some date)?