Photo courtesy of Rethink Robotics.
As robots get smarter and more capable, they should become harder to program. The opposite is the case. Older robots needed specially trained engineers to program them. Modern robots have simplified programming and graphic HMIs [human-machine interfaces] to make programming accessible to non-specialists. Vision also makes high-precision programming less critical since the robot only needs to go to an approximate position.
An alternative with some robots is teaching. To teach a robot, the operator puts it in learning mode and manually moves it through the task. The cobot Baxter from Rethink Robotics is one example (pictured above). Once complete, the movements are stored in memory. The robot remembers, and can repeat them infinitely. Back in run mode, the robot can repeat the task perfectly every time.