The more you code, the less you know

I try to avoid cliches. They are just lazy ways to express ideas. Sometimes, however, I must confess laziness gets the better of me and I end up using a cliche. Somehow, even the lazy use of a cliche can actually seem appropriate. Music just strikes a chord, is a both a cliche and a pun, but it just seems to express exactly what I think of music. You can be grumpy, you can bored, you can be dejected, yet hearing music just picks you up. Hearing the open chords of Here Comes the Sun, the guitar riff from Layla, the bass line from Billie Jean, I could list endless examples of music which just lifts me.

 

Despite this, the lyrics can sometimes be cryptic, and I have to admit I don’t always give them too much thought. In some cases, they really might have very little meaning, and are just placeholders to wrap the music around. However, in many cases, there something’s there, which is simply too difficult to decipher without knowing more. One such example, is American Pie, Don McLean. Everyone has heard this track many times. It’s the type of track that seems to ingrained in your consciousness, something that’s always been there. I recently saw a documentary about Buddy Holly, who tragically passed away in a plane accident exactly 60 years ago this month. Don McLean was interviewed in the programme, and he explained that lyric “the day the music died” referred to that tragic event. As he was speaking aloud the lyrics, suddenly it all made sense about what the song meant. Yet at the same time, it highlighted how little I know about other music I listen to. Pick a random song I like, and I suspect I’ll struggle to explain the underlying meaning of it (if there is indeed one).

 

The realisation that you know very little, despite slowly making progress over time in an area, is something which has a lot of resonance, with coding. I’ve been coding for nearly 25 years, from when I was a kid. I think after a couple of years of coding as a kid, on BBCs writing BASIC, I suspect I must have thought I was a genius (teenagers of course think they know it all).

 

When I went to university and started studying maths and computer science, after a couple of lectures, I realised I had to virtually unlearn every bit of coding I had ever done and I had to start again. Gone was the code with odd variable and function names. So to was the complete lack of comments (and numerous other problems with my code) and complete lack of any thought of how to design software. Then when I graduated, I again (wrongly) thought I was a genius at coding because I could do a bit of Java. 

 

However, I had to re-examine that nature of “genius”, when I realised I had no clue about a simple language like VBA, which you invariably end using in banking and I also no clue about doing coding in a commercial environment. After a couple of years, I started Python, and again had to start from a new slate, to learn about all the libraries like pandas, numpy and matplotlib. I got to know about the notion of using version control and test harnesses, which are pretty much invaluable for identifying when you’ve broken something in the code (yes, that little change in code here, invariably ends up smashing some code elsewhere!)

 

Today, I know a lot more Python, yet, there’s a huge number of Python libraries I’ve never used (and even bigger number I’ve never heard of) and have little idea about. The more you learn, the more you realise there’s a lot left to learn. Yes, I know that was another gratuitous use of a cliche.

 

Coding, like pretty much anything else, is a continual process of learning, whether that’s learning from mistakes, learning about new languages or learning new ideas in existing libraries. Just don’t ever think you’ve learnt it all, that’s when you’re likely to have the biggest problems. In a sense though, the reason why software development is so fun, is because there’s always something to learn, some way you can improve how you code.