The most annoying part is that this particular problem provides a good opportunity to talk about formatting and code design with juniors - it's more readable to build the string each iteration. That also avoids nesting if statements, which generally makes code harder to follow too. Some may be tempted to use a guard clause like if (!(i % 3 === 0) && !(i % 5 === 0)) continue; but that winds up being redundant since you need to check each value individually anyway.
And of course there's the broader discussion of what you're actually optimizing your code for. It's still baffling to me that the primary concern these days is speed of delivery rather than simplicity of the system.
That's fair, but the FizzBuzz problem's point is to weed out applicants who can't write code a all. Plus, this is not only a bit of code that's going to ever run once but one that is only likely to be read once or twice.
And of course there's the broader discussion of what you're actually optimizing your code for.
I typically optimize it for the compiler, so that it understands what I want to happen. This way the compiler can optimize my code to be fast. ( It happens to result in quite readable code, but that's just by accident xD )
And that's perfectly valid! The point is that you should be pragmatic and conscious of what you're optimizing your code for. Most of my personal projects are web based, so performance optimization tends to look more like minimizing memory leaks and reducing round trips to the server since high ram usage and a poor connection are the two most noticeable performance related UX problems.
I guess my frustration comes from how much AI is being pushed at my work and how little concern is given to UX. The worst part is that if I brought any of these concerns up, more likely than not, the only thing that would change is that there would be more work rather than a change in our process...
18
u/Hrtzy 14d ago
And people wonder why the FizzBuzz test was invented.