Работа программиста и шамана имеет много общего - оба бормочут
непонятные слова, совершают непонятные действия, и не могут
объяснить, как оно работает.
"не могут объяснить, как оно работает" это хороший шаман не может и не обязан. А вот хороший программист и понимает и объяснить может. Другое дело что "не программист" нифига не поймет и думает что это шаманство.
Программист может объяснить и то почему оно НЕ работает - при этом обычно пользователь чувствует себя идиотом и обижается.