My Experience

By PJ Frias

as a Flatiron School Online Student

Who am I?

  • Builder of Things
  • Dece' at the Maths
  • Son of Immigrants

MECHANICAL ENGINEERING IS FOR ME!

So young, so naive.

OR IS IT?!

~5.5 yrs later

  • Not actually building stuff
  • My jobs are kinda boring AF
  • I hate my life job so I start a woodworking "side hustle"

Meanwhile...

My friends to me:

Youtube: Bebop Builds

(check it out!)

(Specifically, web development)

  • Tinkerer
  • Creative problem solver
  • Psuedo-poet
  • Lover

... of knowledge!

Why web development?

Or Who am I really?

In my mind,
web development incorporates all of these things

If I'm wrong, I don't wanna be right

Why Flatiron?

  • Full Stack Development

  • Online & Self-paced

  • Potentially low-cost

  • Great learning ecosystem

  • Teach us "how to learn"

  • Supports Women in Tech

  • Good reviews from past students

What did I learn?

Curriculum Preview

How did I learn?

  • Reading Lessons
  • Recorded Lectures
  • Live Lectures ("study groups")

 How was my learning supported?

  • "Ask a Question"
  • Slack Channels
  • Office Hours
  • Education Coach

 How was I taught?

  • Test Driven Labs
  • Section Projects
  • Portfolio Projects
  • Blog Posts

 How was my learning measured?

Lab Example -

CRUD w/ Validations

  • title, a string
    • Must not be blank
    • Cannot be repeated by the same artist in the same year
  • released, a boolean describing whether the song was ever officially released.
    • Must be true or false
  • release_year, an integer
    • Optional if released is false
    • Must not be blank if released is true
    • Must be less than or equal to the current year
  • artist_name, a string
    • Must not be blank
  • genre, a string

Songs have the following attributes and limitations:

Use the resource generator, not the scaffold generator.

  1. Define a model with validations for Song.
  2. Define all RESTful routes for songs.
  3. Build views that connect to each other using route helpers.
  4. Use form_for to build forms with pre-fill and error list features. (Hint: Try using a partial to cut down on copypasting!)
  5. Allow deleting songs with a link, using link_to. (HINT: You might need to add some functionality so that you can properly delete a song using just a link. Be sure to include your new assets in application.html.erb.)
  6. Use strong parameters in your POST/PATCH controller actions.
  7. Set the root route to the song index.

Requirements:

Tests

RSpec.describe Song, type: :model do
  let(:valid_attributes) do
    {
      title: "Talisman",
      artist_name: "Air",
      release_year: 2007,
      released: true,
      genre: "Post-Rock"
    }
  end

  let(:missing_title) { valid_attributes.except(:title) }
  let(:missing_release_year) { valid_attributes.except(:release_year) }
  let(:unreleased) { missing_release_year.merge(released: false) }
  let(:future_release_year) { valid_attributes.merge(release_year: Date.today.year + 1) }

  it "is valid when expected" do
    expect(Song.new(valid_attributes)).to be_valid
  end

  it "is invalid without title" do
    expect(Song.new(missing_title)).to be_invalid
  end

  it "is invalid without release year when released is true" do
    expect(Song.new(missing_release_year)).to be_invalid
  end

  it "is valid without release year when released is false" do
    expect(Song.new(unreleased)).to be_valid
  end

  it "is invalid when the release year is in the future" do
    expect(Song.new(future_release_year)).to be_invalid
  end

  it "is invalid if an artist tries to release the same song twice in a year" do
    Song.create!(valid_attributes)
    expect(Song.new(valid_attributes)).to be_invalid
  end
end

Portfolio Projects

  • 5 in total
  • Meet project requirements
  • Blog Post of Design Process
  • Short Video Demo
  1. Build an MVC Sinatra Application.
  2. Use ActiveRecord with Sinatra.
  3. Use Multiple Models.
  4. Use at least one has_many relationship on a User model and one belongs_to relationship on another model.
  5. Must have user accounts. The user that created a given piece of content should be the only person who can modify that content
  6. Must have the abilty to create, read, update and destroy any instance of the resource that belongs to a user.
  7. Ensure that any instance of the resource that belongs to a user can be edited or deleted only by that user.
  8. You should also have validations for user input to ensure that bad data isn't added to the database. The fields in your signup form should be required and the user attribute that is used to login a user should be a unique value in the DB before creating the user.

 

Sinatra Portfolio Project Requirements:

How I felt after making a simple landing page

Project Assessments

  • Talk through our project and explain features
  • Answer questions about project concepts (Explain MVC design pattern, RESTful routing, etc)
  • Live coding - Fix bugs or add a feature

TFW you pass tho

What did the program look like for me?

Studied ~60hr/wk avg

Finished under 15 weeks

Total cost: $2750

  • Studying WAS my job
  • Paced myself to avoid burnout
  • Studied on most weekends
  • Set goal to match in-person pace
  • Still left time for other responsibilities and "fun"
  • Merit Scholarship - Half off first two months ($750)
  • Accelerated Bootcamp Prep Discount ($750)
  • Prorated Final Month ($500)

What did I really learn?

I like-like software development

GIFs/Memes are great teaching tools

Helping other students succeed is empowering and self-motivating

The Web Development community, both online and in person, is amazing

Thanks for listening!

Questions?

Youtube: Peej Frias

Twitter: @NotNotPJ

My Flatiron Experience

By PJ Frias

My Flatiron Experience

  • 371