Technologist, maker, tinkerer, father, husband, terrible wood worker.
I thrive on challenge; the more difficult the problem the more I am drawn to it. My path to the world of programming was an odd one and is, at best, a long story. To give you, my dear reader, some understanding of who I am, you need to know part of this story. So, grab some coffee first and read on - if you dare.
I started out as a translator/interpreter at Yanagawa Seiki (YSK), an auto parts manufacturer, in Chillicothe, Ohio. I spoke fluent Japanese (a prequel to this long story). When I returned to Ohio from my two year stay in Japan, YSK had just opened in Chillicothe and were looking for translator/interpreters. So, it seemed like a logical step to apply for the job. A Just In Time (JIT) manufacturing shop, YSK did not waste resources, time, or people. When I wasn't translating or interpreting, I was performing data entry - primarily for shipping and receiving and other inventory related data - into our IBM Manufacturing Accounting and Production Information Control System (MAPICS) on the AS/400. Data entry made me curious. What is happening when I hit these buttons? What magic is on the other side of this keyboard that makes things work?
"What are you going to do? Learn to program?"
One day, I saw the System Administrator placing dozens of large binders into the trash. When I asked about it, he told me that they'd just received updated manuals to go with the updated system. The manuals were for the Report Program Generator (RPG) and Job Control Language (JCL) languages for the AS/400. I have no idea why, but I asked if I could have them. He chuckled a bit and asked,"What are you going to do, learn to program?". I quickly responded, "Yes". He laughed a bit more as he walked away, "Knock yourself out kid...".
I had no idea what I was doing. It wasn't like I had an AS/400 at home. These things were huge and very,very expensive. So, I started where any learning does - reading, and asking questions. I read those manuals day and night. When I didn't understand something (which was a lot), I asked the System Administrator at work to help me understand. If he didn't know or wasn't in an explaining mood, I'd ask the IBM consultant that came to visit every month or so. For the most part, all of the code in the manual were basically fragments, they expected - and rightly so - for the reader to understand the context around the fragment. For me this was frustrating because I could get nothing to compile. Putting the operation codes in the right positions, defining various structures, all of it was foreign to me. But the puzzle of it all just made me try that much harder to figure it out.
But then, one day, it happened. I had written a program that not only compiled, but successfully executed! At that moment, a light bulb went off in my head and an entire world of possibilities came to light. This is where speaking Japanese really, really came in handy. One day, I was interpreting for the CEO and he was asking for a "Fuka Kachi" report. In any language, there's a difference between daily use vocabulary and specialty words. I had no idea how to translate the concept of a Fuka Kachi report, so I asked him to explain what it was. Long story short, it is an "Added Value" report. The CEO wanted to know if we could get the data from the MAPICS system to create such a report. Having done data entry for a while, I knew that the data was there, and having written a few successful programs by this time, I was reasonably sure I could get the data and create the report.
I waited for the people the CEO was talking with to say whether or not they knew of or could get the data. They did not know. Breaking somewhat with interpreter protocol, I became part of the conversation. I told him the data was there and that I could get it. After a moment of stunned silence he asked, "Aren't you a translator?". I told him I'd been doing data entry and some programming as well and that I could get the data. Still a bit shocked, he consented - but I could tell he doubted the veracity of my claims. Frankly, so did I; but, without challenge there is no growth.
After a few weeks, I did it. I was able to find the data, write the programs needed to interface with the system to pull the data out and create the green bar report the CEO wanted. He - as well as my boss, several bystanders, the System Administrator, and myself - was pleasantly surprised. From there, I began taking on more and more programming responsibilities culminating in a system that predicted the type and quantity of components received based on the lading number patterns of past data entry. The program took in the lading number and output to the screen the components typically associated with the numbering scheme as well as the quantities received on the appropriate day of the week. This program reduced my data entry time from around 4 hours to roughly 15 or so minutes throughout the day.
I was completely, and entirely, in love with programming and I was hungry for more. I left YSK soon after for a fulltime programming job and I kept learning from others, as well as books, along the way. Pascal, C, C++, DBase, PowerBuilder, Java, Clipper, ASP, and more - I learned them all and wrote components, modules, and architected entire systems using mixes of technologies as appropriate. Eventually, I reached a point in my career that although I had a lot of experience, I did not have a degree, so my options were becoming limited. I decided to go back to college - I had a few quarters at the Ohio University of Chillicothe under my belt before I had moved to Japan so many years earlier - but no appreciable progress towards a degree. I had a fulltime job that I was working between 60-80 hours a week at, a wife, and three kids when I enrolled at the University of Phoenix. After a year there, I moved on to DeVry University and in 2007, I finally earned my Bachelor of Science in Computer Information Systems degree - and our fourth child was born about 6 months before I graduated.
"Dave", you say, "Why did you bore me with all of this, you braggard!" Well, basically it is a simple love story. Boy meets computer, boy learns to program computer, boy falls in love with computer. Also, to prove a point. Nothing, and I mean nothing, is out of your reach if you put your mind to it. I know that is often taken as a platitude, but I am living proof that this is true. I had no background in computers, no AS/400 in my house (no one probably did back then), no reason to think I could understand how to put the RPG code fragments together into a working program and use it - or at least my approach to learning the language - as a sort of Rosetta Stone for the languages that followed. But, I was determined, I was eager, and I was in love.
Decades later, the love story continues. I still have that same thirst to learn new languages and technologies and I apply them in my personal and work-related projects whenever it makes sense.