September 01, 2015
For most of my life I’ve avoided doing things that don’t come naturally to me.
I quit maths at school after gaining University Entrance, because I was only getting Merits rather than Excellences. Same for all the sciences. I wasn’t any good at playing the flute, so that ended soon after it began (my mother, thankfully, had the foresight to rent an instrument rather than to buy one). And of course, not being athletically gifted, or a good team player, I stopped playing netball as soon as my mother no longer insisted, and dropped P.E. from my curriculum as soon as the school would let me.
I dropped out of university papers that weren’t clicking with me so that I could focus on the ones I knew were easy As. I even spent most of my education working towards being a teacher, because I knew that I would be good at it. I really didn’t give it much more thought than that.
It’s curious to me that as a teenager I picked up coding as a hobby, continued to tinker with it through the years, and eventually made it my career. Programming is not something that comes naturally to me, but unlike year 12 Chemistry class, I love doing it.
Programming isn’t easy for me. It doesn’t just ‘click’ like it does for some people. The concepts are hard for me to wrap my head around and sometimes it’s difficult for me to process and explain my own thought processes around code. Sometimes it’s like a deeper level of my mind understands, but I can’t quite access it right now. If you’re pair programming with me, you’ll often hear me say infuriating things like ‘I feel like it’s something to do with this function that’s being called on line 12’. More often than not, I have feelings about code, rather than logical, coherent arguments.
My ineptitude at programming is very clear in the way I approach it. If you ask me to write 3000 words on Matisse’s ‘La Danse’, and give me a deadline, I’ll wait until the day before the deadline until I finally sit down to write. When I do write, the words will mostly flow fluently from my mind to the screen, and I’ll often need to edit my thoughts down to fit the word limit. I won’t really pay much attention to what I’m doing — It’ll just sort of happen, and to be honest, I probably didn’t learn all that much.
If you ask me to build an app to a set of specifications, though, I’ll start almost immediately. I’ll be anxious about the deadline, and nervous that I won’t get the work done. I’ll code for hours, refactor, and pay very careful attention to what I’m doing. I’ll be constantly worried that what I’m doing is not good enough, even if it gets the job done. In the process, I’ll make endless mistakes. I’ll break everything, and fix it again. I’ll be mostly unhappy with the finished code, but I’ll be thrilled with all the learning I’ve done in the process.
Programming challenges me in ways that I’ve never really chosen to challenge myself before, and the rewards are so exciting that the struggle always seems worth it, even when I’m frustrated by the poor quality of what I’ve written.* Unlike P.E. class, where the reward (or so it seemed to my disgruntled teenage self) was a gloriously red face, sweat, and embarrassment in front of my peers, the reward for writing some functional code is pretty powerful: the immense satisfaction of knowing that you made a computer do the thing you wanted it to do. It’s as close to being a witch as I’ll probably ever get, and it’s one of the best feelings in the world.
There’s probably several lessons in here for my teenaged self, but I guess the main thing I’ve learned is that challenging myself with something I love to do, but find difficult, makes for a much more meaningful existence than effortlessly doing the things I’m good at without struggle.
*Having only recently started pursuing programming seriously, I’m still in ‘the gap‘ — I can recognise good code, but rarely can I write it. One day.