Programmers and Musicians
jacobobryant.com
jacobobryant.com
Source code does not store any performance metadata, just the static score. In that sense, it’s more important to get a feel for theory and aesthetics of programming.
But I do think the analogy works well--it's like PG's analogy of hackers and painters.
Think about trying to spin up a purely mental model of an entire distributed system in your head, and then attempting to make deep, cross-functional inferences as a result of seeing the forest, and then solidifying those inferences into concrete, but super ambitious goals, instead of "incremental" goals, as everyone seems so fond of talking about nowadays. "Incremental" progress doesn't often produce paradigm shifts in the overall "game", and it's not the only way to approach problem solving.
I think this is mostly due to cost and risk, but I worry that this is an engineering "muscle" to be trained that we allow to wither away through lack of use.
The author may be coming from a place where they don’t compose music but rather play existing music. Their analogy works I guess but I agree programming is more like composition.
Many song writers compose music but do not perform the songs.
I think the analogy to playing music still works, though. You iterate on a piece by practicing it repeatedly, "adding features" (improving technique), "fixing bugs" (smoothing out passages where you often make mistakes), "polishing the code" (intonation, ornamentation etc).
That being said, maybe I should've picked a different title--the analogy to musicians was a source of inspiration for me but isn't really the meat of the idea, I think.
This dependents on individual viewpoint though. Salvador Dalí said (paraphrased be me) expert artists are just good at hiding where they stole an idea from.
Take any technical skill - music, cooking, athletics, etc. - what exactly is a novice looking to learn? Someone looking to learn, say, self-defense is not interested in kinesiology or designing their our combative system. I just want to cook, vs. I want to create my own takes on dishes.
> In that sense, it’s more important to get a feel for theory and aesthetics of programming.
Unfortunately, I disagree and would say this is a fundamental difference in Eastern vs. Western style education philosophy. Western is a little more about the theory and understanding the why; however, I think it provides a weak foundational knowledge of how to translate theory to application. To paraphrase Mike Tyson this time, everyone has a plan until they get punched in the face.
My opinion is that giving students a stronger foundational knowledge in the beginning allows for us to speak theory later because I can trust that you have the ability to implement that theory.
The place I'm currently working for is the first employer that, at least somewhat, encourages experimentation and practice. And even here, it's not really company culture, it's just a manager that "gets it" i.e. allows 20% for "other projects". You can tell that the employees that are looking forward to that 20% are the ones coming up with novel and interesting ideas for the work-related projects and are generally performing better.
There's a John Locke quote at the beginning of SICP that describes both very well IMO.
"The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.
John Locke, An Essay Concerning Human Understanding (1690)"
[0] https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
And it's fairly easy to assess your own progress, at least up to a point, and take your rewards as they come. You can also begin doing these "for real" whenever you want.
So it doesn't shock me if a person who seeks out programming for some of those reasons, also seeks out music.
Where I work, SRE work on their own tooling that is synonymous to releasing. They rehearse in the form of conducting weekly drills like failovers. The rest is similar to what is written in OP.
(Does that count?)
Edit: Because banjos, like Rodney Dangerfield, get no respect.....
when you read the code you think
programmers are not composers; they are scribes.
when you play music you ???
when you write music you ???
when you write code you ???
when you debug code you ???
Doesn't seem like the answers would be the same in every case.
Yeah that's a load of crap. I have my own set of personal projects, but I know plenty of great programmers who don't. This is pretentious.
On a semi-related note, my blog uses computer science to analyze and generate music: http://jsat.io