Who to blame, user, tool or microcontroller?

I think there's an explanation from Dave Jones here: