I am routinely asked about how to break into the software industry as a programmer. It is true that there is high demand for qualified programmers, but not all jobs are equal. There are good and bad tracks. And most jobs aren’t that good.
How do you get a good job as a programmer? Here is my somewhat educated answer:
- Make sure you really want to be a programmer. It is hard work. Can you spend hours reading or writing technical documentation? Can you spend hours reviewing someone’s code? People don’t get into programming because you like video games or because you like the salaries. It is not going to end well.
- It is entirely possible to get a good job without any formal training as a programmer. Good programmers can recognize one of their own without checking a resume. However, the overwhelming majority of programmers with great jobs seem to have some college education. At a minimum, you need to be able to communicate clearly (in English) and know basic mathematics. You can do a lot of useful programming without knowing about logarithms, probabilities, standard deviations, functions, set theory… but you are just going to be a lot less convincing in some contexts. So if you have no college education whatsoever, it might be easier to get some. At the other end of the spectrum, having many advanced degrees might not help as much as you’d expect. The prestige of your college probably does not matter a whole lot, and you can get good mileage out of things like Coursera.
- You need to learn to recognize good jobs. A good tell is the people interviewing you… if there is nobody in charge of recruiting that has a strong background in programming, run away. I’d make an exception if it is a start-up and you are the first programmer being hired… but then you should probably be getting some equity in the company.
- It is tempting to look at job ads and focus on getting all the right keywords on your resume. But without an in-depth knowledge of the domain, it can be a misleading activity because (1) most jobs being advertised are not good jobs and (2) not all keywords have equal weight.
- Right now, it probably pays to get yourself a GitHub profile and to contribute usefully to some projects. Show that you can be a team player, show that you can follow-through and produce useful code. Getting a StackOverflow profile and contributing to the community is probably wise. There might be other online communities that are just as good, and these things tend to evolve over time… it is possible that in 5 years, GitHub will be replaced entirely by something better. You need to keep up.
- Get involved with local programming-oriented meetups. Show up, ask questions, give talks. You can get to meet some of the best engineers from some of the best companies, and they might be quite happy to discuss job prospects.
- You may need a little bit of shallow knowledge about all sorts of things, especially the latest trends. It probably pays to follow news sites catering to programmers: Hacker News, Slashdot, Reddit, blogs, Twitter…
- Technical interviews can be quite difficult. I am not exactly sure why the interviews are so difficult, but they can be a lot harder than your average college exam. It probably pays to train with the help of a book or two.