Our Chartio engineer Jess, details how she left her job at YouTube to spend six days a week, 11+ hours a day, writing code. First published on VentureBeat, read on for Jess' advice for making a similar career change.
Make sure you actually like programming!
I feel like it's easy to think that being a software engineer involves effortlessly banging out code for a few hours a day between lattes.
It might be like that for some really, really smart people; but for the rest of us, it's more like feeling confident something works a certain way, then spending six hours slowly realizing that's not the case.
Then you finally fix the bug you meant to fix, and it's taken you eight hours to write 15 lines of code. Don't get me wrong: Finally fixing a bug like that is one of the best feelings ever, but I think a lot of beginners are shocked by how frustrating programming can sometimes be.
If you think you'll be happy with 30 seconds of euphoria after several hours of struggle, then engineering is probably for you.
Choose the right bootcamp
Look through engineering job postings, and try to figure out what languages/technologies you should be learning to get the type of job you want. Make sure that coincides with what a bootcamp says they're teaching.
Look at job stats, and make sure graduates of the program are getting the types of jobs you'd want. Read posts on Quora; try to track down student's blogs from their time at whatever bootcamp you're looking at; and just generally, read all the content that you can find about any bootcamps you're thinking about attending.
There was actually a lot less information about the various programs when I was starting out, so in the end, I decided Hack Reactor looked the best pretty much entirely because of the intense schedule. I figured that at three months, six days a week, 11+ hours a day, it'd be kind of hard to not learn something.
Consider self study
Being able to learn complicated things through a lot of online reading and trial and error is a really important skill to have as an engineer.
There are lot of really good engineers who didn't study CS or do a boot camp, so it's clearly possible to be a successful self taught programmer.
However, if time is an important factor for you, I'd definitely recommend looking at bootcamps. I learned way more in the three months I spent at Hack Reactor than I did in the year and a half I spent learning to code in my free time while working full time.
Prep for your training
Getting ready to start a bootcamp and/or the admissions process can be different depending on which one you do.
I'm not too familiar with other bootcamps' admissions and pre-work process, but Hack Reactor's philosophy is that they want to spend time on the stuff that's harder to learn on your own, so they expect you to be pretty good at the basics by the time you start.
Even if that's not the case for your bootcamp of choice, it's definitely a good idea to spend time coding before you start to make sure you actually like it.
Know your program
Hack Reactor was a pretty crazy experience. You're learning completely new things all the time with no time (other than your Sunday!) to review anything. Almost all of the curriculum is hands-on, so you're writing code 10+ hours a day and don't have time to think about anything else.
The most similar learning experience I've had was when I spent two months in Ecuador doing an intensive language program. For the first two weeks, you feel like you have the vocabulary of a two year old. You can express fatigue and hunger, but talking about the meaning of life is out - and then, suddenly and unceremoniously, you're dreaming in Spanish.
The three months went by so quickly that it's honestly pretty difficult to explain what it was like. I spent a minimum of 10-12 hours a day in a single room with the same 25 people for three months.
I think the most important thing to relay is that despite the long hours, occasional bouts of impostor syndrome, and sickening number of peanut butter sandwiches, it was one of the most fun experiences of my life.
Get a job
The most important advice I can give on getting a job is apply everywhere that seems remotely interesting.
It's often hard to tell what will be the best place for you before actually talking to people who work there, but that's only half of it.
Technical interviews can be really scary, even for really great engineers! They get a lot less scary when you have two a day for two or three weeks straight. You'll get asked similar questions at different companies; and you'll start to realize that at most places, they don't expect you to get everything perfectly correct on the first try.
As far as preparing for interviews goes, Cracking the Coding Interview by Gayle Laakmann McDowell is a great source of practice problems. It's also probably a good idea to have a general sense of how to evaluate the time complexity of your solutions.