At the onset of this project, students are asked to fill out a Project Ideation Form and submit it for review. When I was filling out the form, I had all these grand ideas and I wanted my app to do everything (list by books, list by author, list by the month the book is to be released, list by rating) but when I got feedback about my project idea it suggested I keep it simple (or KISS - one of the design principles in programming). I am so glad that I listened to this feedback.
I began my project by watching Avi's great video, which walks you through how to create a gem using bundler (typing: bundle gem cli_app_name_of_project). I highly recommend watching this video before you begin your project. It allows you to see how Avi thinks through making a CLI Gem project and I used it as a frame of reference to begin my own.
After I used gem bundler to set up the skeleton of my project and I set up my environment so that my pry, nokigiri, open uri would work. I started the project by using pen and paper and drawing out a flowchart of what I wanted in my user to encounter.
It looked like this (but with a lot more cross-outs and squiggly lines):
GREETING --> LIST OF BOOKS--> ASK FOR INPUT (what book do you want to see more of?) --> LIST MORE INFO --> GO BACK TO LIST/ SELECT ANOTHER BOOK--> EXIT.
Then, I got to it! I began coding by writing the code that I wish I had (as Avi states multiple times in his CLI Gem Walkthrough video). I started with coding my CLI class. I coded a greeting method, then made an outline method for list_books, and so on, so I had a frame to build out from. Here's the walkthrough of my project!
This project really pushed me to think through a project from inception to completion, something I hadn't done yet, and WOW, did I learn a whole lot!
As we all know being a competent software developer or engineer means continuously learning throughout your career. It’s great! That makes this profession exciting and allows to escape everyday routine at work. In fact, it’s not a job anymore - it’s a lifestyle 👩💻👨💻