Earlier quoted context omitted.
>programmers vs cpu design You went a bit too far. I'd presume a lot of programmers do know CPU architecture well. While not common some of them to work on boring web platforms, some still do. Also most CPU architects would be decent programmers to begin with. Programming has not changed all that much and it was not so long time ago that programmers routinely knew assembly and how many cycles (and bytes) each opcode…
In all of those examples, its possible the person DOES have a good understanding of the adjacent domain. And in all examples, it is possible they will miss some subtleties, but people will give their opinions a lot of weight. Just as an example I see a lot: branch prediction. Some programmers don't know about it at all. Many do know about it, but think that it still works in some form like "assume the branch will go…
More like history, where the call comes from. Oddly enough the price of branch misdirection has become lower as not the entire pipeline needs to be thrown away but also due to hyper threading taking the slack.
Flip note: with 'recent' developments of Spectre, one'd think branch prediction got into the lime light. Truth be told, though, not many would be able to write constant time 'fizz buzz' (can try it on your own, bonus points to having constant time int->string conversion)