you can either code fast or produce fast code. You cannot do both.
All frameworks, libraries, ORMs, no code movement aim to allow you to code fast, not necessarily produce fast code.
Understandably so, we live in an age where we are expected to ship fast, we have stakeholders to satisfy. we call always improve quality and performance later. Heck we got used to ship with day 1 patch.
It is wise to ship fast because the market expects it. And to ship fast you have to code fast and to code fast you have to write less code. Or (god help us) you can use AI to write the code.
But, when you write less code, you didn’t really write less code, you simply hid a large piece of code under the carpet and exposed it behind a simple API call. You abstracted away complexity, which eventually leaks in all sorts of nasty ways. Large CPU usage, large memory usage, large disk usage, slow running operations, and if you are on the cloud that translates to a large $$ bill.
You can either code fast or produce fast code. You cannot do both.
I understand why frameworks advertise how fast it is to spin a web server with their product. They truly know how complex web servers are (because they had to wrap it all away) but they have to do this to sell.
Honest frameworks will say hey, we know this stuff is complex but we made it easy by creating these abstractions and used some defaults. However, please consider looking at those defaults values and change them for your use case. We had to pick defaults that fits all but we don’t know your use case.
My advice to software engineers, understand what you use.
For example, if you want to use a Node or a Bun web server, please consider writing one using C first as an exercise.
You will appreciate the framework 10 times more. You will even ask the framework maintainers to expose this and that configuration to tune your web server. You will ask for details doc of how the framework handles connection acceptance and request reading. And whether the number of SO_REUSEPORT threads can be changed.
Web server is just an example, this applies to any code.
If I would summarize this, understand the code, even if you didn’t write it. Maybe then you can code fast and also produce fast code.
And by fast code I mean efficient and fast.