Asaf Shelly has written a thought-provoking blog post on the Intel Software Network site about parallel programming, which has resulted in a few interesting comments. In his post, Shelly argues that user experience is the end result of programming and that parallel programming is just the way to achieve it. While parallel programming defines what the code does, the user experience is all about how the application behaves.
This is an important distinction, because it is the user experience which will be used to judge the quality of an application. Users want applications to run quickly and to be responsive. All the clever parallel programming is hidden from the user.
Occasionally, parallel programs will perform less well than their serial versions because of the synchronisation overhead of managing parallelism. Small differences don’t matter too much (although even a tiny delay in a regularly used button, like the Save button, could be frustrating). But if there’s a significant difference, which version should be released? The parallel version might be more architecturally sound and might scale better in future. But having read Shelly’s blog post, I’ve reached the conclusion that what matters most is the user experience today. Users are less interested in having a program that will run well on a future hardware architecture: they want something useful now.
Perhaps there are some limits on which applications should be parallelised today. Or maybe poor parallel performance is just a cue that you haven’t finished programming yet…