Bitter experience has shown that most of the time that Mathematica doesn't perform as expected is due to poor programming or incomplete understanding of the underlying task.
Mathematica is relatively easy to use without any prior knowledge but gets progressively difficult to master without assistance. Learning to perform more intricate programming - other than simply evaluating built-ins - has a steep learning curve, which the Documentation center and this site make considerably smoother.
I've always wondered what playing 3D chess - Trekkie style - would feel like and I assume that thinking about evaluation precedence steps and designing a proper function that fits a certain need must be the closer it gets to that.
ps. I'm lousy at regular chess, I'm marginally better with Mathematica.