If the ideas expressed here abuse otherwise well understood terms in vague and inconsistent ways or are just flat out wrong, please feel free to copy and paste this post into your word processor and change it to be more agreeable to you.
Actually that sounds too harsh like I don’t care what you think, which is not strictly true. What I mean is there are plenty of holes and vagaries here to warrant correction or disagreement and you shouldn’t let my wrongness get to you.
Programs are ideas not code.
Programming is arranging systems to express ideas. The quality of the result is determined by the clarity and understanding of the ideas that inform those decisions.
Sometimes a distinction is made between systems and application programming. The idea is that systems programming produces programs for use by programmers or other programs (such as operating systems, libraries and tools) and that applications are produced for users. I think this is a false distinction. All programs appear as abstract systems to their users, application is the act of using those systems. The work of a programmer is to take a set of more abstract systems, shaping and hiding the possibilities inherent in the base systems to produce a simpler, more concrete system closer to the users need.
Application of systems producing more systems. Its turtles all the way down.
Programming is irreducible, there is no silver bullet or tool that can remove the programming from programming. Good tools, libraries and languages only help to clarify the task of programming and remove obscurities. They may reduce the lines of code you write but do not reduce the act of programming.
Libraries and components that are completely configurable do not contribute to your program. Their use and configuration is an equivalent act of programming to working without them. Complete and perfect abstractions belong to mathematics, not programming.
Code can be a liability that stands in the way of our ideas as much as it is the only way to give them shape and life.