Things I Learned While Completing My First Project for Flatiron’s Software Engineering Bootcamp

Blaire Grant
5 min readJan 8, 2021

In order to complete Phase 1 of Flatiron’s Software Engineering bootcamp, students are required to build a Ruby gem that provides a Command Line Interface (CLI) to an external data source. The CLI must be composed of an object-oriented Ruby application. This project is meant to further our understanding of object orientation and class relationships.

For this project, students can decide whether they want to use data/web scraping or an Application Programming Interface (API) in order to extract external data. The goal of both is to be able to access data. However, there are some key differences between the two. Web scraping allows a user to extract data from any website that they would like whereas an API can sometimes limit your options based on what is available. This is because not all websites provide an API. Some APIs require the user to obtain a key but there are also many free options available online as well. Because the data coming from an API not always updated regularly, it may not be current. This is where web scraping would be more beneficial. Some of the main benefits of using APIs though are automation and efficiency. This is because computers rather than people can manage the work.

For my project, I chose to use an API. Because websites can be updated frequently, I was hesitant to use web scraping because I did not want a change in the website’s page to cause errors in my application. APIs are the safer way to go if you do not want to worry about any possible problems with your data in the future. Of course, the code can always be updated to accommodate any website changes, but I did not want to worry about anything like that for my very first project. I wanted to be able to focus completely on building my classes and any issues that came with that.

I initially wanted to do a project related to recipes. However, based on the APIs that I found, it was not possible to do what I had envisioned. Because my first idea did not work out, I started planning my project by focusing on the type of data that I could obtain using the open APIs that I found. I spent a lot of time looking into different options for APIs. However, for this project, I found that it’s more important to focus on building a well-designed, object-oriented application rather than worrying about the specific data that will be used.

My project provides data on all the countries around the world such as population, region, capital, currencies, time zones, etc. I think the key to this project is simply getting started…just start coding. I was so focused on what data I was going to use that I spent far too much time on that one detail in the beginning, but I soon realized, that the particular data being used did not matter as much. It was so fun being able to build something from scratch and see it all come together regardless of the data used to accomplish that task. I am happy I chose the API I did because it was a challenge manipulating the data involved. Many of the country’s properties were stored in arrays, some of which also contained multiple hashes, which included other keys and values that were not needed for my application. I had to figure out exactly how to pull out the specific pieces of information needed which forced me to get comfortable iterating over arrays as well as hashes in order to get the particular data I needed depending on the situation. Not only did I get to practice using fundamental Ruby concepts that I learned throughout Phase 1 of the bootcamp, but I challenged myself to learn new things as well. I googled a lot, and this investigative process was by far the most fun to me. Even if you have to try one hundred different ways to make something work, once you finally figure out how to get your code to do exactly what it is that you want it to do, it is the most amazing feeling!

One of the main challenges I had during this project, that actually took me the longest to figure out, was how to open a webpage from my application. One of my country’s attributes was a link to a webpage that would display the country’s flag. I wasn’t sure if I wanted to make the link clickable or have the application automatically open the link in the default browser. However, I soon decided either one would suffice as I tried various ruby gems and none of them seemed to work. I watched a video where system(“open ‘link’”) was used in order to open the link, but for some reason, that was unsuccessful for me as well. It took me a week, but I never gave up. The only way I was able to open the link was using the xdg-open command in my terminal, but I had to figure out how to accomplish that while running my application. I combined the command I saw in the video with the one I knew worked in my terminal by using system(“xdg-open ‘link’”) and it actually worked. Success! The funny thing is, out of this entire project, that is the main accomplishment that stands out in my mind…probably because I worked the hardest on that one. The main takeaway from that is, do not give up! You will eventually figure it out so keep trying, because when you do solve that challenge, it is so uplifting, and you’ll feel like you could really tackle anything you put your mind to!

This project has been a rewarding and challenging experience. I believe the key to success is to get started right away. It can be very overwhelming at first. There are a million videos to watch and ideas that run through your head, but once you get going, everything just falls into place. Also, if you start early then you have more time to build fun features into your code. The options are limitless. You can use your imagination to do whatever it is you’d like which is why this project is so fun! I am very proud of my project! I feel like by doing something all on my own, completely from scratch, I was able to enforce concepts I had learned throughout phase 1 of the course while also solidifying my knowledge in the things that I struggled with in some of the labs. Overall, it was a great experience. I still have the project review to go but I feel like I did a great job with my application, so I am really looking forward to the challenge of the project review as well.

My advice for anyone else doing this project for the first time would be to get started right away and try not to feel too overwhelmed. You probably know a lot more than you’re giving yourself credit for, and honestly, the more videos you watch and notes you read, the more overwhelming it may seem. However, this project is really a lot of fun so just try to relax and enjoy the entire process!

Please check out my project and let me know what you think… https://github.com/grantba/country_data_cli_gem.git

--

--