It’s hard to really know, especially at 21. Expect to do a lot of jumping around. And more jumping around. And more and more until you finally ‘self-actuate’, whatever that means.
I started programming computers around the age of 8. I would pick up BASIC books from the school library and type them into whatever computer I could find that ran BASIC. Eventually I took a Pascal class in middle school, and learned basic web development in high school.
My meteoric rise ended abruptly when I took on C++. I found it too difficult to get on my own. Plus I didn’t really have any aspirations at that point of being a programmer. Tech was a hobby and I didn’t want to turn my hobby into my job. I’d seen way too many miserable adults to want to do that to myself.
So I joined the Air Force. I went in for intelligence, but ended up in avionics maintenance. I came to hate the armed services and managed to wriggle my way out just before the wars in Iraq and Afghanistan kicked off.
I moved to the city and started doing construction work. It was never something I took seriously and eventually got sick of it after a few years. My father was an electrician and I learned the ropes with him. At one point I did low voltage wiring, which is about as different from regular electrical as C++ is from Ruby.
At some point in this whole thing I got a job as a Systems Engineer / Help Desk for a small IT outsourcing company. I would normally work in the datacenter and occasionally make client calls.
After I burned out of construction, I finally decided to give coding another shot. This was before shows like the Social Network made Silicon Valley really popular. I just wanted to make money using my mind rather than my hands. Turns out I have a talent for it, who knew?
While I was traveling one day I decided to learn how to do modern web development. I taught myself Sinatra after deciding Rails was too hard. I came across Ramit Sethi at this time and used his material to get into freelancing. I built a few small projects for a client I’d worked with at the outsourcing company.
I had been going to a coffee shop for years, and I’d met a really good designer who is somewhat known in his field, and he would give me technical work to do. Eventually he had a big project come up that he needed a programmer for.
It didn’t take me long to realize that if I had to have a job, coding was what I wanted to be doing at that job. But of course there’s lots of different kinds of coding. At first I took any job that I could get, I somehow got it in my head that I couldn’t get a job with the tech I really liked.
My first full time coding job was with .NET. They let me go after three weeks and it was a blessing in disguise. My resume at that point, with both the Air Force, the outsourcing firm, and the big designer project looked a lot better than I thought it did, so I aimed low. As a result I’ve been able to easily find jobs, but would burn through them pretty quickly because I wasn’t challenging myself.
I found myself working for Panasonic as a Test Engineer. I didn’t realize what a Test Engineer did and when I did I hated it. The shop chief luckily wanted a web developer more than he wanted a test engineer so I built him a web based system to help administer test resources.
While doing this I was talking to a recruiter who found me a real, full-time job with a corporation with health care and everything working with my favorite technology stack, Ruby on Rails. I felt like I’d won the lottery.
A year or so in I found Hacker News and came to find out that Rails guys are rare as hen’s teeth in my job market and that I was getting severely underpaid. I leveraged not one, not two, but three significant pay raises to address the discrepancy between what I was getting paid and what I could have gotten paid somewhere else. Basically I found my cojones.
I decided to be loyal to the company and not just jump, I liked them and didn’t want to leave them in a lurch. I liked where I was and didn’t really see a reason to leave.
They eventually decided to re-platform and were somewhat surprised when I told them it meant I needed to leave the company. While other devs I knew were busy jumping stacks, I was the weird guy who wants to stick to one stack. Come to find out this makes it much easier to demonstrate competence in a job interview.
My loyalty made an impression and I got a really sweet severance deal. I found a new job long before my compensation from the other job ended. As of this writing, I still have one more invoice to send them.
Now I work for a consulting company on a high-visibility project for CNN. It’s pretty much my dream job, but I knew eventually it’ll be old hat and it’ll be time to look for bigger challenges. With the new job came another massive pay bump and I am just happy as a clam.
Advice to you, is to not sweat not knowing what to do. Just pick the most interesting opportunity and jump in with both feet. If they won’t have you, just pick the next most interesting. Whatever it is, do your absolute best and never look back.