This is fantastic, I had exactly the same experience. Going to share my philosophical thoughts here as I also started with music at the age of 7 and programming at 14.
Curiously, I often pondered over the reasons behind this dual passion. It was during my study of physics that I began to comprehend nature's inclination towards increasing entropy. Essentially, this tendency involves the creation of an abstract configuration within a system, which subsequently materializes into very specific configurations upon the application of an energy source. At this point, discernible patterns begin to emerge alongside symmetries, essential for minimizing information storage and conserving of energy. These phenomena are mirrored in our DNA, which orchestrates the construction of our biological systems using patterns and symmetries. This process continues as we construct systems such as cities, computer programs, music compositions, and companies – all of which serve as expressions of our genetic makeup, reflecting nature's organizational principles under the influence of energy sources.
And now if you want to listen to our free music ;-)
Music and programming are similar on some additional levels as well, and just like there are different archetypes of musicians, I find that there are their parallels in programming too. I wonder if the types match up, for any given musician/programmer.
For instance, as a guitar player I only studied musical theory and composition later in my life and while these days I'm perfectly capable of sitting down and constructing a musical piece, I get so much more out of improvisation, repeating a phrase, mutating it and shaping it differently with each repetition. Getting input from the musicians around me and conversing through our discoveries. That's where I find my true joy and am the most creative.
I also never properly studied Computer Science. I picked things up along the way until one day I was a software engineer (or could properly mimic the mechanics of one). To this day, I much prefer 'designing' in the IDE, refactoring again and again, rather than in a word processor like some of my colleagues. Their method is certainly the most predictable and easily digestible by various XFNs, but it's just not how my brain works. While the musician in me can deeply appreciate Classical Music, I personally prefer playing and listening to Jazz*.
* well actually Blues, but Jazz better serves the analogy, I suppose
I would say those word processor jockeys are lacking in feedback, their way isn't "better" (I hear a bit of apology in your description). More education is a detriment if it leads you to pile speculation on speculation.
Regarding musicians, I've actually have observed this since the start of my career, but I think there's a couple of more prevalent reasons why musicians can be good programmers:
1. Failure and learning as you push through failure: Whether you're learning a piece of music or writing a piece of code, failure is almost certainly inevitable. We learn by failing, learning, and repeating. Often breaking our problem areas (be it music or coding wise) into smaller chunks, focusing on them and trying to fix them. It's basically the red-green-refactor cycle in TDD if you will (but not necessarily). But in the end, musicians and programmers have inherently absorbed the idea that approach a task is going to fail...but you will/can get past it with repetition, insight, and resolve.
2. Acknowledging the breadth and depth with respect to mastery: Both musicians and programmers understand that expertise in their knowledge is shaped by breadth and depth of our domains. As a musician you realize there are genres, instruments, styles, artists, rhythm, melody, harmony, etc ... the breadth is vast indeed! Even in just one instrument, there's a variety of breadth depending on the style of music you play. Same as programmers with the broad range of our field of study and practice ( systems programming, mobile, frontend, databases, operating systems, programming languages, type theory etc...). The breadth is indeed still vast! Both musicians and programmers understand the inherent vastness of the breadth and acknowledging how far deep one guys in each of these areas to feel mastery, familiar, or just plain ol' satisfaction.
I've mentioned those 2 points in various conversations throughout my career. Hopefully it inspires a musician to experiment with programming and a programmer to pick up an instrument :)
To add to the list of things with patterns: the thing that finally made the concept of loops click for me is when I realized they are the programming-equivalent of a crochet pattern (or a knitting pattern but I'm primarily a crocheter).
I've also told quite a few people that are overwhelmed by the idea of following a crochet pattern that it's just like learning to read a sheet of music. And, to add to that, once you know the different stitches and techniques, looking at a blanket or sweater is, I imagine, what listening to a song as a musician would be like.
I love this! I started coding a few years ago and started taking piano lessons a few months ago and even though I'm just starting my journey, I can totally relate to this.
This has always fascinated me because I've always known so many really good programmers who are also musicians, dating back many decades, but I was never able to learn to play. I struggled to learn to read music notation, I tried to learn trumpet at school and later tried to learn piano and guitar, and failed at all three. I love _listening_ to music of almost all types and so I amassed a vast tape collection, then a vast record collection, then a vast CD collection, and now a vast digital collection -- but I was never able to _make_ music.
Mathematics fascinated me and, fortunately, I was always good at it as a kid and followed it through to a 1st class BSc (in the UK) -- but even there, it was the more abstract math that I did well, and the stuff with numbers I struggled with. So, I'd say that was mostly about identifying and applying patterns and transformations.
I was introduced to programming in the mid-70s -- the Sinclair Programmable calculator and then an Algol-60 correspondence course that my high school ran as an elective. I love problem solving with computers and have been doing that ever since -- I feel fortunate that people pay me to do something I enjoy (and I've written open-source software for fun for decades too).
I can definitely see the parallels between the patterns aspect of abstract math and that of programming -- and I seem to have a very visually-wired pattern-matching brain, which I assume came from my father who would design machinery in his head: visualizing a complete, exploded 3D model of a machine (he was a self-taught engineer and, unlike me, he succeeded in learning to play piano, guitar, and violin).
An aspect of that visual pattern-matching, that my wife teases me about, is that I can see the smallest things out of place -- she'll drop something small on the floor and call me to help her find it... and I usually just walk in and stare at the floor and almost immediately spot it (e.g., a small white pill on a white tile bathroom floor!). She calls it my "stupid human trick" :)
I always felt there was a link to Objects and musical aptitude. And I always thought it might have to do with patterns, and the way some patterns "fit" in naturally in parts of other patterns.
Resonates with me, down to the part about the trig identities. My game is Scrabble; in our subculture there are many programmers, musicians, and programmer/musician combo platters also.
I have programmed since 1964. First a a Data Processor. wiring IBM 407 accounting machines, collators and other DP equipment.
I moved through computer operations for IBM 1401 and RCA 301 2nd gen computers. Working for the Florida Education Dept., all Computer Operators had to know how to program both platforms in it's Assembler Language, and help Computer Programmer new hires with console debugging and assembly code. There was only one Computer Programming classes at FSU, IBM Autocoder 101 (assembly language for the 1401) class.
My first real job as Computer Programmer was in 1967. My one year of college and three years in IT gave me the equivalent of a college degree.
I was an RCA 301 and RCA 310 assembly language Programmer.
That is about the time I connected the fact that almost all programmers were either musicians (working pros) or had an intense love of music.
I also found another connection later on. A programmer who worked on cars asked me if I worked on cars. My answer was no. He said too bad, your debugging skills would map over to diagnosing car engine and other problems very well.
I have worked all over America, Europe and some Central America temp work. I have looked for and recognized the two connections repeatedly in all distinct locations with different programmers.
You are definitely onto a valid connection. I wonder how many other connections with various people and activities exist. Someone could write a book on this.
As someone with 30 years in music and 25 in programming, I just want to say I recognize it. Where I'm slightly different is that I mainly derive joy from the 'coming together' of the patterns. Probably because I'm a somewhat impatient, outcome focussed person.
Really love these cross-discipline thoughts. That meta-pattern of slightly unexpected connections *is* enjoyable on its own to me ; )
Pattern matching as an evolutionary skill might be quite simply that... Noticing the pattern that leads to survival was probably pretty important - is that just some grass blowing in the wind or a tiger about to pounce? Or, those patterns in the grass say deer come though this way quite often, so it might be worth hanging around ;-)
We just find interesting ways to apply those skills in our somewhat easier and safer lives these days.
For myself, it's definitely related to creativity as expressed in various ways over the years with Lego and 3D modelling as well as developing. Something from nothing by applying processes and patterns coming together maybe. I tried the whole music thing a long while ago and I don't have the knack.
By "pattern matching" I mean seeing that a pattern applies. The meta pattern matching of finding a new pattern squares the pleasure involved. When I suspect a new power law distribution & then I confirm it with data? That's the best feeling of all.
Regarding the code speaking to you. It is a powerful form of humility to listen instead of trying to impose your will.
This is fantastic, I had exactly the same experience. Going to share my philosophical thoughts here as I also started with music at the age of 7 and programming at 14.
Curiously, I often pondered over the reasons behind this dual passion. It was during my study of physics that I began to comprehend nature's inclination towards increasing entropy. Essentially, this tendency involves the creation of an abstract configuration within a system, which subsequently materializes into very specific configurations upon the application of an energy source. At this point, discernible patterns begin to emerge alongside symmetries, essential for minimizing information storage and conserving of energy. These phenomena are mirrored in our DNA, which orchestrates the construction of our biological systems using patterns and symmetries. This process continues as we construct systems such as cities, computer programs, music compositions, and companies – all of which serve as expressions of our genetic makeup, reflecting nature's organizational principles under the influence of energy sources.
And now if you want to listen to our free music ;-)
https://soundcloud.com/wearecambio
https://open.spotify.com/artist/14hAdljKM4CrT1uTfPOeKL
Music and programming are similar on some additional levels as well, and just like there are different archetypes of musicians, I find that there are their parallels in programming too. I wonder if the types match up, for any given musician/programmer.
For instance, as a guitar player I only studied musical theory and composition later in my life and while these days I'm perfectly capable of sitting down and constructing a musical piece, I get so much more out of improvisation, repeating a phrase, mutating it and shaping it differently with each repetition. Getting input from the musicians around me and conversing through our discoveries. That's where I find my true joy and am the most creative.
I also never properly studied Computer Science. I picked things up along the way until one day I was a software engineer (or could properly mimic the mechanics of one). To this day, I much prefer 'designing' in the IDE, refactoring again and again, rather than in a word processor like some of my colleagues. Their method is certainly the most predictable and easily digestible by various XFNs, but it's just not how my brain works. While the musician in me can deeply appreciate Classical Music, I personally prefer playing and listening to Jazz*.
* well actually Blues, but Jazz better serves the analogy, I suppose
I would say those word processor jockeys are lacking in feedback, their way isn't "better" (I hear a bit of apology in your description). More education is a detriment if it leads you to pile speculation on speculation.
Not so much an apology, as possibly a touch of defensiveness ;) I do find myself to be the more natural musician/programmer.
Regarding musicians, I've actually have observed this since the start of my career, but I think there's a couple of more prevalent reasons why musicians can be good programmers:
1. Failure and learning as you push through failure: Whether you're learning a piece of music or writing a piece of code, failure is almost certainly inevitable. We learn by failing, learning, and repeating. Often breaking our problem areas (be it music or coding wise) into smaller chunks, focusing on them and trying to fix them. It's basically the red-green-refactor cycle in TDD if you will (but not necessarily). But in the end, musicians and programmers have inherently absorbed the idea that approach a task is going to fail...but you will/can get past it with repetition, insight, and resolve.
2. Acknowledging the breadth and depth with respect to mastery: Both musicians and programmers understand that expertise in their knowledge is shaped by breadth and depth of our domains. As a musician you realize there are genres, instruments, styles, artists, rhythm, melody, harmony, etc ... the breadth is vast indeed! Even in just one instrument, there's a variety of breadth depending on the style of music you play. Same as programmers with the broad range of our field of study and practice ( systems programming, mobile, frontend, databases, operating systems, programming languages, type theory etc...). The breadth is indeed still vast! Both musicians and programmers understand the inherent vastness of the breadth and acknowledging how far deep one guys in each of these areas to feel mastery, familiar, or just plain ol' satisfaction.
I've mentioned those 2 points in various conversations throughout my career. Hopefully it inspires a musician to experiment with programming and a programmer to pick up an instrument :)
To add to the list of things with patterns: the thing that finally made the concept of loops click for me is when I realized they are the programming-equivalent of a crochet pattern (or a knitting pattern but I'm primarily a crocheter).
I've also told quite a few people that are overwhelmed by the idea of following a crochet pattern that it's just like learning to read a sheet of music. And, to add to that, once you know the different stitches and techniques, looking at a blanket or sweater is, I imagine, what listening to a song as a musician would be like.
I love this! I started coding a few years ago and started taking piano lessons a few months ago and even though I'm just starting my journey, I can totally relate to this.
This has always fascinated me because I've always known so many really good programmers who are also musicians, dating back many decades, but I was never able to learn to play. I struggled to learn to read music notation, I tried to learn trumpet at school and later tried to learn piano and guitar, and failed at all three. I love _listening_ to music of almost all types and so I amassed a vast tape collection, then a vast record collection, then a vast CD collection, and now a vast digital collection -- but I was never able to _make_ music.
Mathematics fascinated me and, fortunately, I was always good at it as a kid and followed it through to a 1st class BSc (in the UK) -- but even there, it was the more abstract math that I did well, and the stuff with numbers I struggled with. So, I'd say that was mostly about identifying and applying patterns and transformations.
I was introduced to programming in the mid-70s -- the Sinclair Programmable calculator and then an Algol-60 correspondence course that my high school ran as an elective. I love problem solving with computers and have been doing that ever since -- I feel fortunate that people pay me to do something I enjoy (and I've written open-source software for fun for decades too).
I can definitely see the parallels between the patterns aspect of abstract math and that of programming -- and I seem to have a very visually-wired pattern-matching brain, which I assume came from my father who would design machinery in his head: visualizing a complete, exploded 3D model of a machine (he was a self-taught engineer and, unlike me, he succeeded in learning to play piano, guitar, and violin).
An aspect of that visual pattern-matching, that my wife teases me about, is that I can see the smallest things out of place -- she'll drop something small on the floor and call me to help her find it... and I usually just walk in and stare at the floor and almost immediately spot it (e.g., a small white pill on a white tile bathroom floor!). She calls it my "stupid human trick" :)
I always felt there was a link to Objects and musical aptitude. And I always thought it might have to do with patterns, and the way some patterns "fit" in naturally in parts of other patterns.
<shrug>
“Not could I solve the problems quickly but I enjoyed the process.”
Was this supposed to be “Not only could I”?
Fixed. Thank you 🙏
Resonates with me, down to the part about the trig identities. My game is Scrabble; in our subculture there are many programmers, musicians, and programmer/musician combo platters also.
I have programmed since 1964. First a a Data Processor. wiring IBM 407 accounting machines, collators and other DP equipment.
I moved through computer operations for IBM 1401 and RCA 301 2nd gen computers. Working for the Florida Education Dept., all Computer Operators had to know how to program both platforms in it's Assembler Language, and help Computer Programmer new hires with console debugging and assembly code. There was only one Computer Programming classes at FSU, IBM Autocoder 101 (assembly language for the 1401) class.
My first real job as Computer Programmer was in 1967. My one year of college and three years in IT gave me the equivalent of a college degree.
I was an RCA 301 and RCA 310 assembly language Programmer.
That is about the time I connected the fact that almost all programmers were either musicians (working pros) or had an intense love of music.
I also found another connection later on. A programmer who worked on cars asked me if I worked on cars. My answer was no. He said too bad, your debugging skills would map over to diagnosing car engine and other problems very well.
I have worked all over America, Europe and some Central America temp work. I have looked for and recognized the two connections repeatedly in all distinct locations with different programmers.
You are definitely onto a valid connection. I wonder how many other connections with various people and activities exist. Someone could write a book on this.
Ciao,
Dennis
As someone with 30 years in music and 25 in programming, I just want to say I recognize it. Where I'm slightly different is that I mainly derive joy from the 'coming together' of the patterns. Probably because I'm a somewhat impatient, outcome focussed person.
Really love these cross-discipline thoughts. That meta-pattern of slightly unexpected connections *is* enjoyable on its own to me ; )
Pattern matching as an evolutionary skill might be quite simply that... Noticing the pattern that leads to survival was probably pretty important - is that just some grass blowing in the wind or a tiger about to pounce? Or, those patterns in the grass say deer come though this way quite often, so it might be worth hanging around ;-)
We just find interesting ways to apply those skills in our somewhat easier and safer lives these days.
For myself, it's definitely related to creativity as expressed in various ways over the years with Lego and 3D modelling as well as developing. Something from nothing by applying processes and patterns coming together maybe. I tried the whole music thing a long while ago and I don't have the knack.
I remember Lindsey well when your family visited us in Japan.
Good to know she grew up.
And in my friends, programming and music have some correlations I suspect. but not poker..
By "pattern matching" I mean seeing that a pattern applies. The meta pattern matching of finding a new pattern squares the pleasure involved. When I suspect a new power law distribution & then I confirm it with data? That's the best feeling of all.
Regarding the code speaking to you. It is a powerful form of humility to listen instead of trying to impose your will.