The junior tech landscape
I recently finished a job hunt. I ended up with a job at DeepMind as a Research Engineer, which so far has been an absolutely amazing experience. THis article describes my personal thoughts on the job hunt, and has no relation to what people at DeepMind think about the job market.
I think working at one of the big tech companies is the best way to start your career as you can a) get a great name on your CV which will make it easier to get subsequent jobs and b) make really good money, which if you save it, will allow you to do riskier things later in your career. If you own a house/condo it's a lot easier to take a low salary as you don't need to pay rent.
This isn't the case for everyone. If you love risk, working at a startup can be a great experience, and if you choose the right one, it can give you an amazing start to your career. However, this is extremely difficult, and you can often fail. I'll expand on this more in a future post.
Choosing a role
When it comes to finding a job, the first thing to do is to select the type of role you want. Then, focus on applying for those roles. That'll let you practice for the same type of questions and get good over time. Many companies use the same questions, so interviewing for the same type of position at different companies is excellent practice. For instance, most of my interviews involved me writing a breadth first search. BY the end of the process, I was able to converge on what I think is a relatively efficient implementation.
The various roles, as I think of them:
- Frontend Engineer
- Backend Engineer
- ML Engineer
- Full Stack Engineer
- Data Engineer
- Data Scientist
- Data Analyst
I focused on ML Engineer and Backend Engineer roles. The specific names will vary significantly by company. I was mostly interested in roles that were engineering focused (so not data scientist/analyst roles), let me work on consumer facing products, and let me do machine learning.
Applying to companies
One thing to note: As a Canadian, if you have a technical degree (e.g. CS, Math, Physics, etc.), you can get a TN-1 visa very easily and work in the US. So I focused largely on applying to American companies, as they tend to have a lot more financing, which makes the jobs more lucrative, and more interesting, as they have more resources. This is an unfortunate reality. If you have an advanced degree, you should also easily be able to get a green card through the EB-2 process, although I am not a lawyer and didn't actually go through that process.
I had three main sources of jobs:
Y Combinator (YC) is an American incubator, and arguably the best early stage investment firm in the world. They take people with an idea and give them ~$120k in exchange for 7% of the company. It's a great source of jobs at super early stage startups (typically you'd be one of the first 5 employees), but is high risk. YC is super dominant in Bay Area hiring. The people there can be more willing to hire a junior person than bigger companies.
Angel List is a site that many early stage companies use to post jobs on.
This was my list of companies, in no specific order:
- Misc. YC companies
- Affirm, Inc
- Sift science
- Adyen (Adzen?)
- Element AI
Some of the companies will hire people remotely, although that can be tough to do as a junior employee, and I wouldn't recommend it.
If you're focusing on Vancouver, Microsoft and Amazon are the only big tech companies there hiring engineers (as far as I'm aware). Facebook is supposed have an engineering office there, but I haven't seen any postings for it. There's a bunch of smaller companies there too, such as Hootsuite.
Getting the jobs
I'll post more on this subject in the future. TL;DR: study Cracking the Coding Interview.