I started programming in high school before the age of the PC. At that time, the only computers available were the main frames and smaller minicomputers. The minicomputers of those days started in price in the hundreds of thousand dollars, not something the average adult, let alone teenager, could afford. I was lucky in that I had access to an IBM 360 mainframe computer through an Explorer Scout Post sponsored by Raytheon and that our high school hosted the minicomputer for the town. I took to programming as a duck to water. I took all the computer classes that my high school had to offer, Fortran IV, Cobol and Neat/3. The last one was the assembly language for the NCR Century series computers. NCR is the National Cash Register company; we never did find a cash drawer in our NCR computer.
Explorer Scouts, a branch of the Boy Scout for older teenagers, was where I truly learned the art of programming. At Raytheon, the men who ran the Post, taught me some of the most valuable lessons in programming. The first and most important one was that on one hand you had what the book says and on the other hand you had what really was necessary to get the job done. I also learned how computers worked on an abstract level of CPU, registers, memory and devices. I also learned how to type because most of the programming in those days were on paper cards.
Over the years, I have picked up new computer languages whenever the opportunity arose. My first languages were procedural languages such as Fortran, COBOL, Basic, Pascal and C. I made transition to object oriented programming with C++ and later with Java. On top of that, I picked up scripting languages on UNIX, SQL for databases, HTML for web work. Each language was designed for a particular need. Knowing what those design parameters were makes it easier to choose the proper language for the task at hand.