I try to keep early project planning aggressively simple.
My rough process
- Define one concrete problem.
- Decide what the first usable version must do.
- Cut everything else.
- Build fast enough to learn where the real complexity is.
This approach avoids spending a week designing features I will probably delete anyway.