| ▲ | bunderbunder 2 hours ago | |||||||
I’ve had code review pushback against reorganizing data structures to be more cache-friendly on the grounds that it was “premature optimization” even though I pre-emotively justified the decision with benchmark results indicating that the performance difference was large and business relevant, and addressed a real performance bottleneck that I observed during testing. This was on a team and at a time where Clean Code was very popular. I somewhat wonder if the problem is that, in the 2010s, many people became convinced that certain aesthetic standards were both objectively, provably correct, and more important than anything else. | ||||||||
| ▲ | hinkley 15 minutes ago | parent | next [-] | |||||||
A lot of my poor opinion on developer opinions dates back to a couple projects where Product and Marketing were begging us for substantial performance improvements and the teams pushed back saying this was as fast as you could expect. I got 2x in the first six months on both projects, and delivered 25% per quarter on one for almost 2 years (that maths to around 8x) before I started to scrape the bottom of my barrel. It’s predominantly a way to shut down thinking, which is why it’s so often misquoted. Knuth’s version is more nuanced. Theirs is not at all. As a compromise I got really good at doing optimizations that also improved readability. Things like hoisting and better variable naming combined together can be mistaken for just code cleanup. I also discovered that keyhole optimizations are more palatable. Which is to say, move the slow bit yo a separate function with a single responsibility. Then do the optimization in a separate commit. Then the other devs don’t have to look at your changes and if they turn out to have a bug, we can always revert the change later. They almost never do, but having the option seems to grease the wheels. | ||||||||
| ▲ | clivedup 29 minutes ago | parent | prev | next [-] | |||||||
There's not enough context for me (or other commenters) to really evaluate this, but every change has risk, and some projects aren't in a position to be accepting that risk. A "real performance bottleneck that I observed during testing" is a little bit unclear whether it occurred outside of test conditions, or whether speeding up that particular bit improves anything anyone cares about. | ||||||||
| ▲ | plasticchris an hour ago | parent | prev | next [-] | |||||||
That’s just pattern matching. Most people don’t do this level of prep so they assume you didn’t either. There’s usually no ill intent, and people are maybe a little embarrassed when you point it out, but t if you are tactful it’s fine. | ||||||||
| ▲ | Gibbon1 26 minutes ago | parent | prev | next [-] | |||||||
Processors I mostly write firmware for have little cache at all. I think cache friendly code also tends to be reason about friendly and debugger friendly. None of that is remotely premature optimization. | ||||||||
| ||||||||
| ▲ | sick_of_slop 2 hours ago | parent | prev [-] | |||||||
Before AI, nobody has been responsible for more psychic damage against software developers than Bob Martin. | ||||||||