Somebody I respect a lot on our team said something interesting the other day: paraphrasing, "parallelism is about taking one trick and applying it to as many things as possible." Well, what's the trick? The trick is breaking a problem into successively smaller pieces on which disjoint subsets of the overall computation can run concurrently. Pieces in this sense can be little bits of data or instructions, or both. It seems so obvious, but that really is all there is to it. That's not to say it's easy, of course, though some people believe it is. One of the nice things about PLINQ is that you express a big computation and we hide the tricks. But the tricks aren't impossible to do on your own... today, even.