Moving from help desk to programmer is a career change not a promotion. It's a higher paying career which is why the flow is mostly unidirectional. Programmer to manager is similar, except at good companies that need good senior devs and pay for them.