I have seen more systems struggling because of wrong code than slower ones. The fact remains, most engineers optimise too early.
About 8 years ago, my principal engineer once told me: Performance is almost always the last thing you should be thinking about. As an SDE-2, this did not make sense :) After a few follow-ups, I understood why he meant that.
The order that actually matters is this. First, is the code correct? Does it do what it is supposed to do? Second, can someone maintain it six months from now without wanting to quit? Third, is it fast to read and write? Only after all three does performance even enter the conversation.
The reason this order exists is simple. A fast, unmaintainable codebase is a liability. A performant-but-wrong system is worse than a slow, correct one. You cannot optimise your way out of a bug.
Now, this is not universally true. Databases, high-frequency trading systems, and real-time embedded software are domains where performance is a first-class concern from day one. But those are the exceptions, not the default assumption you should bring to every PR.
What is certainly true is that for most codebases, premature optimisation adds complexity, reduces readability, and solves a problem that does not exist yet.
So, write correct code first. Then clean it. Then, only if the profiler gives you a reason, make it fast.
On racism: Do you remember how during the World Cup game @imVkohli coaxed the Indian crowd not to boo @stevesmith49 (on Sandpaper Gate) - Virat in fact gestured to the crowd to applaud Smith. Can’t Australian players do the same in Sydney? #SydneyTest#racism#IndvsAus#Siraj