Scott Hanselman recently posted his story about how he became a software developer. This is mine.
I was in debt. And I needed money.
When I was in my early 20’s I didn’t have much going for me. I had quit high school in the 10th grade and mainly worked in the fast food industry. I didn’t have much money, but I wanted stuff—so I use credit cards heavily. I got in over my head really fast.
I had been toying with school. I was half-assedly pursuing a philosophy degree, but I wasn’t really putting the effort into that that I should have been. I was unhappy, alone, and going nowhere fast.
At 25 I had a realization—if I met the kind of woman I wanted right then, she would want to have absolutely nothing to do with me. It was a slap in the face. I had this high standard that I expected my future romantic partner to live up to, but I had done nothing to merit her attention. I was a loser.This was my way of judging myself by my own standards. Something had to change.
I had recently seen an article in the newspaper about a high school kid making $50k/year building websites in his spare time. This amount of money seemed unfathomable to me. With that kind of money, I could pay my debts and be on my way. This encouraged me to take some programming classes at the local community college. I had to make some arrangements with my employer so that I could leave work in the middle of the day for classes. I would get to work at 8AM, leave for class around noon, and come back and work until midnight or so. It was hard.
I struggled with nested for-loops in the bubble sort algorithm, but I had a knack for organizing my code in a readable fashion. I managed to get through QBasic, C, and Visual Basic before I decided to submit my resume at the school’s job board.
I got lucky.
It happened that a local company was looking for someone that they wouldn’t have to pay very much and that they could train to work on their software. I had a message on my answering machine from Benny when I got home from school that day.
We scheduled the interview and I showed up with my code-sample—a windows form with a set of radio buttons that toggled an image of a flag for an associated country. I knew it wasn’t much, but I wanted to show that I could do something. I think Benny barely looked at it. The interview actually went well. Benny gave me an overview of the application we would be working on. Their customers were the fast-food industry so my experience there would help a little bit. At least I understood the business domain. After a little probing about my skills, we started talking about “South Park” for another 20 minutes or so. A friendship was born.
Apparently they were desperate. One of my competitors for the job had picked a fight with the secretary before the interview even started! Benny called me a couple of weeks later to tell me that I got the job. I was desperate too. The money wasn’t much—in fact it was a pay cut for me since I would be salaried without overtime compensation. I took the job.
Working with Benny was a revelation. He knew that I didn’t know much, but he also knew that I had a brain in my head and a willingness to learn. He was patient with me while I applied myself and learned to be an effective contributor to our application. My skills grew over time and inside a year I could add to the system almost as easily as he could.
It was 5 years before I managed to pay off my debt. In that time I had learned much about software algorithms, patterns, and practices. I had started my first steps down the road of agile software development practices. I was reading everything I could get my hands on about better ways of writing and managing software. I was evangelizing what I had learned to my co-workers. I started down this path to find a way to pay my bills without filing for bankruptcy. What I found was a passion for a profession that I’m actually pretty good at, and a great new friend.
Benny and I are still friends to this day. We’ve moved on to different jobs, and I moved 3000 miles away to Seattle (I’m hoping to convince him and his wife to move out here!) I shudder to think what might have happened to me had I not been lucky enough to get my start in this field. Getting my foot in the door with him is one of the greatest things that’s ever happened to me.
My girlfriend Emily was recently accepted into a graduate program at Marymount University in Arlington, VA. Through the efforts of a diligent recruiter at Apex Systems I have accepted a position at USIS in the Vienna, VA area. This will be a big change for me. Not only will it mark the first time I have lived away from upstate South Carolina, it will also be the first time I've lived and worked in a metropolitan area the size of DC.
We have found an apartment in Annandale which is merely outrageously expensive (or in DC area terms, "cheap"). I am looking forward to attending the capitol area .NET developers group, as well as touring the homes of some of the nations' founding fathers. Once I finish my degree, I intend to begin taking guitar lessons and finding ways to be useful to the Ayn Rand Center.
My new job will most likely focus on web development. I'm looking forward to dusting off my ASP .NET chops and giving them a much-needed upgrade. I'm also hoping to be able to do more experimentation with Silverlight and oData. My primary hobby interest at the moment is in fluent api's. I'm getting much better at defining the API I'd like to have (yodelay has a recent example of that; see the “Require.That... api” in the Validation namespace), but I still lack the skills needed to bring the more complex API's into implementation. Perhaps I'll meet some devs in DC that can help me with that.