We're going to hit the quantum wall and the end of Moore's "Law" soon. The signs are all around us: CPU manufacturers throwing more processors ("cores") into chips and systems, CPU clock rate increases slowing down year over year. You won't be able to just "throw hardware at the problem" any more, in the very near future.
So, what does this mean for programmers?
1. Parallel programming. You're going to have to figure out how to pull as much parallelism out of your problem (and spread that across all the CPUs you have to use) as you possibly can. However, there will always be an irreducible, non-parallel part of your program. That's the message of Amdahl's Law. Which leaves us with ...
2. Instruction-efficient programming for those non-parallel codes. We won't be able to make the individual CPUs go faster once we hit the quantum wall; all we can do is use what we can get out of the hardware as efficiently as possible.
Study your algorithms well, and learn assembly language, if you want your programs to run fast. Compilers still aren't that good (though I have no doubt that there will be a renewed interest in making them better so that all the programmers who can't grok assembly can still be useful; it's called "leverage").
Oh, and keep an eye on FPGAs - reconfigurable computers morphed for the problem to be computed might just be the next big thing.