How to make my object to rotate where it's going to be?

I created a really simple program that makes an object follow some waypoints, but when it goes backwards-for example- it does the moonwalk, always with the same rotation.

Do I have to modify it in every waypoint?

Vector3 dir = target.position - transform.position;
transform.Translate(direction.normalized * speed * Time.deltaTime, Space.World);

Thanks

ummm, this has been posted elsewhere already but, try using

 transform.LookAt( VectorDirectionToLookAt );