How I Got a Software Engineer Job After Bootcamp
🗓️ July 25, 2023 | 🕒 8 min read
In June of 2019 I graduated Hackbright Academy. I had interviews lined up for the first week post graduating, and by the end of the second week I had 3 job offers. I was super lucky to be graduating into a pre-pandemic job market, but I must also attribute this success to some amazing resources, a bit of strategy, and of course a lot of hard work.
If you too are a Software Engineer with a non-traditional background, searching for your first job in the industry, I hope this article can provide you with some valuable resources, and reassurance.
Some General Opinions and Advice #
There’s a tonne of resources in this file but don’t worry about finishing anything before you start interviewing. You’re never going to feel 100% ready. I’ve done 2 job searches now and I still haven’t finished algoexpert. I walked into my first interviews after Hackbright with only speed reading through the answers of interview cake. When I found out my first onsite would have a system design section I read up on it the day before. You can definitely tackle these things one at a time. Good companies will also give you a heads up on what kind of questions to expect so you can study for it. You’re also allowed to ask your recruiter for study tips too. Most people are really helpful. They want you to succeed 🙂
I chose to spend the majority of my post bootcamp time studying algorithms. In my opinion these are the hardest thing to get your head around and take the most time to sink in. I recommend starting early and practicing often to give your brain the longest time for marination 🧠. Personal projects and contributing to open source are awesome, but you’ve got your bootcamp project for that. Not knowing algorithms will prevent you from getting past phone interviews.
Algorithms #
Algoexpert #
Algoexpert is my favorite website for data structures and algorithms. There are >100 questions all with video explanations & tests written for you. You can answer the questions in multiple different languages including Python and JS. You can also categorize them by difficulty and topic. The breadth of questions covered is really good, it pretty much covers all algorithm interview questions you can expect to get.
Interview cake #
Interview cake was the site I used to study when I first graduated from Hackbright. It has written explanations rather than video. It was good and a lot of the interview questions I got were from it. What I don’t like about it is they don’t have any difficulty markers and they also don’t explicitly name the algorithms you’re using. For example they have a problem called “cake thief” or something along those lines. It’s a dynamic programming problem called “the knapsack” problem, but they don’t actually mention that anywhere. That’s why I gravitated towards algoexpert in the end. But if you can afford it and have the time, it is really great. I do highly recommend reading through their free comp sci blog posts. Like this post is awesome.
Hackerrank #
Some companies use hackerrank to deliver interviews. To prepare for an interview I had that was using Hackerrank I used their interview prep kit:
https://www.hackerrank.com/interview/interview-preparation-kit
I thought it was pretty good, but I did use algoexpert to support my learning because the editorials aren’t good (don’t use your precious credits on them 😜) and you can’t always rely on the comments section. The good thing about Hackerrank is that they run HUGE test cases on your data so anything but the optimal solution won’t be accepted. For example I left a console.log
in and it wouldn’t pass the tests. I once also used a js object literal instead of a map and it failed the tests. So it taught me a lot about optimizations and especially language specific ones!
Leetcode #
ughhh this one is fine 😛 But I don’t think its a good one to start with. The problems on here are super difficult and can be really demoralizing when you’re just getting started. In saying that, if you’re interviewing at FAANG, the paid for tracks are pretty awesome and do seem to come with explanations that are quite good. Don’t beat yourself up if you can’t solve stuff though, its super hard!
Systems design #
The other style of interview question you’ll likely come across is system design. These usually pop up in onsite interviews. These can seem overwhelming, but companies generally set a really low bar for junior engineers. That being said, it is good to have some understanding of what is involved in scaling systems. These are some resources I’ve used:
- This is a really great free resource: https://github.com/donnemartin/system-design-primer
- Algoexpert also has “system expert” which I’ve used and really liked. It teaches you the main building blocks of system design questions and 5 example interviews of him answering a question. It’s easy to get overwhelmed watching other people do system design questions though. I’d concentrate more on just learning the concepts so you can talk about them if you need to and so the interviewer can see that you know they exist.
- I’ve done this course too - https://www.educative.io/module/grokking-system-design-interview - It’s pretty good, but is also quite expensive, I think you can probably get most of the info it covers for free if you look for it.
- Gaurav Sen has some great videos: https://www.youtube.com/channel/UCRPMAqdtSgd0Ipeef7iFsKw
- If you’re really into this stuff, this book is amazing: https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321.. but no junior level interview would expect this kind of knowledge.
Specific system design topics that I’d recommend at least being familiar with are:
- database sharding
- load balancing
- caching
- message queues
I know it seems like a lot but just focus on one thing at a time and you will be fine.
Mini coding projects #
Other than algorithms another common interview question you can get is coding up little grid based games. Tic tac toe is really common, connect 4 and battleships are other common ones too. I made a few codepens just practicing stuff like this (connect 4, tic tac toe, todo list, basic api stuff) and using vanilla css (css is fair game for frontend interviews). Here’s my codepen for reference: https://codepen.io/quakerface. I found these to be good exercises for practicing coding stuff up quickly… Especially because my first time coding any of these took me forever.
These grid based games are also good even if you don’t decide to use react for them, knowing how to code these up in the command line (eg. using something like repl.it) is super useful. (print out the board, take turns etc).
Companies seem to like this style of question because it allows you to show them how you structure your code, understand your language, name functions/classes and think about time complexity.
React #
React is a pretty important skill for frontend/fullstack. The react tutorial is incredible for learning React: https://reactjs.org/tutorial/tutorial.html. After you’ve done that you’ve got the basics, you can then practice it with little things in codepen or build a website :)
If you’re into frontend, this site is the best: https://frontendmasters.com/ Particularly “Javascript the hard parts”.
Other coding interview tid bits #
Test your stuff!! In an interview, you really want to be the one telling the interviewer when you’re done and when the program has no bugs. Having tests written up are a super useful way of doing this and also of making sure you understand the question before you start coding. Knowing your inputs and outputs of a function is key to knowing what to code in the body. It will also help you pick up on mistakes yourself, before the interviewer has to tell you 😁 It’s also a great opportunity to discuss edge cases, so you know which ones the interviewer does and doesn’t care about. Also it shows them you’re thinking about edge cases! Don’t be afraid of adding more as you go too! Also, the tests don’t have to be anything fancy, they can literally just be a loop.
For example, here’s a really simple example of what you might do, and a couple of example edge cases:
def func add(a, b):
return a + b
def test_works():
test_cases = [
[1, 2, 3],
["hi", 2, None], # Do they want you to handle bad input?
[-1, 4, 3], # Do they want you to handle negative numbers?
[0, 3, 3], # What about 0?
]
for a, b, expect in test_cases:
result = add(a,b)
assert result == expect
Networking #
Awkward reachouts and personal connections are everything. Meetups are particularly awesome because they’re generally held by companies that are hiring – they’re basically a hiring event. I’ve gotten some super nice referrals from meeting engineers at these events. It takes a bit to get past the awkwardness, but don’t worry, people are there to meet you.. and hire you 😄 They’re also a good way to listen to talks and learn some stuff!
- In SF Girl Geek Dinner is an awesome meetup for women: https://girlgeek.io/ - a group of us got together and went a few times.