I prefer software! With hardware you have to think about ringing circuits and intermittent faults that you eventually find are due to the cleaner bringing in a vacuum cleaner with bad motor brushes that injects electrical noise into the mains. Most software bugs are nothing compared to tracking down that sort of thing.
It's not black magic; systematic troubleshooting is the key to either environment.
With hardware you don't always have a reproducible known good state. Many changes aren't reversible. Certain tests can irreparably damage things.