Programming as an analog to music
There are lots of crossovers between being a programmer and being a musician.
As a musician, you spend many years learning to play an instrument or instruments so that you can produce structured sound for the benefit of either yourself or other people.
As a coder you also spend many year honing specific skills, this is like learning and playing an instrument, it appeals to the same sense of acheivement that you might have discovered after learning the guitar or the drums.
Learning an IDE or an advanced editor like Vim for example could be analogized to learning to play the piano, you need to develop dexterity in your hands and to be really effective you need to be able to touch type, which is in some ways analogous to playing keys to a written score.
Again, learning a programming language, can be likened to learning musical notation, there are numerous symbols that represent different things, that you can combine to produce different results.
Above all, persistence is the most transferrable aspect of musicianship into programming as a craft. When playing live music to an audience the number one rule is DON’T STOP IF YOU MAKE A MISTAKE! It’s exactly the same in software development, the more you practice, the less mistakes you make, the better you get.
Beyond that, forming musical groups is quite similar to building start ups. Each person has a role to play, communication is essential for good results as is proficiency in ones particular role.
I think there is a lot of transferability between these skillsets and would always encourage engineers to take up playing music if they can find the time.
The skills you learn from producing records are in many ways directly translatable to developing software. There is a degree of perfectionism that goes into both, that perfectionism is something you learn.
The teamwork and trust in the rest of the band are often the same thing you hope to find in a startup.
And just from the creative aspect of both things it would appeal to that kind of mind.
As you become more proficient as a musician or producer, you start to understand the physics of sound. Frequency, filtering and so on. Computers operate on many of the same principals, processors have a frequency as does a program that is executing continuously in a loop.
Amplitude and headroom translate into optimisation for headroom for scaling requests per second.
Sound waves at a specific frequency are a form of loop, if you map them on a graph you will soon see this.
Looping is a concept that is fundamental to programming and also translates into most musical production that exists these days.
As you play an instrument in a group, you often spend a lot of time looping through the same pattern and permuting it occasionally. Programs often work in the exact same way.