It's not engineering if you're just guessing as to what is degrading the performance and what might improve it.
> It's not engineering if you're just guessing as to what is degrading the performance and what might improve it.
Engineering is literally the art of making educated guesses and then testing/proving/disproving/improving upon them. Nothing is exact. Everything is approximate. Iterate until the result is good enough.
If you can identify gradient (what direction your change will impact the ultimate goal), then just repeating the process (or reverse-process) can find local maximum.
Still it can be a software engineering if the gradient candidate / measuring gradient / repeat process can be done at scale.
The GP didn't wrote "guess" and "eyeball", but "measure", "evaluate", "understand".
Reading comprehension 101 is a prerequisite for doing engineering, too.
Referring you back to this evergreen comment:
https://news.ycombinator.com/item?id=44978319
"Most classical engineering fields deal with probabilistic system components all of the time. In fact I'd go as far as to say that inability to deal with probabilistic components is disqualifying from many engineering endeavors."