There is magic in not understanding software. How does it understand what we say? How does it answer our questions, how does it know who my friends are? Whether it is AI or a simple program, it can leave most of the world fascinated. Diving deep into computer programming and AI can only leave you disappointed.

Disappointed because the computer doesn't really understand you. It turns your voice command into text and passes it to a classifier where the intent is extracted. Then a predefined action runs with the argument you provided.

The computer doesn't actually see you. It takes a sample of the image data coming from the camera then runs it in a convolution network. Then it compares the result to the data it has in its database.

The computer doesn't know who your friends are. It calculates the likelihood of you being friends with someone by comparing both your GPS locations and your respective friends list.

It's like watching a magician reveal his trick. Before he reveals it, you are fascinated. Once you know the trick, you lose a little bit of yourself. But you still can't do the trick yourself. One of the biggest open secrets in the magician community is that no one thinks a magician will work this hard to fool you.

In software, knowing the trick does not equate to being able to replicate it. Most of the work done in software engineering goes unnoticed to the end-users. Scaling to make an application available in milliseconds is never celebrated. Making sure emails are delivered is boring. Fixing a small bug that only affects a subset of users is unnoticed. Knowing how software works is kinda boring. But building software is certainly fascinating.