Creating my first app: Goodbye abstract labs, hello the real deal!

Image source: Original artwork by author.
  • The value of planning.
  • The art of persistence.
  • The opportunity to feel proud.

The value of planning:

Planning my app flow, having a clear picture of what I wanted my app to do, and knowing what I wanted my user to experience were three major pieces of the puzzle. I had a few ideas for the project that I tossed around before I settled on my app, which is called Remotely. The idea from my app stemmed from the pandemic and the benefits of being able to work from home. I decided I wanted to make an app that allowed users to search for remote jobs. I knew I wanted to use an Application Programming Interface (API) to get my data rather than scrape a website. Taking the time to search for a good API, that had the data I needed and didn’t require any authorization (which for my first project added unnecessary complication and more opportunities for my app to break), was well worth the time. My app still broke throughout the coding process and I still ran into complications that made me stuck.

Image source: http://www.quickmeme.com/meme/35dnnt
Image source: Original artwork by author.

The art of persistence:

Getting stuck was part of the process. It happened several times throughout the course of creating my app. I was reminded so many times that coding is like existing in a world where everything is broken. What helped me get unstuck was taking breaks when I needed to, pushing past the frustration, and believing I would get it to work eventually. There were times when I thought I was almost finished, but would find one more step that was needed to help make the code more dynamic and help prevent potential breakage. It was the persistence to make my app more dynamic and more interesting for my user that led to learning opportunities. This project forced me, in a wonderful way, to learn more about Ruby, writing code, making code creative, and debugging. For example, when I used the gem HTTParty to get my data from my selected API, even though the gem is intended to parse the data into a JSON hash that makes it easy to turn into objects, the job description portion was still in HTML format.

How job description looked after I created a job object and before using the above mentioned methods.
Job description after Rainbow(WordWrap.ww “Description:” + ‘ ‘ + info.xpath(“//text()”).to_s.split[0..100].join(‘ ‘) + “…”, 100).chomp.green

The opportunity to feel proud:

I could have just ditched including the description in my project, and to be honest I thought about it. A part of my brain said, just give the user the job title, company name, job-type, and job URL. Why not? That’s enough information (this is the conversation that was happening in my brain). But there was a louder voice that said no, I want to work through this. I want to figure it out. Being persistent and determined to make my project fit what I had planned, gave me the opportunity to learn so much more than I would have. And it gave me an opportunity to feel proud of my accomplishments.

  • Making my code dynamic enough to allow the user to continually select the next ten job postings. One method and a few dynamic lines in my CLI class allowed for a manageable amount of output to the terminal so my user did not have 300 jobs in one output to scroll through.
  • Using a checker to display a message when the user reached the end of all the job postings for a certain category and then allowing my code to continue running, by giving the user the opportunity to loop back to the beginning of the search.
  • Finding gems that enhanced my app and user’s experience. Three additional fantastic gems I must mention are TTY:Link, Rainbow, and WordWrap. TTY:Link, allowed for me to make a clickable link for each job posting that my user could navigate to and open in a new browser window for more information or to apply. Rainbow allowed me to make my output colorful and fun. Who doesn’t need a little cheer when job searching? WordWrap allowed for the words to fit nicely in the terminal and break between words, instead of going to the edge of the terminal and breaking in the middle of words.
Image source: https://www.reddit.com/r/ProgrammerHumor/comments/1lehzz/found_how_i_feel_when_my_code_works/

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Mary

Software Engineer, mother, and former therapist. I am a runner, reader, chai tea drinker, nature lover, and information nerd.