How can we get better work estimates? My developers are constantly off by a factor of 2 or more.
This is normal! No one can anticipate everything, and work estimtes are asking them to do that. This is why most people estimate too little time to get work done.
The only way to improve is to measure and learn. Ask the person doing the work to offer an estimate. Then measure the actual time elapsed, and start building up data. You will be able to back out the “fudge factor” for each person.
Now you can do two things: you can apply the fudge factor to future estimates, and you can also share this with the person and ask them to help move the fudge factor closer to 1 over time.