I wanted to become a software developer from the time I wrote my first “Hello World” app in 9th grade. After graduating high school in 1985, I entered the University of Maryland’s Computer Science program. It did not go well. I completed only four semesters of college over the next five years. My dream of becoming a professional developer faded. In 1995, nearly ten years after high school, I finally landed my first paid programming job. Here is how I did it.
A lot happened to me in the decade between high school and my first programming job. The highlights, in order were:
- Started and dropped out of college twice.
- Helped manage two local pizza delivery chains, neither of which was a Dominos.
- Sold high-end TVs and audio equipment at a local AV chain store.
- Created and folded three companies: desktop publishing, wedding photography, and business equipment refurbishment.
- Packed up and moved from Maryland to New Hampshire to “start over,” leaving behind my former life as a devout atheist.
- Got a job at a New England-based Apple Macintosh dealer.
- Met and married a wonderful woman and began a life together.
Before I moved to New Hampshire, I had already arranged for a job. I started as a retail sales rep at Computer Town in Nashua on July 27, 1992. We sold the complete line of Apple Macintosh products. System 7 had been released just over a year prior. Though Macs were starting to become popular, Windows 3.1 still held the lion’s share of the PC market.
I quickly learned all I could about the computer business and our product lines. I leveraged my experience refurbishing business equipment into a thriving used Mac business in an unused room on the second floor of our store.
Due to being consistently one of the top sales reps in our location, I was selected as one of the few to represent the company at MacWorld Boston every year, and MacWorld San Francisco the one time we attended.
I enjoyed my time selling computers, which helped me hone my skills working directly with people. In the back of my mind, however, there was still an emptiness. I never shed the dream of programming computers for a living. During my spare time, I learned all I could about how to program the Macintosh computers I sold.
Did you know that Apple had a Unix-based operating system before OS X? It was called A/UX and was based on UNIX System V Release 2.2. It looked like System 6 but had a real Unix core under the covers. Naturally, the geek in me needed to run this OS. I bought a copy and installed it on the Mac Quadra on my desk at work.
One of my more ambitious projects was when I created my own customer management application in Filemaker Pro, a powerful (at the time) database system. I used it to help me communicate with my repeat customers, track sales, and generally provide me with an excuse to do some level of programming.
Who remembers Code Warrior? It was an integrated development environment (IDE) for building apps on the Macintosh. I bought a copy as soon as I could and started writing Pascal and C programs.
One day I was perusing job listings on nh.jobs on usenet using a text-based news-reader. Netscape Navigator was brand new and most internet tools were still text-only. I stumbled upon a job post for a Junior Programmer in Nashua. The body of the post mentioned C experience but indicated that most relevant technologies would be taught on the job. I was intrigued. Could this be my chance to become a paid software developer?
Back in those days, most job posts of this nature were created by the company or even the person doing the hiring. Email spam was also not a huge issue, so most people simply included their email address right in the post. That was the case here. I quickly sent an email referencing the job post. I briefly described myself as a hobbyist programmer who had been self-taught since 1981. I ended with the question, “what do you consider a ‘junior programmer?’”
The hiring manager emailed me back almost immediately, describing what he meant by junior. As I recall, the company was looking for someone they could teach application-specific integrated circuit design using VHDL. The only qualification he really wanted was some programming ability. He asked me if I could implement a doubly-linked list with operations to add and remove elements. I accepted his challenge, wrote a short command line program in C, and sent the source code to him a few hours later.
He invited me to his office for an official job interview. At this point, I was still feeling a bit nervous. I was not sure I was ready to leave the known for the unknown. I discovered the biggest hurdle I would face during the interview.
As I mentioned, the company made integrated circuits using VHDL, a language I had never heard of. The manager gave me a brief overview and it looked pretty straightforward. Two things gave me pause:
- The entire company was on Windows. I had never used Windows before in my life. I had been a die-hard “Mac guy” since college.
- The salary was fully 20% lower than I had been making at Computer Town.
They offered me the job, but I told them I needed to discuss it with my wife. She and I decided that taking a pay cut at this point probably made sense, as it would lead to better opportunities in the future. We suspected there was not much room for growth in retail.
Our decision made, I emailed the manager that I would accept their offer. The next day I gave my two-weeks’ notice to my manager at Computer Town, and started the new job less than a month later.
As it turns out, the job only lasted a few months. I quickly discovered a blind spot for hardware programming. Although the syntax of VHDL was straightforward enough, programming ASICs was very confusing to me and unforgiving. Something about the process eluded me. Perhaps if I were to try it again, with 25+ years of experience, it might not seem so bad.
One day my manager and the owner invited me into a conference room for a brief meeting. The owner asked me how I thought things were going. He knew things were not going well, and I confirmed it. He made me an offer that seemed odd at the time. If I chose to resign immediately, the company would provide me one month’s pay, and cover the cost of my health insurance for the rest of the year. As it turns out, resigning prevented me from filing for unemployment benefits. It did not matter, as I found a new job just a few weeks later.
As we were wrapping up, the manager had a final piece of advice for me. He suggested that I might want to consider a different career and give up my dreams of being a professional software developer.
Though my first real programming job was not the tremendous success I had hoped, it nonetheless served a valuable purpose. It changed the course of my career and my life. And I learned some things that I have tried to keep in mind ever since.
- Always keep learning. Had I not continued to learn and behave as a programmer, I would never have been able to land this job.
- Sometimes you need to take a step backward. Taking the pay cut was briefly painful, but having a real programming job on my resume opened doors for future opportunities.
- You may have to cut your losses. The job was not what I had hoped it would be, and I was not what they had hoped I would be. In the end, we were both better off cutting ties after only a few months.
- Always be on the lookout for opportunities and be willing to jump when they appear. Shortly before I lost this job, I had run into one of my Mac customers at Computer Town. He told me to call him if I ever wanted to be a Mac developer. After I lost this job, I called him and let him know what had happened. He offered me a job on the spot, at a salary a little higher than I had been making selling Macs.
- Take other’s advice with a “grain of salt.” Had I listened to my manager’s advice to consider a different career, I can only imagine where I would be today. I am sure that I would not be midway through my third decade as a software developer, and it can be assumed I would not have the Most Magical Job on Earth.