Training to become an experienced typesetter requires skill, a good eye, and lots of knowledge but once you're at it then it's mostly just that field. You can become better in it but in the end you still do, well, typesetting.
Programming, however, changes over time as you abstract out the mundane, repetitive -- or "typesetter" -- stuff out to make more mental space for dealing with harder complexities. Programming has always been hard and by definition it always will be.
For example, modern languages with type-inference and automatic garbage collection have relieved many from the banal pain of designing explicit type declarations and arranging malloc()/free() calls manually. Languages such as Haskell now allow for solving more complex problems. That is because Haskell programmers don't have to waste their wits to arrange for and solve problems related to programming itself and can rather focus on the more novel, original problems.
I don't mean to say that programming doesn't involve automation; in fact, it uses a lot of automation to abstract away and obsolete old tasks. It's just that, unlike typesetters we haven't (usually) had, for example, memory management specialists who only write memory management systems for projects and who would become unemployed as garbage-collected languages gain popularity.
Any "typesetting" involved in programming is generally automated to free the same programmers to work on bigger problems. Programming doesn't end, it just changes and become harder and harder.