How I solved the problem I didn't know I've had - answer to the question of what programming is all about
Tags: computerscience, showdev, girlfriends
Published: 2019-11-18 16:09:54

### Some context for this post

I'm a software engineer by trade. Over the past five years I've been working on both personal and commercial software projects spanning a variety of stacks and technologies from web development to embedded devices. I'm far from the person who knows everything about computer science, but I'd like to think that I can explain a lot of the concepts behind it pretty well.

In one of my recent conversations with my girlfriend she asked me what's the point of programming. After a short pause, I replied: *It's mostly just problem-solving.*

Seeing as this didn't convince her, we've both went through the **effort** of teaching her the basics of JavaScript and writing a piece of code that solves some of the maths problem she has to deal with at work. While this probably helped her understand ***what programming is all about***, I knew that neither of us was completely satisfied with that as an answer.

This post is about giving her, as well as everyone else a better example of what problems you can solve with programming, and how some of these problems we might not even be aware of.

# Where it all started

About two years ago I applied for (and got offered) a position at summer internship program. It was a way to gain some professional work experience and earn some money, but also kill the time between the university terms. Few weeks into my new job, I realised that a nine-to-five job does not actually take all of my time. After all, there's 24 hours in a day! I had to find something to work on in my spare time.

Around that period, one of the things that has also started to gain some real traction was [Amazons Alexa](https://en.wikipedia.org/wiki/Amazon_Alexa) - a voice-first virtual assistant and *new big thing* by Amazon. The popularity of NodeJS was also sky-rocketing and when I learn that Alexa uses Lambda which can run Node... I knew that this is definitely something I want to get my hands on. Another thing that convinced me to do it was [Alexa Perks Program](https://developer.amazon.com/en-GB/alexa/alexa-skills-kit/alexa-developer-skill-promotion) offering the developers a chance to win an Alexa-enabled device (among other promotional items) when publishing a Skill (that's the Amazon's nomenclature for Apps running on Alexa). Without hesitation, I bought [a book](http://shop.oreilly.com/product/0636920046936.do) to teach myself Node.JS and get started with building Alexa Skills. After a week or so of playing with Node I looked up [sample Alexa projects on GitHub](https://github.com/alexa). I was ready to write my first skill!  
There was only one problem... I didn't have a project to work on.

### Open APIs and TasteDive

I looked around for some [open APIs](https://public-apis.xyz) that I could use for my project and quickly stumbled upon [TasteDive](https://tastedive.com/). TasteDive is a *"recommendation engine that lets you explore your taste"*, or in other words - a service that lets you find the movies, books, games etc. that you might like, based on a given title.

*Great! That will do!* - I thought and went ahead to explore what the API had to offer. The interface turned out to be relatively simple yet very powerful. I started working on the project, spending few hours every day after work and over the weekends. After a week or so, the project was ready. I submitted my skill, completed the certification process (after two failed attempts) and just like that, my skill was available on Alexa.

Not much later, an Amazon parcel has arrived at my doorstep and the echo was set up in my room. **Mission complete!**

# The problem I didn't know I had

After submitting my app to the Skill marketplace in a fire-and-forget manner, I've had more time in the evenings to relax. It didn't take more than a week for me to completely clear my IMDB watchlist and I quickly found myself looking for the next movie or TV show to watch. For two weeks straight I was scouring IMDB and Rotten Tomatoes for relevant movies that would be worth my time (although I have to admit, in the end I had also settled for the ones that weren't worth anyone's time). And then it hit me...

> I HAVE LITERALLY JUST SOLVED THAT PROBLEM

Since then, I have started using [Delphic Oracle](https://www.amazon.com/CardioCube-Ltd-Delphic-Oracle/dp/B07499NXQH/) - my Alexa Skill that consumes TasteDive API (see [The Crumbles](https://www.amazon.co.uk/CardioCube-Ltd-Delphic-Oracle/dp/B07499NXQH/) if you are from UK) and it has proven to be significantly **easier** and   **more accurate** compared to what IMDB recommends. It felt great!

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

As all good things in life, summer too came to an end. Few weeks later I forgot all about my Alexa Skill and got busy working on my degree. It was not until about a year or so later that I went to the Alexa dashboard and (to my surprise) saw that **people were actually using it!** It's not any kind of a promotion and I don't expect anyone to go and use my app when they're done reading this post. What I am however getting at, is the moral of the story here.

**Computer science - in its all shapes and sizes, aims to solve some sort of a problem.** It does not matter whether it's a problem that millions of people face on a daily basis, a niche task within a team of people or even something that you struggle with personally. So long as it's a problem (even if it's a **problem that you don't know you have**) - software is there to solve it.