Most of the Jazz repertoire that I know, I learned from "Fake Books". For the many non-musicians who are unfamiliar (and musicians in most other genres who do not make use of them), a Fake Book is a heavily simplified version of a song, generally only containing the melody and simplified chord symbols. For an experienced player, this is enough information to "fake" their way through an unfamiliar song. However, learning to play from a Fake Book is a complex skill. As aptly summarized in the Wikipedia article:
Fake books are not intended for novices: the reader must follow and interpret the scant notation, and is expected to have thorough familiarity with chords and sheet music. However, fake books can be an avenue to playing songs quickly; a few chords and a one-note melody line can allow even an amateur to play a passable version of any song with relative ease.
When I first began trying to learn from fake books, I found them opaque and frustrating. How can I be expected to create some semblance of a particular song with only a melody and a few chord suggestions? After playing through dozens and dozens of songs, I did steadily improve my ability to play decent versions of the songs I encountered, eventually becoming able to play passable versions of many songs on the first read through. As I developed these skills, a couple of key points jumped out at me:
- Knowing what the song is supposed to sound like reduces the difficulty by an order of magnitude. Since I listen to a lot of Jazz, I had heard many of the songs even if I didn't know what they were called or had any previous sense of the chords and melody. Familiarity with the song helps you know if you are on the right track with the feel and how the chords should lead to one another.
- Faking it is mostly pattern recognition. The same harmonic patterns (sequences of chord changes) repeat over and over and over again. The vast majority of chord sequences are drawn from a small set like ii-V7-I (for you music theorists playing at home), or slight variations on those sequences (like a tritone substitution for V7). The rest are either less common but still notably recurring patterns, or a tiny number of novel sequences that are what make a song unique and interesting . If you can recognize the sequences from the very common set and 50% of the less common ones, you can easily play 95-100% of the song already.
- A little music theory goes a long way. I'm lucky to have received a standard course of instruction in music theory as part of my undergraduate music degree, but even knowing a little about voice leading, harmony, and scales allows you to fake it much more effectively. The theory helps fill in the blanks left by the fake book with the best possible guesses.
An interesting thing happened after I had been playing from fake books for a while: I stopped being able to play standards from "real" sheet music effectively. It's not that I couldn't do it; I could easily sight-read the notes and faithfully reproduce what was written much as I would for a piece of classical music. I just became frustrated with the way the music was represented on the page. It was way, way too much information. Instead of having a nice set of guide posts from the melody and simplified chords meant to be embellished, I found myself doing this awkward process of looking at the notes, parsing the elaborate and often misleading chord symbols, and then attempting to reverse engineer and extract a fake book version of the song so that I could produce music that sounded like "me" and not like the version written on the page. It was incredibly tedious. It was also very unexpected that the return of the safety net of fully specified music could prove to be so unpleasant.
As I reflected on this experience, I though about how much harm we do as technical managers by overspecifying the job to be done, giving developers sheet music instead of the fake book version. Part of this stems from insecurity, not wanting to let developers do the wrong thing, and certainly many newer programmers need that level of instruction, but the tendency should always be to remove and cut until just a suggested route to completion (the melody) and the critical requirements to be met (the chords) are left. This gives the developer the creative freedom to complete the task in a way that makes sense to them and helps them establish ownership while still providing a framework for execution.
Not every developer can work with a manager who asks them to "fake it", but I prefer to hire and work with developers who can. By reducing task specificity, I can spend less time giving instruction and leads to a more efficient style of management. More importantly, it also means that I often get better solutions to technical problems than I would had I more fully specified the task. It can be scary giving that much leeway to the development team, but in my experience, reducing task specificity leads to greater independence and confidence on the part of developers, and that means a more flexible and capable workforce.
