The three main robot programming methods are teach pendants, offline programming through simulation, and teaching by demonstration. Teach pendants allow precise positioning through numerical coordinates but disrupt production. Offline programming reduces downtime but the simulation may not perfectly model reality. Teaching by demonstration is intuitive like moving the robot manually but is not as precise as teach pendants or good for algorithmic tasks. The best method depends on the specific task, robot, and programming needs.