Edit: The response to this post was kinda overwhelming. I've modified some of the steps below to require less manual work by me.
From a recent
post on Hacker News:
Friends of mine are in the same position as this guy. They recently graduated with good degrees from a decent university with no illusions that finding a job was going to be anything but difficult. Rather than feel like they're owed a job the ones I know have spent hours _every_ day applying for jobs for the past (up to) 2 years with no success. Most of the time they get no reply from these companies (fair enough), but the few times they do get an interview someone else with more experience gets the job.
This sucks. There has been an education bubble over the last few decades that has told kids that all they need to do to guarantee success is go to a good school, make good grades, and get a degree. The result is that in many fields, there is vastly more supply than demand.
But there are a few fields that are hiring like crazy. One of them is mine: software engineering. Major tech firms cannot hire fast enough. And the barrier is low enough that you can start learning today, for free. If you work hard, you can know enough in a year to get a good starter job. It's been this way for more than a decade, and I suspect another decade of growth at least.
That's the good news. Here's the bad news: It's going to be hard, and you'll need to give up on whatever you went to school for and spend a year learning something new.
But remember: the time you spent in school is a sunk cost. You can't get it back. Doing nothing just makes matters worse. I'm offering you a way to make progress today.
Ok, still here? Here's how to get a good job programming in six easy steps:
- There are also build instructions for Windows and Linux if you prefer
- If you don't like Chrome, you can also work on Firefox or Safari, but the rest of these instructions are optimized for Chrome since that's what I'm familiar with.
2. Browse the bug database to find something to work on. Here are some useful queries:
I can personally review changes in these areas, and I try and keep these lists well-stocked with good starter bugs. You can also work in other areas, but you may have to find someone else to review your work.
If a bug has an owner assigned, but there has been no activity for a week or so, comment on the bug and ask whether you can take it over.
3. Once you have picked a bug, comment on it saying you're going to work on it. If it is in feature:extensions,apps, I will get notified of your comment, and will mark the bug as owned by me so nobody else grabs it. I will probably also add some comments about where to start.
4. Study the code, referring to a
C++ tutorial as needed. You may also want to buy an actual paper book on the subject. Make the changes required to fix the bug. Once you have it working, send me (aa-at-chromium-dot-org) a
code review with your changes.
5. Repeat steps 2 and 3 about 50 times.
6. Update your resume to say that you are a junior software engineer and you have contributed significant code to Google Chrome (or Firefox or whatever), and provide a link
showing your work.
Ok, so these steps aren't really "easy". Some of them will take months. Just getting Chromium compiling is going to take awhile. I've purposely been vague on the details so you can figure it out on your own. You'll need ingenuity, a search engine, and a lot of patience.
But I guarantee, 100%, for-sure, that if you complete my program, you will be able to easily find a good starting job programming.
Hiring programmers is super hard. It's nearly impossible to evaluate whether someone is good without examples of their work. By working on open source projects like the ones I've listed, you make it easy for hiring managers. They can see what you can do and how you work with others.
There's nothing stopping you from making this happen. It's going to be hard, but you can do it. And there's lots of people that are willing to help once you take the first few steps.