Foundational knowledge is worth a thousand tools
lucaskostka.com
lucaskostka.com
At one time, I could tell you what every FET junction on a microprocessor was doing.
Those days are long past, but the basic knowledge helps me to write really robust, harwdware- and server-connected software.
And said on the cleanest blog design I've seen in ages.
Software Engineering is a profession that deeply revolves around saving people time.
The tiniest fraction of software engineering involves goals other than "saving humans minutes."
The foundational knowledge of software engineering, mathematics, linking real world problems to discrete mathematical foundations. Projection of subsets, grouping abstractions, logarithmic graphs.
It's valuable, because it saves time.
Almost the entirety of mathematics was discarded to identify that foundational knowledge.
Keep in mind, human life will always involve juggling multiple different worries at once, & compromising.
It's never a "do this, or do that" situation.
My pet peve is people complaining about that. That you seem to think that's an issue shows how long it's been since the last time you really ventured out of your current comfort zone/domain knowledge.
Trying to "understand" first means that you're just reading things for weeks or months if you barely know anything about a technology, domain and everything around it. That's a time period in which this less experienced person can gradually learn how the system, technology and domain works and they'll eventually graduate to prefer understanding over answers. Do keep in mind that these beginners can't distinguish between irrelevant and meaningful information, so they'd have to go through decades of documentation before they're able to "understand".
Just give them a break and tell them the answer. After a while, (which you'll likely feel to be much too long) they'll grow a bigger knowledge base and will be able to meaningfully understand problems.
That all said, eventually you need to go deep. I think everyone in software engineering, at some point their career, has that sort of ahah moment where they realize just how high up the tower goes and start to get curious about those lower floors. Even though you still don't really need to dip into the bowels of the machine that often, just grokking what goes on down there does wonders for fleshing out your overall comprehension of the discipline.
This all sort of assumes you learn the craft outside of academia, which is typically very much a bottom-up approach (in all disciplines) and seems to work out fine (though students do complain about having a hard time seeing the relevance of what they're learning!)
We dont all need, at all time, to care about all levels.
The clickbait title is more precious than its contents.
Foundational knowledge allows you to tie different facts together in your field. This rope vastly, vastly, aids comprehension.
Pushing and pulling on the rope shows cause and effect, brilliantly. Cause and effect, understanding allows you to do make effective things.
"Just read George Pólya's How To Solve It and William Zissiner's On Writing Well."
It all fits together after that.
I don't know the titles of any of them, so I can't comment.
It's amazing what people were capable of building with web technologies that handled the hard parts for us. Most people don't need to worry about the scalability of their PHP applications since Nginx handled that problem for them.
People don't need to worry about multitasking since the operating system preempts your code.
Or JavaScript event loops for efficient IO. Can write a simple nodejs application and use a JIT compiler.
Anyone have tips on the best source material for learning these?