This is all just my philosophy, so you might as well take it with a grain of salt.
What is a Black Box? When it comes to programming, we're surrounded by thousands of functions that we have no clue what exactly they do at an assembly level. When someone gains an overview of how these functions work explicitly, that is to say the algorithm, formula or source code, I no longer consider these functions to be black boxes. Are black boxes good or bad? To me, they are bad but inevitable. It's practically impossible to know every bit of information as to what is happening in any given function. Layers upon layers of abstraction are put in the language, assembly, operating system, kernel, hardware etc... In these situations one typically goes for, striving but never reaching perfection, but these attempts can often lead to burnout. That said I don't think striving for perfection is bad, if not necessary for the betterment of any human being, no matter their craft, and especially if you hold deep passion for it.
Let's summarize my thoughts
- Black boxes should be understood
- You can never hope to understand everything in a complex system fully, and should instead strive to know as much as you deem necessary.
In contemporary times, art is a manifestation of human expression. When it comes to programming, I feel as though there are as many choices done within a piece of work as there are in any form of art. I feel as though programming belongs to the branch of problem solving. At its core, problem solving is as much an art as any, as it was our problem solving and rationality that led to our creativity. Problem solving is as much imagination as it is intuition and logic, and as a painter has many principles at their disposal, from perspective, to proportion, so does a programmer. Every artist is free to choose their style, and how they compose their elements.
Let's summarize my thoughts
- Programming is human expression, is art.
- Artists are intuitive, rational, problem solvers in their craft.