How to Get a Job As a Programmer

Programmers, Web-Developers, Software Engineers etc. are in extremely high demand right now. Tech is one of the few sectors of the economy that isn't struggling right now. In fact, one of the only things keeping more tech companies from growing faster is the lack of skilled engineers in the U.S.

This means that if you are interested in beginning your career as a programmer, now is a great time to start... As there is a scarcity of qualified applicants, you can probably convince someone to take a chance on you if you can demonstrate that you are committed to becoming a programmer. This also means that there are many paths to getting your first job, but I can tell you what worked for me.

Learn the Basics

If you really don't know anything about web development, you'll have to start at the beginning and learn how to build a static site using HTML and CSS. These skills are considered very basic, so learn these well enough that you can style a page without having to Google too much.

Learn Some Programming

When your brain can't hold anymore HTML or CSS, it's a good time to work on learning a real programming language (HTML is technically a scripting language). Ruby or JavaScript would be good choices for a first language. You'll probably agonize over which language to learn first and people will tell you that it really doesn't matter, and that it's more important that you learn one well, since the principles will apply to any programming language you decide to learn in the future. That said, here are some reasons to consider each:

  • Ruby

    • Ruby has a simple syntax and is considered fun to use by programmers.
    • Ruby is a very popular language, so there are tons of learning resources available on the internet to help you learn.
    • Learning Ruby is a great idea if you are interested in becoming a Ruby on Rails developer (for which there are currently many jobs).
  • JavaScript

    • Some basic amount of JavaScript knowledge is necessary to program for the web, as it's the only language that runs in virtually every web browser in the world.
    • Since the introduction of Node.js, there has been an explosion of JavaScript frameworks. Largely because of its speed, JavaScript is starting to take over the web.
    • The downside is that JavaScript can be a little more difficult to learn than Ruby. This is partially due to the language itself and partially due to the communities. The JavaScript community is a little geekier and the Ruby community seems more beginner-friendly.

Python also seems like a good choice for a first language, but I don't have any first-hand experience trying to learn it, so I won't write about what I don't know... I am simply adding my personal experience and not attempting to cover all possible scenarios. I'm sure there are others who will write about how to get a job by learning Python or PHP first and that can definitely be done.

In any case, I would spend a day or two trying JavaScript and a day or two trying to learn Ruby. If the semicolons and braces of JavaScript don't scare you away, you might pick JavaScript to focus on. If Ruby seems more humane and really speaks to you, then pick Ruby... The point is to pick one! It's too early to learn more than one language at a time. Just pick one and stick with it, so that you can speak it like a native and undertand its idiosyncracies. I guarantee you that no one will be impressed that you know several languages at a basic level. That knowledge is essentially useless. You want to be the master of one language... period.

Then, when people ask you what you do, you can say, "I am a Rubyist," or, "I am a JavaScript developer." Saying, "I'm learning a whole bunch of languages... a little JavaScript, some Ruby... I've been looking at Python..." makes you sound like you don't know what you're doing.

Make Stuff

This will seem crazy, because you're thinking, "I don't know what to make!" Okay, this is part of the learning process... You'll have to learn to take an inventory of the tools you have with your current skillset and then imagine problems that you can solve. This will seem silly at first, because you probably will want to start out making a huge web application, but you must learn to think of simple projects and smaller problems to solve... Ideally, something that you think you could code in only a few days.

Actually, the first project you should start on should be your programming blog. This serves many purposes... If you are new to HTML and CSS, it will be good practice for learning to style a website. I used the Jekyll blogging engine and I learned a lot about CSS while working on it.

Another reason to start with your blog is that you will be documenting your growth. Friends and prospective employers will be able to get an idea of your technical level, your rate of growth, your personality and ability to write, as well as your commitment to learning programming.

Get Out There

This one is going to be hard for some of you, but... you're going to have to be a little bit social. If you don't already have a network of programmer friends or aren't currently in college, I recommend using MeetUp.com. For a while, I was attending every programming-related Meetup in the NYC area (often 3 or 4 per week).

I felt out of place for a while (especially in the beginning) and was afraid to talk to people. Sometimes I would show up and work on my projects or watch a lecture and leave without meeting anyone. But since I was going so often, people eventually started talking to me and I made some really cool friends.

I wasn't trying to be a sleazy networker, but just getting out of the house and around other programmers resulted in meeting people who were interested in hiring me. So, that is pretty much it... I decided what kind of work I wanted to do, I advertised myself as best as I could and someone eventually decided I was worth taking a chance on.

For those who are just starting out and are thinking, how soon can I be working from zero to employed, it depends on a lot of things. I knew some very basic stuff about programming and decided to get really serious about it in July, so it took me about 6 months of really hard work and focus before getting my first serious job offer. But I do mean hard work. I was taking time off of my other job so that I could work 5 days a week getting myself up to speed. It's hard to maintain focus when you're working by yourself, so I definitely see the appeal of coding bootcamps... I was actually planning on attending one before I got my job offer.

Pick a Framework

Now that you've chosen a language and are feeling comfortable in it, you should pick a framework and stick with it. If you've chosen Ruby, than you should learn Rails. If you've chosen JavaScript, you need to pick a stack and make stuff with it. A framework will allow you to build complete apps without a team of engineers helping you. Being able to show a completed app to a prospective employer shows that you aren't just mindlessly completing tutorials, but that you can apply your knowledge. So, JavaScripters, which framework to choose? That's a tough one... There are many more contenders than with Ruby (which really only has Rails and Sinatra). I chose Meteor.js, because it is very easy to get full-functioned apps upp and running with minimal fuss. I also considered Ember.js for the same reason. Either way, just like picking a language... pick a framework and stick with it. Build something with it that you can deploy and show to people. That's all that matters... even if you don't end up getting a job using it (I didn't... my job uses the MEAN stack: Mongo.db, Express.js, Angular.js, Node.js). People just need to know that you have what it takes to complete a project.

Use GitHub

I'd recommend putting all of your practice projects on GitHub. Do you write code? Prove it! Put it out there for the world to see. Even better? Find a way to contribute to an open source project. You won't know a lot, so this will be hard when you are starting out, but it should be a goal.

Master Your Workflow

This means learning the command line and learning how to do things quickly in your text editor of choice... Oh yeah, and pick a text editor. I used SublimeText when I first started and then switched to Vim. You can be fast with either, but I recommend that you pick one and dominate it. There are many workflow videos on YouTube showing speed tips for Vim and SublimeText. Again, just pick one and get really good with it.

Cool Tools

Best of luck to anyone reading this and here are some links to resources that have been incredibly helpful to me:

Codecademy - I would start here, because it's free and can give you an idea of whether or not you are really interested in coding.

Treehouse - Treehouse is pretty good about showing you the big picture. If I were you, I'd use the month-long trial to pick up some basics about HTML and CSS and move on.

CodeSchool - CodeSchool is a great next step... The excercises are well thought out and they start from the beginning and also cover some advanced topics. This is one of the best all-around resources and is worth the subscription price.

TutsPlus - This is another incredible resource that covers all of the latest frameworks and programming techniques. These videos will probably come in handy after you've gone through the other resources, as there is less hand-holding and the pace of the tutorials is pretty quick. This is the one I still subscribe to.

Eloquent JavaScript - This is an incredibly well-written guide to JavaScript with great examples. If you are learning JavaScript, I highly recommend working through this book... Don't just read it. Do the interactive examples and you will gain a deeper understanding of JavaScript. I'd recommend doing CodeSchool first and then checking this out. In fact, I keep coming back to this book periodically and keep getting more out of it each time.

NodeSchool - If you've chosen the JavaScript route, you will love this in the later stages of your learning.

CoderByte - These challenges will help you learn to solve problems in your language of choice. If you complete them all (it will take a while), you'll have a pretty good command of your language and learn how to think like a programmer.

ShortcutFoo - This is a good way to get faster with your text editor's key commands. This helped a lot when I was learning to use Vim, but I also learned many SublimeText commands that I wasn't aware of.