My experience with AI was a little of both. My experience was that it always involved a certain procedure being done hundreds or thousands of times to reach a single decision, so breakpoints and stepping through code were pretty useless and for once the printf() approach was legitimately superior. Of course, looking for meaningful patterns in the thousands of arbitrary strings I told it to print out was tedious to say the least, but at least I could visually inspect the full "thought process" of my chess AI.
Though I still don't know why my neural net never managed to learn anything... some forms of AI are nigh undebuggable.