How to properly make an object to follow a path?
Left follow path without empty
right follow path with empty


General steps


create a path
create an object

2.1 If you are going to use an empty you can use any,
   usually to avoid complicate things selected PLANE AXES   
select path
enter edit mode
select a point where you will start to follow the path once selected

5.1 press SHIFT + S and select cursor to select

5.2 pres enter or LMB
exit edit mode
select the object
press SHIFT + S

8.1 select to Cursor Offset

8.2 pres enter or LMB


This is where the road bifurcates into 2, without empty object and with empty object

follow path without empty


select the OBJECT that the route will follow (child)
select the PATH that the route will follow (Parent)
press CTRL + P and select Follow Path
go to the timeline and press play to get the animation


follow path with empty


select the OBJECT that the route will follow (child)
select the EMPTY PLANE AXES that the route will follow (Parent)
select the EMPTY PLANE AXES that the route will follow (nao is a child)
select the PATH that the route will follow (Parent)
press CTRL + P and select Follow Path
go to the timeline and press play to get the animation


NOTE: for the example with empty change the point of origin of the mesh to the tip of the arrow and in the example without empty the point of origin of the mesh to the tip of the arrow continued in the center of it



NOTA:

WHEN YOU DO NOT USE THE EMPTY THE OBJECT IS SUFFERED TO DEFORM A LITTLE OR MUCH ACCORDING TO THE ANGLE OF THE CURVES OF THE ROUTE,
when you do not use an empty the mesh that follows the route tends to deform a little or a lot depending on the sharpness of the angles of the curves of the route and usually turns in directions that are not planned

use an empty between the object and the route helps control this and prevents deformation of the mesh

observe the image well and see the detail with both arrows one with empty and one without empty