I disagree, you can choose a machine/configuration that exceeds your needs now, but may not in the future - that's future proofing. This will delay any possible computer purchase because the machine was configured correctly.
This might have been true some time ago, but I don't think it still holds nowadays. Imagine you have the choice between CPU A and CPU B, where B is 20% faster than A. Is B more 'future proof'? Well, no, its not! By the time A will start struggling with every-day software, the 20% will not make any difference. In another words, B will stay adequate just as long as A stays adequate. They will both be outclassed at around the same time. I don't see any point in paying a substantial premium for 20% CPU speed that you will not need now, when after 5 years even the cheapest CPU is likely to be twice as fast anyway. Even more, future software might take advantage of new CPU/GPU features (unified memory, new SIMD instructions, cache-optimised gather/scatter) which will leave the current gen in the dust. E.g. an entry-level dual-core AVX-512 CPU will be faster for audio/video/numeric operations than a quad-core Haswell.
A relevant practical example: the top-of-the-line 2009 MBP CPU (T9900) is slower than the entry-level ultra-low-voltage 2011 MBA CPU (i5-2467M). If someone would have payed almost $3000 for that MBP configuration to 'future proof' it man, that would have been a huge waste of money.
I have a 15'' rMBP 2.5Ghz and I'm a computer science major... I'm guessing my MBP is probably overkill for my needs? Doesn't some programming need more power?
You don't need any processing power for programming. Of course, with so many development tools being hopeless resource hogs (*cough* Eclipse *cough*).