Why black boxes are important
philosophyinpractice.substack.com
philosophyinpractice.substack.com
Where I agree though is that you don’t have to learn all the basics before you can proceed. I’ve been writing frontend code in for about six years now and I catch myself learning something new about browsers, web infrastructure and JavaScript itself nearly every day.
All this is to say, don’t be afraid to both start at the beginning and understand the basics, and skip ahead a few chapters and try new things and learn as you go.
React and Django are not black boxes. The source is all there, and their interfaces often reflect their internal workings. You know the insides but you are not meant to poke around.
In Django, for example, you are supposed to know what kind of queries it generates. It is documented how queries are generated (an exposed internal).
You have to open it to configure it:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
}
}
And by doing so, you have to acknowledge (in this case) that postgres becomes a known component of the "insides" (even though you are supposed to only interact with the ORM).A black box doesn't need this kind of stuff. It would have an embedded database instead. Like a plane black box would have its own batteries instead of relying on the plane power supply.
This is all good, I'm all in favor of good clear boundaries between components. The existence of a boundary does not make it a black box though.
That's why I would prefer using the term "encapsulation" when describing the advantages of having an abstraction.