1. Make it work 2. Make it right 3. Make it fast "Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet w…
The point of the statement is to not micro-optimize this and that corner of the program without having any data to guide you on what you should optimize and how.
It's not a rallying call to forgo all concerns about application performance and efficiency.
The mis-application of this quote is the root of all evil in modern software IMO.
It's why a chat program takes 500MB of RAM and why many programs take 10 seconds to load even though there's no technical reason they cannot startup instantly.
You should make it right and fast from the very start. You should not make something that "works" but is full of bugs and slow as hell. Like, that makes no sense at all. If it's full of bugs then it doesn't work. If it's slow as hell then it doesn't work.
1. Make it work correctly and efficiently (to a reasonable degree)
2. Make it even faster
3. Make it better