I’ve recently been revisiting my musical roots. I recently visited the home of my dormant music career (Memphis, TN) and spent time former band-mates and collaborators. I’ve been also been dipping back into the jazz and classical composition worlds, learning who’s new on the scene and rediscovering old favorites.
Something has stood out as I’ve been browsing through online material connecting the dots again. It’s a part of the culture I took for granted as a musician but which now feels sort of foreign. Musicians often talk about each other (and even themselves) in terms of their influences.
An example:
Among Dolphy's early influences were Charlie Parker and the sounds of nature.
It’s also common to talk about who taught you as a musician. Here’s a snippet from my college roommate/bandmate’s bio:
Chris Parker was born in North Little Rock, Arkansas. He first learned from local Arkansas musicians, most notably: Charles Thomas, Art Porter, Sr., Bob Steele, Lee Tomboulian, and Michael Bates. Chris moved to Memphis, TN in 1991. There he received his BA degree from the University of Memphis and learned from/ studied with musicians including Gene Rush, James Williams, Herman Green, Fred Ford, Calvin Newborn, Bill Mobley, Alvin Fielder, Kidd Jordan, Joe Jennings, and Vernel Fournier.
This creates a strong emphasis on creating a tradition which is carried forward and evolve generationally. Jazz is a fairly new genre but here’s an example “family tree” of jazz: Lester Young was influenced early on by Frankie Trambauer. Dexter Gordon was heavily influenced by Lester Young. Dexter Gordon was in turn the biggest influence on a young Virginia Mayhew.
So we have Frankie -> Lester -> Dexter -> Virginia -> ???
This visible passing on of tradition not only conveys a pride in the craft, but it gives listeners an understanding of what to expect when approaching a new artist. Not a completely road map but at least some clues.
In My Job Went to India I wrote about standing on the shoulders of giants in our industry. Musicians make explicit which giants they’re standing on the shoulders of. It strikes me as a bit of a shame that we don’t do that as programmers.
December 2nd, 2008 at 02:17 AM
I know exactly what you mean. Part of the problem, at least for me, is that programmers are often self taught at first, and perhaps school taught afterwards, and rarely do we look for mentors, nor reach out for students to mentor. I can list off a lot of people that inspired me, but the people that got me going I hardly remember now. Just for namesake here are a few people that inspired me at various times in my career:
- Chris Bowen, who taught me that Basic is really cool, and that I can make my own dungeons on a TRS80 if I have enough time and disks! - Why, who gave me plenty of funny instructionals, and some awesome code along the way, to help me teach my students Ruby and chunky bacon! - Dave Thomas, who wrote the first real english book about Ruby that I could get a hold of. - Linus Torvalds, for giving me this dark text based command line that I commonly call my faithful pet. - Steve Jobs and Steve Wozniak, for giving me a reason to keep my inspiration alive and free to pursue all kinds of crazy ideas. - 2600, for giving me lots of fun back in the day. - Larry Wall, for those days when Perl was heady enough for me. - Nicholas Wright, for driving me crazy by constantly camping in my code base. - Rahda Sterling and Justin Fanning, for showing me how a real company can be run. - Shawn Laughey, for giving his time to help sharpen my system administration skills. - 37 Signals for being brutally honest with code. - And many others.
That is enough for now. I hope to see more from others.
December 2nd, 2008 at 03:41 AM
Greetings,
The problem is that (I feel) identifying influences is much harder in the programming world. Do you mean the core concepts, the syntax, the architectural layers, etc…?
For example, @m3talsmith gives a bunch of people, but can they identify what they learned from Linus’s code, or Jobs and Wozniak’s code, or Larry Wall? Or is it the value of their contributions that they honor (and quite reasonably)?
I know I learned a lot early on about how to get the computer to ‘do stuff’ by tweaking code from David Ahl’s ‘Basic Computer Games’ books, and some of that still carries over (‘i’ and ‘j’ as iteration variables, which I believe comes from Fortran originally). But the GoF Design Patterns book (and others like it) taught me far more about thinking about programming, and yet it has had almost no influence on how I write each line of code. (How those lines fit together, though, is fundamentally changed.)
So…what do you look for? The cultural influences (Linus’s easygoing nature), the code influences (David Ahl’s wonderful games), the ubiquitous influences (RMS’s for the GNU tools), the architectural influences (the GoF for Design Patterns, Martin Fowler for Refactoring), the syntax influences (Sun’s Java examples, 37signals Rails, FSF’s C, and SGI’s C++)?
I feel like music isn’t made by large groups of disparate people, where you can’t really identify who’s responsible for specific parts. Much of the code that people learn from has been touched by many hands. You can say, ‘My Ruby code is influenced by the Rails source, and the Ruby standard library’, but picking an individual is harder. (Many people would be tempted to just say DHH, similarly to saying ‘Linus’, when they learned deeper C concepts from the Linux kernel.) Architecturally you can probably identify a few books and maybe some co-workers or friends who helped point you in the right direction, but it’s not really the same as musicians, who have specific (often well known) people who they identify as clear influences on their art.
Still, it’s a good idea at many levels, and I think it’s what Ohloh had in mind with their ‘Kudos’ system.
So tell us! What are your software influences, Chad?
— Morgan
December 2nd, 2008 at 04:40 AM
As a programming musician I totally hear you. In fact, my band is called The Neo-Nostalgics because we feel like we’re constantly stealing old music and making it our own new music. Not all musicians are so bold as to identify with their true influences. Many musicians want so bad to be different, unique, and “indie” that they refuse to identify with their roots. Roots will tell a lot about a person in any context. If you want to learn more about a person, learn about their parents. As such, we as programmers
@Morgan describes the difficulty in identifying these roots or traditions that we follow, but there’s definitely some easy ways to talk about our roots. For instance, we can talk about it by language and learn a lot about a person’s background in code (and what we can expect from that coder). BASIC > HTML > PHP > C++ > Java > PHP > Ruby > Ruby on Rails. You can get a grasp of what my background is (even though I’m leaving out the little bit of Python and Perl and Javascript and all those other languages I’ve coded in). I personally think that these languages influenced the coder I am far more than any book or individual programmer did.
December 3rd, 2008 at 01:57 AM
It sounds to me like we need self.inflections ;) ... sorry I couldn’t help it Chad.
December 3rd, 2008 at 05:25 AM
Thanks for the awesome comments! I will follow up with another post. I owe you a list of influences at least.
December 4th, 2008 at 12:40 AM
@Carter: Basic > QBasic > C > C++ > ASM (for various architectures) > XML/HTML/CSS > SmallTalk > Visual Basic > Pearl > Java > Javascript > PHP > D > Python > Ruby > Erlang >Objective-C > and a lot of forks and branches in between. Hardware design, CAD, 3D Design, Flash.
I do agree with the Basic book angle. When I first started (by opening the help menu and figuring out what random write was, and this “if” thing) I quickly stumbled across a Basic book at a garage sale written in the 70’s – 80’s. It was written for kids, and even though I was not one, at least in my mind, I really appreciated how thorough their examples were, how consistent the lesson plan was, how well they demonstrated OOP even before it became a mantra, and how they hit the right level with nothing but a sketch of a worm and some blocky containers. Really the graphics angle was the most effective one. It allowed my 12 year old mind to really soak up the concepts. That’s why I appreciate Why’s take on ruby teaching; and why I will eventually finish the book I’m writing.
@Morgan: That’s the real issue. What part of our influences comes from contributions platform wise, and contributions code wise. Programming is infinitely harder to trace than spending years with a musical mentor. As I’ve stated, a lot of programmers are self taught in one form or another. I feel that the platforms and frameworks have more to do with influencing them than any one person or code source.