Most of conventions used in math come from the time before computers; on paper, every character you don't have to write by hand is a big time-saver.
Moreover, math papers tend to be read top-down. You start at the beginning, and gradually build your understanding and "symbol-to-concept" mapping table as you go down. Whereas in code, you often just jump in the middle of a file to change something, and you don't want to read 1k lines of code in some random place to determine what f(a,b,q(z)) means. Descriptive names allow you to have all the context you need inferable locally.
Note that many good principles of programming are exercises in maintaining locality. Reducing program state, functional programming style (function output depends only on inputs, not on hidden state), writing small functions, building abstraction layers (treating one layer as a "programming language" for the layer above) - all of these allow you to understand and change the code you're working on without having to look at unrelated things.
Programming by its nature is an exercise in re-enventing the wheel (how many different semantics are there for opening a file in all the different languages in use?). Also, the sheer number of algorithms and abstractions in use in programming dwarfs that of mathematics.
Programs need to be interpreted by a computer, and as such need to be written in a formal language everywhere, and as such has a larger amount of concepts that need to be formally modelled. More concepts means we need more descriptive names to be able to distinguish them.
Because context-switching and then processing concise symbols in that context is more efficient for most people's brains that processing prose.