Tom's blog.

Learning to code

Cover Image for Learning to code
Tom Montgomery

Learnings

At this point, I am fully engrossed in the world of tech and software development. My apologies if I am using misnomers - as with any self-respecting field of work, you need complicated jargon that is easy to get wrong.

Regardless of my lack of my understanding of the nuance that lies within software development, I am really enjoying the field! 'Coding' is the primary action with which one makes things tick in tech. Being around 'coding' necessitated a knowledge thereof and below lies a bit of my journey towards (trying to) undestand it.

First brush

UCT's CSC1006F was the first time I learned to code. It was course taught in Python and covered the nuts and bolts - variables,for loops, arrays, recursion and the like. Not to toot my own horn, but I ended up doing really well in this course.

Initially it was incredibly difficult - like learning how to think, from scratch. But as the neurons in my brain reshuffled, my enjoyment grew and the course gradually relented in its pressures.

Continued development (haha)

Over the rest of my university career I had continual but shallow interactions with coding. My exposure ranged from using R in statistics courses to Matlab in financial mathematics course. (I also enrolled in an additional computer science course, dealing with similar subject matter to the aforementioned CSC1006F but in Javascript).

Each of these encounters was well enjoyed but I failed to make a pretty glaring conclusion - I should go into tech. For the rest of university and into my first job, I always sought roles jobs that looked like developer work in finance. In hindsight, I should have cut out the middle man and sought developer work full stop.

Finally in the weeds

Joining an insurtech startup at the beginning of 2023 finally put me in an environment where coding was what we did and I was around people who were coding for a living.

I worked as a project lead which is technically not a coding role. However, the blurred lines at a startup mean you have pretty much free-reign to get involved in whatever you like (provided this task is assisting others, naturally).

I quickly identified that there were menial, laborious coding tasks that were being outsourced that could pretty easily be achieved internally. The only reason that they were not being done so is because they were repetitive.

Similarly, there were some small coding tasks which could be achieved very easily by project leads, but were not as this role did not necessitate coding work.

Quickly, I identified these as areas I could quickly lend a hand and improve efficiency as well as learn what it meant to write code in a production environment.

Git

The steepest learning curve (up to this point) was git. I have always read that git is something ubiquitous in development and everyone should know how to do it. I have watched the Youtube videos, I have done the udemy courses and I have tried to implement git in my personal projects. I simply did not get it. It was only now, where learning git was the only was to get access to the hallowed code, that I was forced to learn git.

I am so glad that I did. It is an incredibly powerful tool (Linus Torvald's ingenuity is frightening) but, more than that, it seems like a bit of a gatekeeper to the world of coding. I am happy to say that I have passed through this gate (though I am no git expert - I am sure there are things one can achieve on git that I couldn't dream of).

It has also allowed me to see my progress as I learn to code more and more. My git commit history is something I am inordinately proud of:

My git commit history as at the end of November, 2023

Not bad for a "non-technical" project lead!

Javascript and the rest of it

The main language we code in is Javascript and I have found this fairly easy to pick up. I believe this is due to my experience in Python.

What has been interesting is unit testing. This has exposed me to Mocha and Chai. This is not something I had done before and it is pretty challenging. There are some excellent developers at my company who write their unit tests before they begin coding. I'm not sure that appeals to me (but it's the thought that counts).

There have been some Typescript elements floating about in the code I have encountered. The concept of object-oriented programming does not put me off but I am yet to put the effort in to really understand Typescript and how it works.

Where do we go from here?

I think I will always follow a necessity-driven approach to writing code. I am a seller first and a builder second - I am not sure I am drawn to the allure of coding in its "purest" form. I want to be building things that people want, receiving contiual feedback from clients and learning the tools to facilitate this.

That being said, my brush with integrations in this role has certainly piqued my interest and that is the direction in which I shall trudge. Just what shape that takes remains to be seen!