On the surface of things, it may not seem that the art of programming has a lot in common with the art of making music.
Music is typically seen as an inspired act of emotional expression and talent whereas programming is considered an analytical and coldly technical pursuit.
However, in my opinion, both are closer to the middle of those two extremes than most people would think.
To me, music and code both represent a world of infinite possibilities that are made up of small and relatively simple building blocks.
There are only twelve notes in the Western scale, yet there is no limit to the endless variations and countless compositions that are made up of those twelve notes.
Similarly, the most complex computers are built upon an arrangement of ones and zeros that are organized and manipulated into doing some very remarkably complicated things.
Learning music and learning coding both require a lot of exposure to patterns and an understanding of syntax and how the rules work.
In the beginning, I learned the foundational skills of programming by learning how to write simple for loops and declare variables and I learned how to play guitar by learning basic technique and simple riffs.
As my learning progressed in both arenas, I started trying to emulate songs that I liked on the guitar and I started trying to recreate programs based on tutorials.
Eventually, I started being able to recognize patterns and understand how I could compose my own music or my own code after having observed how it was done and spending a lot of time practicing.
A lot of this learning was conducted via trial and error.
When you play a wrong note, you can usually hear your mistake when you hear the discordance of the wrong note in relation to the rest of the notes.
Similarly, when you’ve violated the syntax of a language, you will get an error message.
Learning from mistakes was a huge part of my learning journey in both coding and programming and I am sure I will continue to make more mistakes and learn from them as I progress.
Finally, I can say that writing code and making music were both things I felt I had no natural aptitude for in the beginning.
I struggled to accomplish even the simplest tasks and it took me a long time and a lot of effort to feel like I had any sort of baseline competence.
Ultimately, I think that I have a long way still to go but I have come a long way in my educational journey and I want to encourage anyone who thinks that they may not have the aptitude to do something they’re interested to just focus on getting started and putting one foot ahead of the other one at a time.