Exactly, if you know what the problem is the Dijkstra style is great: system software, compilers etc..
If you are doing anything with business logic well that's where hacking takes precedence because the problem you are trying to solve isn't well understood.
But often times you don't have all the information. You can watch how people currently do the task, but that might not be the optimal way once software starts being used. It's better to get them using the software so that they can suggest features, or perhaps even whole new ways of doing the task.
Not all problems can be merely thought about until their understood there are quite a few that require experiments to get further information. That is the hacking approach rapid experimentation.
If you are doing anything with business logic well that's where hacking takes precedence because the problem you are trying to solve isn't well understood.