What Does It Mean To Graduate From An Elite Bootcamp?
After spending 17 weeks at a coding bootcamp in New York City, I am finally able to call myself a full-stack software developer.
This is a title that I have been dreaming about since graduating college a little over a year ago. But what did I actually learn in a little over 4 months? What will I be able to bring to the workplace with a non-traditional background in tech? Does the curriculum align well with the skill set employers are looking for?
I will share what I have taken away from a full-time bootcamp as a student with no prior programming experience.
Hopefully, this article will contribute to the ongoing discussion about software engineering bootcamps and help prospective applicants and employers learn more about bootcamp graduates.
I graduated from college in 2016 with a degree in Music Business and a minor in Web Programming and Applications. Before the bootcamp, I had only written simple HTML and CSS for company newsletters. I also had some experience in web ad-serving technologies (ad trafficking using Google DFP, troubleshooting ad tags, and working with the engineering team on site migrations).
I spent two months learning programming fundamentals and preparing my application. The application included online and in-person coding exercises. I was admitted in late August, and graduated in early December.
Everybody learns differently. I am speaking from my own experience and not on behalf of other students. We had a great deal of autonomy, and some of the technologies mentioned below were not mandatory.
I am trained daily on algorithms and data structures
Algorithms and Big O were taken very seriously. The first lectures were on Abstract Data Types, data structures (linked lists, binary search trees, heaps, hash tables, graphs, etc.), and sorting algorithms (bubble sort, merge sort, quick sort).
Later on, we practiced technical interviews every morning with other students, both as an interviewer and interviewee. In each interview, I was asked to write code and determine the time and space complexity of my solution. I answered questions like:
- What is the Big O notation for the naive solution?
- Is O(n*m) the optimal solution?
- Is using recursion here more efficient?
Besides the training on run-time analysis, we also learned a bit about hardware, such as how arrays are represented in memory and the differences between RAM and ROM.
I built many clones of popular applications
Wikipedia, Slack, Spotify, Twitter, Game of Life, you name it. Every application presented new and exciting technologies (single page application, sockets, flex-box model, APIs, etc.). It was great fun trying to replicate their core functionalities.
We learned Intro to React and Redux by building a front-end clone of Spotify. We learned about WebSockets and Socket.io by building a Slack-like messaging app. Wikipedia was its own beast where we learned to use an ORM (Sequelize) and write unit tests that validated back-end functionality.
I learned important JavaScript mechanisms from building it from scratch
For instance, we implemented our own A+ style Promise library from scratch. This helped us gain a deeper understanding of use-case behavior and underlying mechanics.
During the introduction to Node.js, we built our own functioning shell prompt that takes Unix-like commands, runs them through a Node.js process, and produces output that can be piped into further commands.
I know how to build a progressive web app
For our final project, we had two weeks to build an application we were passionate about in teams of four. The project could fall into these categories: games, data visualization, developer tools, educational tools, and real-time interactions.
My team and I wanted to get out of our comfort zones. We wanted to experiment with the latest technologies that weren’t taught in the program. After some research, we decided to build a progressive web app that uses Google’s Cloud Firestore as our database and AI services, such as Google’s TensorFlow, Amazon Polly, and IBM Watson (what we ended up using).
I played around with serverless architecture and cloud functions
Our final project played around with serverless architecture. We used cloud database and implemented our main functionalities through Cloud Functions. Since we had no prior experience, Cloud Functions were a pain to set up at first due to the amount of APIs we talk to. We eventually finished building the functionalities and deepened our understanding of asynchronous functions.
I played around with Deep Learning and AI
Our final project featured an auto-generated podcast. It allowed us to explore IBM Watson, Amazon Polly, and Google Tacotron (TensorFlow). Although we didn’t have enough time to train our own models using Morgan Freeman’s voice as we planned, we still learned a ton.
(I’ve also written an article on how deep learning makes fashion smarter — give it a read if you’re interested!)
I had great support for exploring side projects and hackathons
For a 4-day individual hackathon, I built a Tinder-like swiping web app that matches users based on their food preferences and received an award for best UI/UX design.
Another one of my passion projects (still a work in progress) is a skincare application that helps consumers understand the pros and cons of active ingredients commonly used in skincare products. It also provides product recommendations based on users’ skincare concerns.
I am comfortable with building an entire application by myself
The most important goal of a full-stack bootcamp is to help you become comfortable with front-end and back-end technologies. That said, there is still so much more to learn and I will never get comfortable with the skill set that I already have. Stay hungry :)
I learned things beyond software
It takes more than programming skills to become a valuable software engineer. During the program, we had guest lectures about agile methodologies, lean startups, and how to cope with unconscious bias. Women’s lunches were held regularly for students to share experiences on being a woman or member of the LGBTQ community in the tech industry.
What I wish I could learned more about
17 weeks is a short amount of time to learn everything you need to know to become a good software engineer. I would love to explore more real-world web development problems, such as web security, scalability, system design, JavaScript design patterns, and overall architecture.
“This is probably the hardest program you’ll ever take. But it will change your life.”
Coding every day non-stop for 10–12 hours isn’t easy, but I loved every minute of it. The bootcamp did a very good job of throwing me in the deep end while also making sure I was not actually drowning.
With everything I’ve learned and the amazing friends I made, I would highly recommend exploring the option of attending an elite bootcamp.
Sure, elite bootcamps are stricter on admissions requirements and evaluations. This means more time and energy spent on preparing for an admissions interview. But I promise you the result is rewarding and life-changing. You will feel well-prepared after graduating to explore job opportunities with great skills.
All in all, I hope you enjoyed reading this article and found it helpful.
Feel free to leave a comment, email me at allison@allisonzhao.com, or message me on LinkedIn if you’d like to know more or connect with me. I am also currently open for job opportunities and looking for exciting products to work on — hit me up!
Last but not least, I’d like to thank my dear friends David and Nicholas for proofreading and making editing suggestions.