I've been asked about my transition into Software Engineering. Not from recruiters or other engineers, from people looking to make the switch themselves, and engineers that want to connect more career changers with opportunities. They typically lead with the question, "was coding boot camp worth it?" Some of them had been reading and learning solo via online tutorials, not sure exactly how to combine what they've learned to make new things. Others are earlier in the process and not sure how to get started. Spoilers: my response is not as clear-cut as they would like. I tell them, "it depends." We all learn differently, so there is no catch-all answer or school for everyone. Here's how I got to coding boot camp, and what I got out of it.
I had been working in the Restaurant and Hospitality Industry for about 10 years when I first wanted to start learning to code. I had been reading a bunch of Gizmodo articles about Raspberry Pi, the microcomputer the size of a credit card that was making DIY computer projects for builders easier, and the barrier of entry to learning to code much cheaper. I thought to myself: I want to do that! One of the projects I'd wanted to create was a paperless ticket system for restaurant kitchens. So I started looking for free resources on how to make what I thought were necessary parts for that project. Learning to program fell to the wayside for a while as I tried to imagine what it would look like in between 12- to 16-hour shifts in the restaurant. After that diversion, I realized that the hardware will continue to advance, but the software was something I should start trying to understand. Five years, ten iPad apps promising to teach you how to code, a short and growing list of other restaurant-related projects, and a baby later and I'm no closer to learning how to code. Things just haven't clicked and I'm lacking consistency in my study.
New plan: Get up early every day and go through a Udemy course. So I found a Udemy course and started at 5 am every day with a pint of coffee and aching body from the night before in the kitchen. The structure was much better. I went through the basics of Python data structures, classes, and even wrote some small scripts as exercises. There was a quick intro to TKinter so that we can even have some visual representation for the card game I wrote. Things were starting to click! The next project was an inventory for music albums. The course taught a little SQL and I suddenly thought: Hang on a minute, this is fun! I want to do this now.
Why I picked coding boot camp
What I'd learned from years of puttering around is that I need structure to get started. Learning something as vast as programming and tech was not something I was yet disciplined enough to learn on my own. I needed someone with a sense of how things tied together so that the curriculum builds towards the next thing. The Udemy course did that, but I didn't like having to wait to have questions answered when I had already rewatched the same section all morning. In my defense, the instructor had a New Zealand accent that I found endearing, delightful, and distracting. I'm the kind of learner that needed other people in the room or something to interact with directly. People that are just as new to the content as me. Although I had long been an introvert, what I needed the most was a community to feel belonging to.
So when I looked for coding boot camps, I looked for up-to-date curriculum, small class sizes, and how close to a real job the experience can get. I wanted a smaller class size because I had read about some other schools where the classes were super packed (say 50 in a class) because they expected about half the class to not complete the curriculum. To me, this seemed to be indicative of a business-first style as opposed to education-first.
Having some things for a portfolio was a given, there's no real need to advertise that as a selling point for a school. You're really there to learn how to make things that you can show off. What I really wanted was one that included experience developing and adding to an existing codebase. The coding boot camp I went to, Rithm School in San Francisco, checked the boxes for me and became my #1.
Getting with the program
I prepared for Rithm's interview process with the coding exercises and attempted to practice whiteboard interviews. Honestly, I failed the interview. My nerves got the better of me because I needed to learn how to explain what I'm thinking. In a kitchen context that was easy, here in algorithms it was pretty new. I'd come back after more practice and try again. After the second interview, I was accepted and started up on more precourse work: a meme generator, more coding problems, and my first personal website. The fact of the matter was that I had never made projects before. This was really how I learned, by constantly doing projects that reinforce the basics. In my previous career, restaurant work, there are plenty of opportunities to reinforce the basics.
Ultimately, what coding boot camp gave me that I didn't find learning on my own was a community with other people going through the same thing. Have I mentioned focus and consistency of practice? That was so hard to come by in my self-study time. I just wanted to chase every new shiny thing thinking before having a grasp of the fundamentals. Here, there was no time to goof off (especially with remote learning and a house of kids during COVID's initial outbreak in 2020). We were in a lab half the day with another student that was also slogging through the same new material.
In the Rithm curriculum, there was a two-week internship with a startup. In my particular internship, there were no kanban boards or Jira tickets. It was issue tickets in GitHub and the components to features were assigned. Standup meetings, having to Slack for help, and being somewhat lost with other interns were common occurrences. This was my first real pang of imposter syndrome. Having that happen early on and around other junior engineers made the climb out so much easier.
...so was it worth it?
In the end, I knew I graduated with good fundamental skills to create products. Could I have learned that on my own? Yes, but not as quickly and probably not as well. There are plenty of people that can stick to a self-study model and come out the other side with a killer portfolio and a job. I'm not one of those people. If you're the type of person that needs intentional guidance taking on newer tasks and topics, boot camp and direct mentorship are a solid option. Regardless, try some self-study first to see what you can grasp. This can be a book, website, YouTube videos... there are plenty of options.
Now, it wouldn't be responsible for me to talk about coding boot camp without also discussing some limiting factors. The first is the elephant in the room: cost. It's not cheap! Just the cost of attending a coding boot camp is expensive, but let's also add in the cost of a computer to use in class if yours isn't up to snuff. Don't forget that it's typically a full-time class schedule, so that means taking time off of work or quitting a job. Then the job hunting on the other side is time-consuming and, for some, morale-crushing. It's an investment to attend school, but the realities of who has that kind of access to be able to attend cannot be forgotten. I'm fortunate that my family was able to find our way to make it all work.
Overall, any resources that help you effectively learn are valid. There is not just one way to learn to program. What you don't get from coding boot camp is an assurance that the industry will be a fit for you. Do some soul searching before you sign up for a school and ask yourself why you want to code. You might have a project or product you'd like to build. Maybe you have a desire to do good in the world, or you really love technology. Changing industries for the money alone probably won't be a tasty enough carrot to dangle ahead of yourself in the months to come. So really think about the kind of job you want to have, the type of products you want to be working on (social media, health-tech, financial services, etc), and the companies that you want to be working for. These are the things you will want to think about when you figure out what to learn next and where to learn it from.