The way I see it is like this:
So-called "programming" jobs can be science, engineering, a trade, or a completely different job masquerading as "programming."
Science is what tends to happen in research divisions and academia. These jobs revolve around the invention of novel algorithms, research into theory, and so on, sometimes without even having a practical application in mind. The work product is often papers, but is also sometimes new languages or proofs of concept.
Software engineering jobs tend to be what you see in "senior developer" positions in industry. They're about applying known concepts (i.e., existing languages, implementations of approaches from the literature, and so on) to build a defined system in sometimes-novel ways. The work output is usually a product or service that you have some degree of responsibility for.
Software as a trade is what most junior programmers and general employees at larger companies do. This is the application of very specific learned skills to implement pre-solved problems (i.e., a ticket to "make X work like Y using Z method"). The final product is closed tickets / implemented features.
And still another large group of "programming" jobs are actually more about knowing the problem than the solution. These are really jobs about using programming to do something else. Process and product optimization as well as a lot of engineering support jobs fall into this category. The work product is an improved process or system that happens to use a computer.
You can learn in any of these jobs. In the science job, you learn the fundamentals and then think of advancements to the field. In the engineering job, you study the fundamentals to apply them to solving a problem. In the trade job, you build the biggest possible toolbox of code to apply to each solution you're given to implement. And in the non-programming job you learn a whole new field and then apply code to it.
All of these jobs can be lucrative, fulfilling, educational, and fun, but you need to know which one you're getting into ahead of time. "Programming" and "industry setting" are awfully vague and useless terms.