Often, the hardest part of software engineering isn't the technical work of designing and writing code. It's predicting how long it will take to complete that work. Accurate work estimates are ...