Booting Up: Bootcamp Week 6 - Project Week!
Tags: ruby, beginners, rails, codenewbie
Published: 2019-11-15 10:27:49

#Hey Everyone!

In one of my previous blog posts, I talked about my interest in accelerating my learning during my bootcamp at Flatiron while also trying to build a portfolio that demonstrates my interests and aptitude.
 
If you'd like to see Week 7, click [here](https://dev.to/shawnhuangfernandes/booting-up-bootcamp-week-7-javascript-hackathon-1g5g).

**I'm currently in week 6 of my bootcamp** and since we've learned some awesome new web development tools with Ruby on Rails, and **we get to put them to practice in my first Ruby On Rails project!**

**If you have any questions for me about this project or anything, feel free to ask away!

Here's the Github link if you want to play with it:
https://github.com/shawnhuangfernandes/food-fight

# Food Fight - A Game About Food & Monsters

To practice building a simple web application following the Model, View, and Controller methodology, I'm building a simple game where you need to build recipes from ingredients to feed hungry monsters!

To give you a general of the website, here's the cover page:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ju9p8nmqth3f64mr1s7n.png)

And here's the "Fight" Page

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/19cr35k3a2s00upooqtk.png)

## How the Game Would Work

The user would come to a home page with options:
- Instruction Page (Static)
- An About Page (Static)
- And Play Game Page (Dynamic)

The **Play Game** page would take the user to see a random monster with health, and also a random series of ingredients (in checkboxes or something similar). The user would have to select certain ingredients:
- If the ingredients they select forms a recipe, the monster is fed the recipe, and is 'dealt damage'
- If the ingredients don't form anything, the monster is fed garbage (and takes no damage)
- If the user feeds the monster garbage a certain amount of times, they lose the game!

This would hopefully highlight a couple important skills:
- Following a simple rails project procedure
- Planning out Ruby objects and associations
- Creating routes for my web page, controllers to navigate between them, and views to display information
- Connecting my objects with my web page through a database

## The Challenges I Faced

**Practicing Good Practices**: A week seemed like a LONG time to build a small itty bitty program. That time FLEW by. I started out writing outlines, writing pseudocode, brainstorming with my peers. I had a solid beginning to this program and even tested my models & their associations to made sure they worked moving forward. Halfway through the week I began hitting some road blocks when I was trying to create my routes and connect those routes with my controller! Things started getting really messy. I started catching myself doing things like:

- Not committing my changes frequently to GIThub
- Not commenting my code (telling myself I'd comment it later)
- Writing code, then going back and debugging it (as opposed to testing it in irb or the rails console before implementing it).

These are things I still need to work on, but I realize that these were symptoms of me **scoping my project too large**. In hindsight, I now realize my eyes were bigger than my stomach (metaphorically?) and in order to get this game working I cut corners, and it shows.

**Not considering CSS integration**: I actually had no idea what CSS was until the last 2 days of this project, so this wasn't totally on me. However, trying to retroactively go back through my HTML and insert divs and blocks WHILE learning all the cool tools CSS has to make a website look spiffy was really tough. In my future projects I will be prototyping my website with CSS in mind. It simply wasn't on my radar (if you look at my CSS code, you'll notice that I just created classes for everything).

## What Was Fun

This was my first opportunity to get creative. I drew up my own "art" for the game, threw in some sounds that I recorded, and just overall went wild. **It was a blast!** Making websites as opposed to a CLI is really cool because I could include images, and create a more in depth experience for a user. My main goal was to get a laugh out of people, which it did pretty often (hopefully for the right reasons)!


## What I Learned

**There is SO much to learn:** I never realized how amazing CSS is. Some of my peers styled their websites so well, it was so interesting seeing their websites transform visually as they used FlexBox and CSS grid. I cannot wait to dive into front-end web development (lots of creativity)!
On top of that, there were still things I wanted to implement on my project, but I simply didn't have time:

- Validation (Preventing the user from creating chefs with weird names)
- Authentication (Having a user have a valid login and password)
- and more!

I need more practice: I feel like although I have learned a TON in the past 6 weeks, I have still a long way to go if I want to be a decent candidate for a job, and be a decent developer. There are so many tools, so many languages, and so many concepts that I just have no clue about. I need to find time to really practice what I've learned. I just recently started volunteering my Sundays at a cool organization called nXu to help kids figure out that their purpose in life is, so I might need to really double down during my Saturdays and keep my mind sharp! **I'll try to build some mini projects to practice some of the concepts if time permits.**

I'm typing this at 1:30am so I hope this isn't a giant ramble, and I need to present my project to my cohort... well, today.

I have to get some sleep! Would love to hear your comments!