One reason why it takes several days might be due to launch inaccuracy: there are always small errors in the orbital parameters just after launch, so you probably want to allow for some time to adjust the orbit with small burns. Another reason might be procedural, you might want to do some potentially dangerous checks of your vehicle before you come close to the ISS. As an example of how short a rendezvous can be, the Russians recently launched and docked a Progress freighter in six hours (instead of the usual 2 days), they plan on doing this in future with the manned Soyuz.
There are two ways to write error-free programs; only the third one works.