Completing a Full-stack Coding Bootcamp - My Experience Attending Flatiron School and a Phase by Phase Breakdown
Tags: webdev, codingbootcamp, beginners, programming
Published: 2024-06-03 19:33:28

{%- # TOC start -%}

- [Overview and Picking a Bootcamp Schedule](#overview-and-picking-a-bootcamp-schedule)
- [Phase breakdown](#phase-breakdown)
- [Phase 1](#phase-1)
- [Phase 2](#phase-2)
- [Phase 3](#phase-3)
- [Phase 4](#phase-4)
- [Phase 5](#phase-5)

Over the past couple of days, I put the finishing touches on my Capstone project for Flatiron School, thus marking the end of my coding bootcamp journey. Whether you’re considering bootcamps or simply curious, I hope to provide insight into the curriculum and my overall experience as a career-transitioner and aspiring software engineer. 

## Overview and Picking a Bootcamp Schedule
Coding bootcamps are educational programs that aim to teach you the foundations of full-stack software engineering. My program, Flatiron School, offers live full-time (both in-person and virtual) as well as virtual self-paced instruction. Here are some factors to consider when deciding whether to do a live or self-paced bootcamp:

### Live, full-time bootcamp (approx 15 weeks) is great for people who…
* Can commit to a full-time weekly schedule in addition to outside work after class and on weekends. This likely means no job or large personal commitments on the side for the duration of bootcamp.
* Want to complete bootcamp, and therefore begin job hunting, sooner rather than later
* Desire or benefit from live classes with instructors and peers. This can strengthen your sense of accountability, community, and ability to maintain a strict schedule.

### Self-paced, asynchronous bootcamp is great for people who…
* Have outside commitments, whether personal or work-related, and cannot dedicate 60 hours/week to bootcamp
* Excel in time management and enjoy creating their own schedules
* Want flexibility in the amount of time to complete coursework, study for assessments, and complete projects

I opted for Flatiron’s self-paced, 40-week schedule and had a wonderful experience. Although the content is the same across instruction modes, the self-paced program was much more hands-off in its approach. Course content is administered on Canvas and includes a mix of readings, videos, and engaging labs that solidify your understanding of the material. 

However, I never felt as though help was unreachable. I had 4 excellent instructors who were available to meet for technical help, advice, and leading review sessions with other classmates. Taking advantage of those resources played a huge part in feeling like I was part of a structured learning community. For the majority of my journey, I decided to treat this as a full-time job and use the flexibility to spend more time doing outside learning and refining my projects. I completed earlier phases at a faster rate, giving me more time to focus on larger projects during phases 4 and 5. 

## Phase Breakdown

### Phase 1
Phase 1 of bootcamp focused on introducing JavaScript and front-end web development. We learned about functions, working with common data structures (such as arrays and objects), and algorithms. We used our new JS knowledge to create the structure of web pages, make them interactive through event-handling, and communicate with external APIs as sources of data. My final project for this phase was a distance-based, [adoptable pet browser](https://github.com/khamerling-potts/AdoptAPet) that fetches real data from Petfinder’s database.

### Phase 2
Phase 2 maintained a focus on JavaScript and front end development while introducing a key new concept - React. We first learned React basics, including an overview of how it works/setup, components, props, state, and events. In my personal experience, once I felt completely comfortable with state, the rest of the phase was smooth sailing. 
(Check out my [blog post](https://dev.to/khamerling-potts/intro-to-state-in-react-example-walkthrough-1gnn) for more on state!)

We moved on from fundamentals to data fetching (touched on in phase 1), side effects, and client-side routing. This allowed us to create multi-page interactive websites (and with much more efficiency than using vanilla JS). [My project](https://github.com/khamerling-potts/SongSaver) was a song library tool allowing users to search spotify tracks and save music. 

### Phase 3
Phase 3 is where the curriculum switched tracks and I experienced the steepest learning curve. We didn’t use JavaScript or build websites. Instead, we learned Python and how to use this new language to create a backend API. This phase gave us more control over future projects by teaching us how to persist and manage data in a database. 

Specifically, this curriculum taught SQL (Structured Query Language), a language for creating and manipulating databases. We spent a significant amount of time learning bare SQL commands and how to implement them using Python. Although I may not need to continue handwriting SQL commands in future projects, I developed a stronger understanding of the tools used in Phase 4 with this knowledge. We don’t shy away from using helpful extensions and libraries when applicable, but experiencing how they work behind the scenes is critical to using them correctly and deeply understanding your code.

A strong emphasis of this phase was object-oriented programming, which is a principle I will likely use in any future full-stack application I build. I delve deeper into objects and their relationships in [this blog post](https://dev.to/khamerling-potts/object-relationships-modeling-real-world-relationships-in-python-k28).

[My project for Phase 3](https://github.com/khamerling-potts/rdm) was a command line interface (i.e. accessed in terminal/command shell) used for managing research sites, projects, and investigators. This was inspired by my previous role as a clinical psychology research coordinator in a hospital setting.

### Phase 4
Phase 4 built on the skills gained in Phase 3 and taught Flask, a web microframework that uses Python to assist with web application development. We also learned how to use Flask-SQLAlchemy, an extension used to create databases and configure database models with relationships, as well as use version control with our databases. In Phase 3, we essentially created our own object-relational mappers using Python and SQL. The tools taught in Phase 4 simplify this task for us while relying on our knowledge built in Phase 3.

This phase also taught us how to build RESTful APIs, a critical step in developing our first full-stack applications. We used our APIs to handle requests from the front end of our applications (e.g. when we submit forms), process corresponding back end actions (e.g. modifying data in a database), and returning a response to the front end. [This blog post](https://dev.to/khamerling-potts/intro-to-flask-restful-walkthrough-in-python-2p6o) explains this process in more detail and how it’s used in full-stack development.

My [final project for Phase 4](https://github.com/khamerling-potts/lendz) was a full-stack application similar to a Buy Nothing group, where users can post listings for free items or services from their own accounts and rate each other. 

### Phase 5
The final phase of Flatiron’s bootcamp does not introduce any new content and is a dedicated time to work on our capstone projects. Our capstones had similar requirements to our Phase 4 projects but are more robust and incorporate new, self-taught content. I decided to spend more time on my capstone and teach myself mobile app development using React Native. [My project](https://github.com/khamerling-potts/healthseed-client) is an organizational app for managing health information, serving as a central place to track providers, medications, routines, and appointments. It combines knowledge from all phases and includes a mobile front end, Flask API, and deployed database built with Python and Flask-SQLAlchemy. I will continue making improvements post-graduation!


If you made it to this point and have any lingering questions or simply want to connect, please reach out to me on [Linkedin](https://www.linkedin.com/in/kyra-hamerling-potts/) and I’d love to chat!