Don't estimating that some tasks would take small hours or even minutes because you felt that a longer time would feel ridiculous. It's not ridiculous, you need time to work correctly.
Lay out all the different blocks of your program (like "front-end", "back-office", "API", ...)
Then lay out all the features of each component.
My Project (8)
Password recovery (2.5)
Password change (0.5)
Email confirmation (1)
Email confirmation page (0.5)
- The project takes 8 days but if you look at just the leaves the sum is 5.5 days. There's 2.5 days added as you move up the hierarchy which account for the growing complexity of the project and thus the difficulty to deal with other parts.
Identify two things:
- The core feature(s)
- The most risky features whose timing is difficult to assert, probably because you lack the experience in those specific tasks
** Research before estimating these parts
- Core feature with all necessary blocks at the beginning (example login, explore and play)
- Finish 100% of your task before moving to the next one
- Don't trip on some technical difficulties and loose days for no apparent reason (regularly review your work and take a step back)
- Dealing with a late project
- Decreasing scope (you can push to prod the things that are already done if you've done things one by one and in a meaningful order)