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.
May I add "scheming" to your list of programming activities?
At the macro level, this would be system design. Making sure that the architecture is extensible, transparent to failures, and easy to understand and develop for.
At the micro level, this would involve coming up with clever algorithms to solve specific problems. In ways that are simple or efficient or parsimonious.
In any case, this scheming activity, which would slot in between the specifying and translating that you speak of, would involve deeply understanding both the specification (and how it might evolve) and computing substrate (its APIs, what is efficient and what is not, etc.). I might even call it some combination of wisdom and deviousness?
I find GPT-4 awesome and certainly it will impact "programming", it's an open question how -- will there be a superclass of GPT enabled programmers that will take the jobs of the rest?
Right now GPT-4 is helping me solve real tasks at work and it feels like I'm the only accountant who has xcel, but surely others will catch on.
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.