Coding: A Creative Discipline
I first started coding when I was about 8; it was around this time that my dad had a job with newly formed Zeneca, now AstraZeneca, following it's split from ICI Pharmaceuticals. The culture surrounding IT hardware disposal back then was very much different to what it is now, and he would bring home old, tired 286 machines for me to play with exactly like this one;
For the record, this is a Compaq Personal III, released in 1987 it boasted an astonishing 12MHz 286 processor, 640kb of RAM and 20mb hard drive. Beggars, as they say, cannot be choosers.
One thing to note though is that this machine is pre-windows, and ran purely on MS-DOS command line. To navigate even the most basic functions required some rudimentary programming knowledge, but this wasn't my true playground. Inside the depths of this OS, was a little program called QBasic; an IDE for the BASIC programming language.
Here, my imagination ran wild. I created little applications that would answer (very specific) questions, draw patterns on screen that would render at different speeds and even indulge in a game of Gorillas where the objective was to throw a banana at the opposing Gorilla using angle and force modifiers whilst accounting for windspeed. But the coolest thing to do, was get the computer to sing.
Using the PLAY command it was possible to compose simple musical arrangements through pure code and have the computer play it back to you. Below is a snippet I've pulled off qbasic.net to illustrate the syntax;
'Play scale in 7 different octaves
scale$ = "CDEFGAB"
PLAY "L16"
FOR i% = 0 TO 6
PLAY "O" + STR$(i%)
PLAY "X" + VARPTR$(scale$)
NEXT i%
In my youth I composed minute long masterpieces (or so I thought) using the same code, often trying to copy the music I heard on my Sega Master System games like Sonic the Hedgehog and Alex Kidd in Miracle World. I wish I'd kept the code from that simpler time, if only for posterity and hilarity.
As it turned out, this was a sign of things to come on two counts. Firstly I took up music not long afterwards, the first instrument being the recorder which I am certain is mandatory in primary school. This was followed by the guitar when I was 12, partly influenced by a desperate and misguided attempt to impress my then high school crush. That futile endeavor came to naught, however 22 years and a music degree later I still play the 6 string.
Secondly, I took up IT as profession in my early 20's. I started in support and administration however I quickly found my niche in dealing with pesky and persistent problems that needed someone to dive deep into the OS to find the solution. From there it was a natural jump into software development and I specialised primarily in database systems, learning T-SQL first before picking up C# and VB. net later.
That's all fair and good, you may say, but what on earth does all this have to do with the subject of this missive?
Well the point is this. I've written songs and tunes for as long as I've played an instrument, and always within the western classical tradition; this is the set of notation and scales that just about every pop, hip hop, rock, metal, dance, classical etc. piece uses within our western culture and beyond.
It has established patterns and progressions that are considered best practice when trying to achieve specific moods or conforming to genre archetypes. There a patterns that could be considered sub-types such as cadances, and using a repeated phrase known as an ostinato throughout a piece is a common composition technique. In notation there are coda's which basically act as "for loops" in the music in order to prevent repeated notation of the same part in the score.
For those code-monkeys out there, this should all start to seem familiar. Objects, classes, functions, parameters and variables all have their home in both camps - they just have different names and contexts. To code is to create something from nothing, writing a structure by building on the shoulders of those that have come before using rules and standards laid out ready to help frame your idea.
Like music, coding is best done collaboratively, with the collective wisdom of all involved coming together to make the art created greater than it could have been alone. And like music, this collaboration can lead to heated debate and conflict (and not just the merge kind), but this is how we learn; by challenging assumptions that are often internalised and long held.
That creative flair, that spark that let's someone see the potential for something from what is just collections of keys, be that a piano or a keyboard, is a fundamental part of being a programmer. The love of creating something from nothing is nascent in both disciplines, and I don't think it's acknowledged enough. Too often programmers and IT specialists are typecast as anti-social emotionally crippled nerds hiding in the corner, and whilst in recent years this has improved I believe great programmers should be celebrated, like a virtuoso musician regaling audiences with renditions of Rachmaninoff's Piano Concert No.2 in the key of C++.
It's no surprise to me that 80% of the team here are musicians; among those instruments played are the guitar, drums, viola, harmonium and piano. I keep a guitar at the office that I play to help me clear my mind when I hit a locked door, giving time for my subconscious to find the key.
Coding is a creative discipline, and it's time for that fact to be more widely acknowledged.
Head of Architecture
6 年100% Agree. Remind's me of Linda Liukas' great quote: "If JavaScript is the new lingua franca, we don't need more grammar classes, we need poetry classes". The great thing about coding and music is than anyone can pick them up and have a go, but mastery follows the same path.