Getting into a selective bootcamp can be difficult. This is a good thing, you want to avoid schools that admit anyone who is willing to pay. There are too many schools that are more focused on building a big business rather than the outcomes of their students. Even after going through a leading bootcamp, getting the first job can still be difficult. Stay away from places that make it seem easy. It is much better to be surrounded by others who have put in a lot of effort into being there.
What technical interviews should look like
During an interview you are likely being assessed on both technical and behavioral aspects. You will typically be given multiple coding challenges that you are expected to complete live in front of an interviewer. The process is an imprecise science, it is hard for an interviewer to perfectly assess your ability in an hour. Sometimes behavior skills end up being just as important as the technical side of things, so don’t forget to communicate. It should be a major red flag if they are not assessing your ability to code in these interviews.
How to look good during an interview
Put in the work.
This one seems obvious but we often get people who are not even close to being technically ready to start the program. There are only so many seats available for a cohort and it is the job of the interviewer to try and figure out the strongest students. You won't be able to get a seat based on your professional or academic history, you have to be able to code technical challenges live. The only way to do this well is to practice.
How much practice you need can vary a lot from one student to the next. After learning the fundamentals of the language you probably need to practice coding challenges every day for a month or so. This can vary a lot from one person to the next but aim for solving around 100 coding challenges, maybe more if you have less technical experience. These problems can be found at places like hacker rank or code wars. You can also get a curated list of 30 problems from Rithm School by emailing firstname.lastname@example.org.
Don't race through the problems.
In my experience people who race through problems because they think it will make them look good end up doing the opposite. It is better to be methodical rather than focus too much on speed. Don’t think of it as a race or competition. If you go super fast, you might come off as someone who thinks they are some sort of 10x programmer. Instead, focus on communicating with the interviewer.
What to avoid when preparing for the technical interview
Don’t try to learn everything
Before you can solve coding challenges you need to learn the fundamentals of the language. There are a lot of different study materials for people learning to code, I would focus on depth not breadth. In other words don't try to complete everything you see, find a good resource and focus on getting 100% understanding. You don’t want to understand 50% and then move on to another resource. Here is a link to the free learning materials from Rithm School. The materials are for people who are first learning to code. If you can learn everything in these documents thoroughly you are ready to start solving practice problems.
Don't memorize practice problems.
Oftentimes this habit comes from looking at the solution to problems too quickly. While you are practicing these problems, you don't want to spend 10 minutes trying to solve it, look at the answer, commit it to memory and move on. You won't be able to memorize all the problems, and you are exercising the wrong part of the brain when doing this. In general memorizing things is not that important in software engineering, you can rely on google for that, what is more important is to identify patterns and improve your problem solving ability.
We will talk more about this later, but realize there are only so many types of problems that you will likely see at this level. After learning a new pattern, you should be able to apply that pattern to similar types of problems in the future. It is more important to be able to recognize the patterns in a problem rather than memorize every possible problem.
Don't push too hard for too long on a single problem.
The opposite of looking at the solution too quickly is spending too much time on a problem that you just don't know how to solve. If you haven’t seen that type of problem before you probably won’t be able to solve it. You shouldn't try to code a problem without knowing how you are going to solve it, so think all the way through the problem before you start to code. If you just don’t know how to solve a problem look at the solution and commit the pattern to memory. For this reason, it is important to find a bank of practice problems that also give access to solutions. Even better would be to find a mentor or friend that can help solidify the patterns with you.
Don't overperfect a working solution.
The interviewer is not going to care about how many lines of code you use, so don't spend time making your practice code more concise once you get a working solution. It is kind of off-putting to see coders showboat at this level. The problem solving approach shows the most about your experience as a coder, not how few of lines you can code a solution in, or if you are using the most up to date features of the language. Once you get a working solution, analyze the patterns you used, and move on to the next problem.
More on identifying the patterns in a problem
.includes()to determine if an element exists in an array or string
- using multiple pointers while iterating. example :
let first = arr[i]; let second = arr[i + 1];
(search multiple pointers or sliding window algorithms)
- nested for loops
- finding minimum and maximum values in an array
- using the mod operator for problems like Caesar's Cipher, or for finding even/odd numbers
- using a frequency counting algorithm
After solving a problem, focus on the pattern you used to solve it, what type of problem can it be classified as. On future problems you want to try and identify what type of problem it is before you start writing code. With more practice you will start to see that there are only so many types of patterns you need to know to solve most problems. The process is the same for passing actual job technical interviews, but you will be expected to know more advanced patterns.
If possible try to find others to study with, preferably people who are trying to get into the same schools as you. Keep an eye out on sites like eventbrite or meetup for meetups hosted by Rithm school or any other bootcamp where you can ask questions about their program and meet others who are also learning to code.
Don’t feel like you need some over the top talent or impressive academic and professional history to be successful. Being a Software Engineer is not easy, but If you are able to work hard and find the right guidance, there is a lot of great opportunity. It is the people from different backgrounds who show a lot of grit and determination that are often the most rewarding to work with. Everybody likes the underdog. Regardless of who you are, I wish the best of luck to you.