Before I delve into the specifics of how I was able to finally complete the CLI project, it’s important that I first provide the reader with my “state of being” prior to making actual progress in this project. Forget feeling excited about the opportunity and challenge to test one’s level of knowledge, I felt immediate uncertainty, doubt, and absolute fear. I began trying to incorporate every resource listed or noted by others, all of which, quickly added to my stress level and self doubt. It wasn’t until I made a conscious effort to simply stop and sit quietly, with pen and paper, mapping out small, achievable goals, that I would finally begin to move forward toward project completion and success. There is certainly much more to this project than what I outline in this post, however, these few critical steps seemed to have a positive cascading effect, unblocking or releasing other opportunities for success.
Analysis of the example code found in the “World’s Best Restaurants” was a great place to start. Taking time to understand each component and begin recognizing program flow highlighted my starting point. First, I needed to build a simple scraper that would allow me to test potential websites and allow for analysis of scraped data. For me, the process of finding a suitable site to work with presented a number of unforeseen problems, not enough data, 403 errors, or data that was difficult to extract. Once my scraper was operational, I could quickly clear 403 blockers, assess for usable data and, ultimately, choose a suitable site.
Armed with a viable scraper, I built a custom constructor and initialize method within the same file. Prior to setting up individual classes and modules, I wanted to scrape data and successfully initialize one album. The idea of creating one piece of my Album class, rather than attempting to work through the entire creation and initialization process, seemed less daunting and allowed me to focus on small goals. Once I found the process for one, the rest would be similar. At this point I am confident my site choice is providing ample usable data, my scraper is extracting that data, and I have successfully created workable objects, I can begin to create modules and call methods that would link my Album, Scraper, and CLI classes.
Successfully linking classes with appropriate call methods leaves the CLI build as the last component of this project. This process was partly dictated by the data that I was able to collect. Using that data I was able to construct my user interface and establish questions and options based on what I had to display.
My personal experience leading up to this project and the approach that ultimately worked for me, might offer others a workable approach to any future challenges. Compartmentalizing the process and understanding the critical “small” steps required too achieve progress, no matter how slight, created a more confident and productive working approach and ultimate success.