I used to approach problems bottom-up, and I often prefer it when I'm working on my own because I do feel I have a much deeper understanding of the system as a whole that way. But on larger teams, and especially teams with junior developers or communication boundaries, I find a top-down approach to be much easier to get everyone on board with.