How Programming is like Music Production
I’ve spent time learning digital music production as a hobby. It’s interesting to learn how the audible sausage is made, takes away some of the magic, but only some. Here’s a few observations on its similarity with programming re: productivity, idea generation, creation.
- It’s good to Work when inspiration hits - strike while iron is hot
- At the least, take down notes of your idea.
- Once when jamming I came up with the catchiest chord progression and wanted to record and jam on it but not right that second. But I tried to memorize the abstract details, something like Key of A-minor, chords: IV-I-III-V, in a slow bouncy tempo.
- Maybe 30 minutes later I forgot it. I tried playing it again but was mixing up the wrong chords and lost the vibe I just had
- Exact same with code - if your computer is right there, and a solution hits re: the problem you’ve been stuck on, code it, pseudo-code it, or if its still vague then rubber-duck w/ yourself or someone to flesh out the idea and then write it down somewhere if it’s still half-baked. Don’t save the work for later
- "The palest ink is better than the best memory”
- Save mental bandwidth for creative tasks, not menial & rote ones, distractions, & setup.
- Programming and Music Production both have repetitive, menial tasks needed to crank out digital creations. Like setting up your IDE (Integrated Development Environment) or your DAW (Digital Audio Workstation). Maybe your working on a backend server that needs to start through a Docker container. Or you need to enter in fake test data into your DB to test out a new feature. Whatever the task, automating it away in a script or a pre-made template in your work environment saves you minutes and potential headaches so you can jump right in and work.
- ex: bash scripts, DAW templates
- have efficient hardware - a slow laggy computer will interrupt flow state.
- Programming and Music Production both have repetitive, menial tasks needed to crank out digital creations. Like setting up your IDE (Integrated Development Environment) or your DAW (Digital Audio Workstation). Maybe your working on a backend server that needs to start through a Docker container. Or you need to enter in fake test data into your DB to test out a new feature. Whatever the task, automating it away in a script or a pre-made template in your work environment saves you minutes and potential headaches so you can jump right in and work.
- Both proudly use completed work from other musicians & programmers
- Musicians use samples, there’s music libraries(like Splice) dedicated to samples or pre-made synth-presets for you to use(usually for a fee ). Programmers use libraries, modules, and packages of work created to solve specific problems in code(usually for free).
- This seems to be because of both spheres affinity with sharing, sometimes open-source and sometimes for a price, but sharing nonetheless.
- Kanye is a master at sampling.
- Choose your instruments & master the parts to master the whole:
- Instruments are like programming languages & frameworks. Learning one deeply will give you a broad understanding of your craft that carries over to other languages or instruments (also, programming as a whole, and music as a whole) . Because they tend to operate in the same domains and on the same principles. (guitar, bass, drums all work on the basis of rhythm and groove; java, python, javascript, even c++ work based on the concept of Object oriented programming)
- ex: Programming: Object-oriented programming, abstraction, modules, readability, code re-use from Java will help in Javascript or Ruby on Rails.
- ex: Music: rhythm, tone, technique, tempo are all used in Guitar. Theyre also used in almost every other instrument, if not all.
- Choose your weapon: Java vs Javascript. Strat vs Tele
- Java is like a Stratocaster. Versatile, broad utility, common/popular, time tested. Think John Mayer, Hendrix, literally every other major guitarist.
- Javascript is like a Telecaster. Was more of a niche use/sound. But became super popular because of its simplicity and robustness in different settings and use cases; e.g. the browser-DOM and lofi music. Think Nirvana, Springsteen, Zeppelin, tons of Country. (Browser code, Node.js, React.js)
- Instruments are like programming languages & frameworks. Learning one deeply will give you a broad understanding of your craft that carries over to other languages or instruments (also, programming as a whole, and music as a whole) . Because they tend to operate in the same domains and on the same principles. (guitar, bass, drums all work on the basis of rhythm and groove; java, python, javascript, even c++ work based on the concept of Object oriented programming)
- Collaboration - Jamming w/ others is like rubber ducking, white-boarding ideas, and code reviews (or pair programming). Or if you’re alone, using a guitar looper to jam with yourself is like rubber-ducking to yourself to flesh out an idea or solve a problem.