One of my all-time favorite science fiction short stories tells of a group of space explorers from Earth who discover a world with only a single inhabitant. While they engage this
primitive in conversation, the adventurers are taken on a tour of a dead city. The explorers question their host about the workings of several items they find, but arent able to have their questions answered. Most of the time, the alien responds with, I dont know how that works, or I cant remember. The space explorers conclude that at one time, the planets natives were part of a very powerful race but over eons had devolved into primitive savages living in a world of relics they no longer understood. Having made that very convenient assumption, the Earth men decide to colonize the planet. On their way back to Earth, however, a giant image of the alien theyd met on the other world materializes in front of their ship. The image informs the Earth men that because of their aggressive colonization tendencies, Earth people will not be permitted to explore space. To ensure that this embargo is enforced, the alien sets up a force field around the Earth, effectively trapping humans on their own planet. Only then does one of the explorers understand what has happened. He realizes that when the explorers had asked questions of the alien, and the alien had responded with answers such as, I cant remember, or I dont know, it
wasnt because the alien was too backwards to know the answer. Rather, it is because the entire race of aliens had evolved into something greater than they were before! The explorer reasons that if a caveman was brought forward in time and asks a modern man how a match creates fire, the modern man would have to respond with an answer such as, I
dont know, because the modern man doesnt understand how a match works. He just knows how to use it.
Space and Beyond
I tell you this story to put the next one into context. Recently, I felt like I was being asked to explain how to create fire to a caveman. A friend of mine has a software development company and was working with a client who needed his AS/400 to exchange data with an S/390 in a distant city. Since no one at my friends office knew how to set up communications with the mainframeand they assumed I did (ha!)they called me. What they wanted was some type of asynchronous communication to transfer data back and forth, and they knew that TCP/IP was not an option. Not a problem, I thought. Ill just step back in time (and technology) a few years and implement an Advanced Program-to- Program Communications (APPC) connection over their leased line and use Intersystem
Communication Function (ICF) files and an LU 6.2 protocol for communication. It sounded easy, anyway. However, when I began to implement the connection, I suddenly began to feel like the alien in the previous story. I knew that this method of communication could be set up, and in fact, Id done it several times in the past. What I hadnt counted on was the fact that Id spent so much time over the last three or four years learning to use TCP/IP that Id almost completely forgotten how to do something as simple as configure APPC communications and use ICF files.
We finally got it set up, but it was a real battle trying to remember all the required steps. This also reminded me of the time I started to write an RPG IV program and realized that Id forgotten the syntax for the F-spec! At the time, Id been spending a lot of time programming in Java and hadnt touched an RPG source file in months. When it came time to start editing one, I simply couldnt remember how until I dug out the RPG manual and looked it up.
The Final Frontier
Over the years, Ive run into this type of problem many times. You learn how to do something well, and then you move on to other, more challenging areas, and before you know it, youve forgotten how to accomplish some of the basics. This brings me to the point of this piece. I want to suggest that you implement strategies in your own shops and individual careers to ensure that you dont forget the things youve learned before.
There are several ways to achieve this. First, it never hurts to documentand I know thats a dirty word to a programmerthe things you consider to be simple or self- evident. For example, you could document the steps for creating and using an ICF file. Once you do, store that document where its easy to retrieve again if you need it 10 years from now. You should make two copies of your documentation: one for your personal use, and one for your shop so that if you leave, other programmers have something to fall back upon should a problem arise. In other words, basic knowledge management!
You could also spend time on your own revisiting older technologies and maybe even writing a small application or two to use the technologies, just to keep your skills up. Other things you might consider doing include volunteering to speak at user group meetings on older or existing technologies and volunteering to teach younger programmers at your own shop. Remember, things you learned as little as five years ago may be completely foreign to programmers just starting out. They could really benefit from your knowledge, and, at the same time, you gain by revisting old information.
Despite the fact that IBM and everyone else is pushing you to learn Java, and every PC person you know is telling you that installing Linux is a must-have skill, you know that its the proven technologies such as RPG and backbone-AS/400 communications protocols that will keep the wheels of progress turning. You dont want to find yourself lacking in these basic skills simply because you prepared so much for the future that your forgot your own past.