|How Jazz Ruined Programming
|Written by Mike James
|Thursday, 02 April 2015
It's an unlikely culprit. Why blame a style of music for all our troubles? It really is a question of style, programming style.
It is not jazz music that is the problem. Some is good, some not so good.
The problem is that jazz made improvisation cool.
Consider how music was made in previous generations. A composer would study music for years and a player would dedicate a life to learning how to play an instrument.
Then jazz made it cool to just pick up an instrument and play the first tune that came into your head. Playing by ear and improvisation is thought of as the most prizeworthy skill.
To admit that you worked damn hard for years practicing probably shut away from society is to lose any sense of being a gifted performer or composer who just "feels" the music. With the rise of the jazz man stereotype the musician morphed from being a swot to being a party animal indulging in the most exciting excesses possible.
This approach spread to all popular music, rock, soul you name it and well beyond sounds that you might want to label as jazz. Today it is probably the rock star who carries most of the inheritance of the approach. Free, wild and totally talented without any training beyond picking up a guitar.
Why does this spoil anything?
The answer is a very subjective one I admit, but once you agree that a subject that has as much technical infrastructure and skill as music is better tackled by "just doing it" then it sets a dangerous precedent.
The problem isn't that jazz and rock musician don't work at it. It is that they like to pretend that they don't - for the "cool" of it. Any one with any experience realizes this but the innocents that are just starting out don't always.
If programming is to be cool like jazz then the programmer has to be seen as a savant. Don't spend years reading books, attending courses and learning the craft - just do it.
The bridge as built by the engineer
Of course, in this case it is necessary to spend a little, perhaps the minimum, time learning to program, but this is just like having to learn the three chords necessary to harmonise any tune. Any learning has to be hidden because to admit to it lessens the idea that the practicioner is a "natural". It spoils the image.
From here you can see where we are going.
Hacking is the highest jazz of programming.
To hack together a program is the oposite of careful design. It is clever, intuitive and tricky and its practitioners are naturals at it. In the movies the hacker sits down at the keyboard, looks zen-like at the screen and then starts typing fast, usually they just seem to rattle the keyboard randomly, and then everything is fixed - the virus is delivered, the account cracked, the money stolen, whatever.
In practice, we all know that any sort of security threat has to be crafted over many days and involves knowing a lot, but style is more important than substance.
You might think that this doesn't matter much - security hackers have to put the work in even if they don't admit to it. But the impression of the naturally gifted hacker is dangerous.
Consider for a moment the often encountered image of programmers sitting around on bean bags with laptops open typing fast. Consider the occurrence of the hackathon where programmers get together and work on problems in a frenzy for a day or so.
You can say all these things are fine because they produce something but what a something...
This approach to coding is more like a random walk through the possible solutions - it is stream of consciousness programming. You get an end product, but who is to say what the quality of the product is?
In all of these cases you can object to my objection and say that no serious project would proceed in this way and software creation is an engineering enterprise. It is, but with the rise of the programmer as jazz man the wrong idea of what makes a good programmer is being promoted and we value the rockstar programmer or the 10x developer.
So how do they manage to do it?
How do they manage to create anything that works at all?
It is possible to write programs by the sheer application of brute force. You can write a 10,000 line program that just goes on and on. You don't need to organize it into modules or object hierarchies and you really don't have to refactor it to make it pretty or more understandable. You can just write code if you are prepared to keep it all in your head and work really hard at doing so.
But this isn't the smart way to work.
The clever programmers are the ones who don't work in this way and don't break out into a sweat because they know all of the techniques that renders a big difficult program into a collection of small easy programs.
Programming isn't about sitting down, being given the problem and simply typing as fast as possible. It is a matter of thinking about possible solutions, architectures, tools and methodologies. When done well it is a fairly boring activity to onlookers.
This isn't to say that there aren't impressively good programmers, but they really don't have the slightest scent of the rock star about them and improvisation is what they have to use when they have screwed up.
The improv bridge
Improvisation is not a programming methodology.
And a jazz man has never written a symphony - not without transforming into a learned musican first.
To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin, or sign up for our weekly newsletter.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Saturday, 04 April 2015 )