I remember having this discussion when initially building the last software project. We would start thinking about tasks to make the project and add them to the board. The list kept growing, and everyone in the team looked at the tasks as things which had to be done.

I wish we had taken a step back though or added a step after coming up with the list of tasks. A planning stage, where we looked at the project from 10000 foot view and spent more time thinking about different modules which needed to be part of the project. Tasks which needed to get done would then be part of these modules.

Abstraction, not just a programming concept is quite helpful when thinking about project management. A few days spent thinking of the different abstraction layers is all time well spent.