-Jack Woehr
When I first began programming, it was like putting a puzzle together and making it work. Nowadays, it's not so much making it work, as how I make it work.
I started at a two-year college to see if programming was the field for me. I took Fortran and then some C and liked it. If I had a craving to learn something on the side, I tried it out at home on little projects of my own. Eventually, I transferred to the University of California at Santa Barbara and got my CS degree.
My first job after graduating was in C++ for a large aerospace firm. They hadn't offered C++ when I was in college, so I went back that fall and took C++ as an extension course at my own expense. I realized that as soon as I graduated, I was already obsolete! I didn't have a moment to breathe. The next few quarters, I also took courses in multimedia and Visual C++. I hope to go back for my master's degree someday.
I had been thinking of leaving the aerospace firm because it was a little slow paced for me. I wanted to push myself to learn new things. So in 1994, I moved to Colorado.
I got on America Online and found Ciber (http://www.ciber.com/). I didn't understand consulting. When you're in school, you think you're going to join Microsoft or Hewlett-Packard, climb up the ladder and grow old there. That was the vision I had!
Ciber started me out at IBM on an internal C/C++ project. When that project ended, Ciber posted me to US West for a four-month TCP/IP sockets project. Then it was back to IBM for a large AIX and OS/2 C++ client-server project. I had done quite a bit of C++ by then, but the only GUI programming I had done was schoolwork in X Windows and Visual C++. Now here I was on a prominent team doing full-blown GUI development in VisualAge C++ with ICLUI class libraries on OS/2!
When I started on the project I rated myself below average in C++. I knew the syntax, but I realized that the idea is knowing how to design good classes. I didn't know how well I could design a class hierarchy. Now I feel that I'm above average at that. Add in the GUI aspect and I go back to below average. I could still learn how to do GUI better. But the biggest thing I've learned is that there's a huge difference between writing code and engineering software.
You can't get comfortable. I know people who moved into companies and thought they could retire from there. That's dangerous. The good point about consulting is that, as you switch from project to project, the consulting firm is telling you in advance what skills they will need on the next project and you must study and prepare yourself. The degree stays with you the rest of your life, but it's not going to keep you up to date!
I couldn't have worked so hard just for the money. The thing that makes the difference is that I like this stuff. It's like being given new toys all the time. People ask me, "What would you really like to do in programming?" It seems like I change my mind every time I try something new!
DDJ