This can be very debated. Really, it depends on what you are doing. As with networking and using the OSI model bottom-up is preferred because 9/10 your problems stem from the bottom being physical and router/switch issues. So when working with networks, bottom-up is the most likely solution. Unless of course you know what the issue is and you start somewhere in the middle, which is why in this thread, once again I am suggesting you write down the problem and solution and everything you have tried that did not work. But that also falls under the networking issues.
With programming, it all depends on the language and what you are trying to do. If your working with something high level like PHP or Python, the top-down approach works better, seeing how the languages are so high level. Even C++ would constitute a top-down method on trouble shooting. But even that depends on what you are doing. If sockets are involved, starting from the physical medium wouldn't be a bad start.
All in all, it really depends on what you are after. The reason there is no set method is because there are different approaches to different problems. Lets say you are having a packet storm on your network, you would check the routers and switches to see where the redundancy issue lay (mid-level approach). If your computer can communicate with the access point an you know the ips and subnets are correct, a bottom up approach is best.
I guess if you needed one way or the other. With code and programming, top-bottom would be the best bet since it is application. With networking, bottom-up approach is best IMHO.