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
- 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).
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.
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
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.
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.
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.