Lots of parts are more creative or more "for humans" I might say, like building the right abstractions considering the current context and potentially future contexts. There is no "right/wrong" abstractions, just abstractions with different tradeoffs, and lots of things in programming is like this, not a binary "this is correct, this is wrong", but somewhere along a spectrum of "This is what I subjectively prefer considering these tradeoffs".
There is a reason a lot of programmers see programming having lots of similarities with painting and other creative activities.
Problem is that everyone probably agrees with that, but where the line of "the basis" is drawn isn't so widely agree on. Is "the basis" the physical composition of the hardware components? Understanding assembly? Knowing how a CPU works? How electrons move around inside the whole thing? How all the pieces fit together, including the OS?
The space is just so large that everyone has their own "basis" that sometimes even move with time. They can still be good programmers imo.
At least part of the basis for every programmer is formal logic. A systems programmer should understand how a CPU works, and a frontend JS developer should know how their target browser works, but they all need to know formal logic.
> Why do you say this? The foundation of all of computer science is formal logic and symbolic logic.
Yes, but also it has to deal with "the real world" which is only logical if you can encode a near infinite number of variables, instead we create leaky abstractions in order to actually get work done.
Why do you say this? The foundation of all of computer science is formal logic and symbolic logic.