Optimal way of making timed code

isn't it pretty common for motors on a robotic arm, for example, to have to move in unison, but moving a different # of steps and all reaching their endpoints at the same time? you just need the appropriate delay between each step on each motor.