I don't think people understand this enough:
Reasonable performance is not obtained from doing clever optimizations.
It's obtained from avoiding work.
When you implement a task using abstractions or building blocks you don't understand, there's a very good chance that these abstractions push tons of work for the computer to do — work that does not need to be done in order to achieve your desired results.
Computers are very fast. Each piece of work can be done very quickly even if done sloppily.
The problems is that latencies add up.
20ms could be considered an acceptable wait time for a certain piece of work.
If you push a hundred such pieces of work on to the CPU, the latencies add up and things end up taking seconds instead of milli-seconds.
In the past, in order to achieve acceptable performance, you had to worry about both: the amount of work you push on to the CPU, and the time it takes to complete each piece of work. But now, you don't have to worry about the time it takes to complete a small piece of work, because usually it's so fast it doesn't matter.
What you still need to worry about is pushing work to the computer that does not contribute to the desired result you wish to be produced.
That usually translates to architecture: how to arrange the appropriate building blocks of the solution so that you are not constantly pushing tons of unnecessary work to the CPU.
If you conceive of programming as just the stitching together of black boxes, and "it doesn't matter how they work", then how can you know whether you're pushing unnecessary work to the CPU or not?
This is why if you follow OOP/CleanCode paradigm, you are almost guaranteed to produce awful results, because they teach you to *not* care about how things work under the cover.
People here always ask me why I write fully qualified std:: in my C++ code.
I just wrote a full reply I can share every time I’m asked the same question.
AWS is down and then the internet stops working.
But the blockchain, it never goe ... wait a minute. Scratch that.
This sector is a joke.
Everyone preaching decentralization and censorship resistance but in reality ... it's all 100% reliant on the cloud.
The JavaScript community has convinced itself that "better DX" justifies terrible architecture.
Then wonder why they're rewriting everything every 18 months.
@NickADobos@IvcotaD This is so stupid...
2) The default state of any successful code base is that you DO understand it.
If you didn't understand it you wouldn't be fucking working on it.
@HSVSphere For example, I had to figure out how to install IPX/SPX to play my favorite game with my friends. Every LAN party I had to troubleshoot the same kinds of problems I had to troubleshoot in my first job
@HSVSphere When I was young, I played games on the same computers found in a corporate setting. I learned useful skills without realizing I was learning while trying to play games. This is no longer true. The devices that kids use today are optimized for consumption not creation.