IMO, there are two types of programming work:
1. Specifying. You are working on getting all requirements, and laid out the specification of the expected behavior of a system.
2. Translating. Once the specification is a nailed down. It would be taken into the hands of translators and put into actual code.
Both involves critical thinking, but translators probably more susceptible to LLM's negative influence.
Also any programmers at one time plays both roles, so it is not about a particular person is going to be deemed useless, more like that part of programming work (translating), is discounted, not longer as valuable, for everyone.