April 29, 2017

Getting Into a Software Engineering Bootcamp

Getting Into a Software Engineering Bootcamp

I did it! I got the news today that I got into Fullstack Academy's intensive/immersive software engineering program! I worked my butt off to pass the admissions assessments. It feels really good to see it all pay off. Here's the timeline in which it all happened:

  • Application - April 12
  • Initial Coding Assessment - April 18
  • Live Interview/Code Assessment - April 21
  • Acceptance - April 29

I'll be starting on June 16. That's when their online "Foundations" course opens, which is supposed to take three to four weeks to complete and will prepare us to start the intensive program with the prerequisite knowledge of JavaScript we'll need to succeed and keep up with the accelerated pace. The actual three-month intensive program will begin on July 24. So I've got some extra time I need to figure out what to do with. Actually, I already decided. While I was waiting to hear back from Fullstack, I decided I'd try another prep course from another school I've been considering: Thinkful.

I know there are a lot of people out there considering whether this path is right for them and wondering how it all works, so I'm going to share a little bit about my experience so you can know what to expect if you decide to apply to Fullstack Academy or a similar school. I think I'll also write another post detailing what I did to prepare myself to pass Fullstack's coding assessments in the admissions process.

Application

When you feel confident in your programming skills (e.g. when the thought of sorting elements in a jagged array of various levels of nesting doesn't sound too daunting), then you're probably ready to submit your application.

Fullstack's application asks for all the basic information about you and then has a handful of open-ended questions that are designed to get a sense of who you are as a person and your motivation for going to a schoo like Fullstack. I recommend not being too terse in these open-ended questions. Be as verbose as you can to help them get a sense of who you are, how you think, and why you want to learn software engineering. And don't worry about needing to sound interesting or original or like you have everything about your life and career figured out. Just be frank and open about your thought process and plans (or lack thereof) for your career.

Initial Assessment: Online Coding Challenges

After you apply, if you presented yourself well, you'll most likely be invited to do the initial "interview" which is really just a few online coding challenges. If you've done your due dilligence and have been doing tons of coding challenges online at sites like CodeWars.com, you'll find the assessement to be a fairly familiar experience... except for the fact that it's timed. That does add a little pressure to it.

There will likely be somewhere around 3-5 challenges that get progressively more difficult. Here's how I recommend approaching them:

  1. Start with the hardest (last) and work backward. Chances are you'll have to skip one or two of these hardest problems for the sake of time, but working on them first will allow you to be thinking about them as you solve the easier problems. You may just realize the solution to the harder problem as you're solving the easier ones. And chances are you'll have time after finishing the easier ones to go back and work on the harder ones.
  2. Work out your solution in commented-out pseudo code first. This will allow you to think about the problem more abstractly without distracting details of implementation. It will also act as a roadmap for you as you begin implementing your actual solution. Lastly, it'll be there for your grader to see so they can give you partial credit for your programmatic thought process, even if you weren't able to completely solve the problem.
  3. Evenly divide the time between each problem. If you're not done with the current problem, but its allotted time is up, just move on to the next problem. You can come back to it if you finish the other problems. You'll get partial credit for your work anyway, so don't sweat it. But chances are, you'll be able to get through the easier problems more quickly and come back to the hard ones later.
  4. Keep calm. Breathe deeply. Remember that these problems are no different from the ones you've been practicing on for weeks/months. And especially remember that the worst thing that can happen is that you fail the assessment and you have to take it again in a couple weeks. That's really not the end of the world.

Second Assessment: Live Interview and Coding Challenges

If you pass the initial assessment, you'll be invited to a second-round interview with a instructor or fellow, who will ask you a few questions and give you a few more challenges to solve.

The questions your interviewer may ask probably won't be all that different from the one you answered in the application. Just be yourself, be frank, and be honest about who you are. And most of all, talk! And when you have the opportunity, be inquisitive! Ask your interview some hard questions about how things work at Fullstack (or wherever you're applying), why they do things the way they do, or what happens if things don't go as expected during your time in their program. I recommend preparing some solid questions beforehand.

The challenges your interviewer gives you also won't be too different in nature from those on the initial assessment. The only real difference is that now, instead of seeing a clock ticking, you can see someone watching you work. Be prepared: this can feel even more stressful than watching a timer count down. But remember, this really isn't a big deal and you've been doing these kinds of problems for a while now. What's the worst that could happen?

Despite what you might expect, you can actually ask your interviewer for a hint and get feedback on what you're doing. They're not their to just be a spectator. They want to see how you tick, how you approach problems, and how you deal with getting stuck. Talking to them as you brainstorm is not frowned upon.

Here's how I recommend you approach the live coding challenges:

  1. Work out your solution in commented-out pseudo code first, for all the same reasons I originally said above
  2. Don't be silent as you think and write. Think out loud. Let your interview hear your thought process. It doesn't matter if you say things that are incorrect at first, as long as you eventually notice the mistake and correct it. The point is to show them you can break the problem down into its smaller sub-problems and to show them how you attack a bigger problem piece by piece.
  3. If you get stuck, keep talking. If you try something that you think should work, but it doesn't, reiterate out loud why you think it should work and ask your interview if they can give you a hint for why it's not working. It could be a simple syntax mistake, no big deal! Or if you have an idea about what you need to do, but you can't remember the syntax or name for it, tell your interview what you think you need to do, but that you're blanking on how to do X, Y, or Z. They may be able to nudge you in the right direction. The important part is that they see your thought process is going in the right direction.
  4. Again, breathe. Keep calm. See your interviewer as a support, and not a threat. And keep in mind, what's the worst that could happen? You get something wrong and you learn something new, and maybe you have to redo the assessment in a couple weeks. So what!

Acceptance

If you ace the second round interview, then you should hear back from Fullstack within a couple weeks (though, your mileage may vary). I heard back exactly one week after my live interview. You'll be scheduled for an onboarding call with one of the admissions representatives and you'll get a rundown of what's ahead and an opportunity to ask any remaining questions you may have.

Study On

Until your cohort begins, I recommend finding a constructive way to spend your time. Maybe do a course or two on Pluralsight, Udemy, Coursera, Udacity, or some similar site with quality instruction (checkout NodeSchool for Node.js). Or level up on CodeWars or some similar programming exercise site. Just make sure you're keeping your skills sharp and continually learning more about your programming language or tech stack of choice. Every bit of progress you make from now to when you start your bootcamp will simply put your skills that much further ahead when it comes time for you to begin looking for a job.

You're going to do great!


Got any recommendations for those preparing to get into a intensive programming school? Or a question for those who have already gotten in? Leave a comment below!