Being able to program a computer or create software is akin to knowing another language. This is not something that comes easily to everyone, and in the very beginning, it was nearly impossible for most to master.
There was no conception of computing in the worlds of our ancient ancestors. Their concepts of computing were limited to math skills, and the technology used was an abacus. Simple devices that used pegs and cams were later used to control movements, but this is a far cry from what the world is used to today.
Real computer programming can be traced back to the 1880's and the recording of data that was then read by a machine. This was accomplished using simple punched cards, and became the foundation of the data processing industry. In 1896 the Tabulating Machine Company was found which would later turn into a small company now now know as IBM.
Before the 1950's it was likely to find that each machine was using a different set of instructions, even when they served the same purpose. This was due to each program being painstakingly created individually, which led to slight variations from one machine to the next.
You could liken those early days to trying to use your beard trimmer without any real beard style in mind. You hit the power button, and get to work, keeping your fingers crossed that your beard will turn out all right. Programmers were working willy-nilly, making up stuff as they went along and hoping all went well. The only difference is that when you mess up with your beard trimmer you just shave off the whole thing, and wait for it to grow back. This haphazard method of programming led to expensive machinery not having available programming to make it run right.
1954 saw the introduction of FORTRAN, and the computer programming world changed for forever. This had an actual functional implementation, rather than just design on paper. Punch cards were still used, but as computer hardware declined in price, programs could have been created by typing them directly onto the computer. This led to editors that could make changes and corrections, and eventually moveable storage in the form of disks that let one program be installed on a number of units at a time.
We have certainly come a long way, although it is not unbelievably that 50 years from now, our grandchildren will be looking at our programming as if it is archaic. The technological age is in full swing, with changes and improvements happening every second. The next time you are frustrated about trying to read code, just remember the punch cards. At least today, programming is like trimming your beard, where if you mess up you just hit delete and start again.