I was recently showing some students the technique we call shuto mawashi uke, circular knifehand block. (Here's a page with a video of a Kyokushin instructor doing this technique, slightly different than the way I learned it in Seido but you can get the idea: http://www.ehow.com/video_2368639_do-shuto-mawashi-uke.html) It's an interesting technique because it has many different self-defense applications, but each one would require the technique be done slightly differently than the basic way it's practiced. It can be a block, a strike, an escape and reversal from a wrist grab, a takedown against a kick , but each of these options requires a bit of variation.
As a software geek, the situation reminds me of the concept of "abstract base classes" in object-oriented programming. As a classic example you might have an abstract base class in a graphics program for a "shape" which would define general operations, but you would never actually create a "shape" software object when running the program, you would create a "triangle" or a "square" or a "circle" -- in programming lingo, you would "derive" these concrete classes from the abstract base class. In the same way, the "abstract" version of shuto uchi uke defines a general pattern of movement, but in an actual fight you would use some variation of it.