A black box is something that can be described in terms of its inputs and outputs. When we say something is a black box we just know it is something that produces an output given an input, but we don't know *how* it does that.
A Black Box
-> Input -> | (unknown_function) |-> Output ->
Black boxes are very useful sometimes, in manufacturing they allow less skilled workers to work with complex machinery without knowing how it works outside of what goes in and what is supposed to come out. They also are useful in programming, but not always - especially not for novices.
When your goal is to learn as effectively as possible they often are the things that should be studied, not abstracted away. They are not useful because we end up with fragmentary contextless knowledge, which is easily forgotten.
Black boxes are just higher-level abstractions of foundational ideas. This is why React or Django is so powerful. Both are powerful examples of the power of black boxes and abstraction. However, they are not best for beginners to learn - contrary to popular belief.
Yes, Django and React could help professional developers launch a product rapidly and generally be a lot more effective, but for beginners, they won't help you as effectively as lower-level stuff.
My solution would be to embrace black boxes more and don't be afraid to get very minute. For beginners, the most important thing is about genuine knowledge acquisition not how quickly you can build a product (which is a lot longer than the tutorials make out).
If you are a beginner who has tested out Django before but struggled retaining it, I would suggest taking a step back and thinking more big picture about what Django is trying to achieve.
What do you guys think? Let me know in the comments.