Sounds like your first experience with a mechanical encoder. Optical encoders are a little easier to deal with, but mechanical encoders need debounce. This limits the speed you can turn them but works well for UI applications.
Here is some great info on debouncing...