Programming is a humbling experience

Published on 04 Apr 2020

My memories of mathematics in high school are painful. The classes I were in was large, we moved to a different province when I was due to start high school where a slightly different curriculum was taught and therefore I missed out on some important concepts. I remember sitting in a class what we call in South Africa as "Higher Grade" maths, the more advanced course that prepares you better for university level mathematics courses. I was baffled most of the time and there were about 35 - 40 students in my class. As an introvert, I didn't want to have the limelight on myself so I avoided asking questions.

I struggled to grasp concepts. I later switched to the "Standard Grade" level mathematics and performed slightly better, but still loathed mathematics in general, because I didn't understand what I was doing and why. Why do I have to learn these things? I am never going to need them after I finish school! Oh, how wrong I was and I wish I could kick my 17-year old self.

My last three years taking mathematics was a nightmare. My teacher was an unenthusiastic emotionless woman who never paid any attention to me and she presented the material in such a way that bored me to death. I was also stuck in a class with rowdy jocks who kept disrupting things, so I reverted to drawing pictures in by workbook instead of drawing equations, graphs and other math-related things. I don't mean to put the blame on external factors, but as a teenager, I was not emotionally intelligent enough to realise this at the moment. A decade later, I did and it made me fall into a deep depression, because how was I EVER going to catch up? I'll be forever trapped doing mundane commercial art. The lack of solving real problems, falling into repetitive patterns that reached the peak of their efficiency took its toll on me.

I needed a change.

Computers always interested me, but I never understood them and I didn't know where to start. In South Africa, we have a university that does distance learning, sort of like online classes and you have to take responsibility for grasping the material yourself. I liked this idea. Classes full of students didn't appeal to me, I learn better in a quiet, focused environment. I applied for the BSc Computing degree and had to do a bridging mathematics year module to prepare me for a mathematically-intensive degree. I quietly shat myself, but kept composure and started it. After a decade of ignoring mathematics, I had to start from scratch. I failed the exam, horribly. I sat in the exam venue staring at the paper and didn't remember a thing. I wasted an entire year and my own money.

If I failed this exam again, the university wouldn't allow me to continue with the degree. I would have had to enrol in another related diploma first which would take about two more years. I didn't want to do this, because I need to find a way to become financially more independent as well as open more opportunities for finding work in a more economically stable country, somewhere I would not be discriminated against because of my politically incorrect skin colour and where I can leave my house without fear of getting robbed or hijacked. South Africa is a dangerous place if you're not vigilant of your surroundings.

Why did I fail?

Well, I took a job as a web developer and worked full day, 08h00-17h00 with a 4-hour commute each day. It was taxing and I didn't have the energy to study during the week. I decided to take the risk and ask my manager if I can work at home, because for a concept to stick, you need to do it every single day for at least an hour. I learned this the hard way. This is crucial for mathematics and programming. He agreed and I only had to go in to the office on Mondays. It was great! I had an extra four hours a day to study. I settled into a new routine of waking up at 05h00 each day, made coffee and jumped into the books. I am not a morning person and therefore found it hard at first, but it worked. I managed to get all the material in my head and passed the exam I wrote in October. Not Cum Laude, but at least I passed it and that's all that matters.

Where I am now

I am still busy doing my first year modules and they're teaching us the nuances of C++ and how object oriented programming works. I was aware of this term, but never really understood it on a fundamental level. I taught myself JavaScript and PHP (which I am not 100% comfortable with just yet) and can do the most basic things. It's frustrating in a way, because I want to be able to write amazing code that's efficient, secure, maintainable and scalable. I still make newbie mistakes, but experimenting helps me identify mistakes and correct them.

Version control literally saved my ass a couple of times. It is an incredibly useful tool and I cannot work without it. Putting learning it off for so long was one of the biggest mistakes I made. To be honest, it intimidated me, because I didn't understand how it works. You think you're smart, but then something like this comes across your growth path and brings you right back down to earth. It's a truly humbling experience.

I am currently learning how to work with classes in C++ and it's becoming so much easier to understand how things fit together, connect the dots, complete the puzzle. Solve problems. I love how programming is one big problem solving experience. It's the kind of creativity I was missing my entire life (for now at least) and I am feeling the most amazing surge of mental energy which I cannot easily describe to anyone. It's like an adrenaline rush when you figure out why am certain piece of code wasn't working as expected, or when you are stuck with a mathematical problem and you're not getting why a certain proof or formula does what it does and once you deconstruct it, it is like a different world of possibilities open up.

Programming and mathematics makes me feel like a child with new toys.

When I run into problems

Often I run into a problem I just cannot wrap my head around and start feeling major anxiety. I would get stuck in a loop trying to connect dots where there shouldn't be dots to connect. This makes me lose my composure and I get irritated with everything and everyone around me. Nobody seems to be able to help me, because nobody understands my problem. I wish I had a mentor sometimes.

What I do when I realise I am stuck in this bad loop is to close my book or code editor or whatever IDE I am using and go do something else. Anything else. Sometimes I play a video game. Sometimes I go cook a meal and chopping up vegetables and meat seems to be quite a relaxing experience!

My goal is to build myself a mini computer lab at my home so I can experiment with hardware and work with my hands a bit. This allows my brain to go into a diffuse mode to work at a problem in the background. Something like an anti-virus program that scans your hard drives and file systems for malicious software.

This works incredibly well for me and I've sometimes solved problems without actively thinking of them.

My advice to my future self is to just step back, take a look at the big picture, distance yourself. Allow your brain to relax a bit.

I've stopped beating myself up over a problem I fail to solve. It's human to fail at things and we will continuously fail, because we are imperfect. This is nothing to be ashamed of. To fail and to correct yourself using the data from the failure is a tremendously valuable learning experience. Sure, failing makes me feel inadequate and downright dumb sometimes and I tend to be mean to myself during these times, however I see it as a humbling experience that keeps me grounded and protects me from becoming an arrogant, egotistic asshole.

I am forever grateful for the opportunities that I have to learn, to fail and to get back up and move forward. This helps me grow as a person in so many ways and I sincerely hope I can be of value to someone or many people one day by using the skills I've learned along the way for good.

Programming is a humbling experience <3