Attitudes on Learning Programming

Zaymon Foulds-Cook - April 05, 2019

Anyone who has ever had to learn anything knows it can be hard and programming is one of those disciplines where you need to learn... A LOT!

I have come to appreciate different ways of tackling new knowledge, problems and concepts. Here are some principles that have helped me to consistently learn throughout my studies, and my young career as a software engineer.

Learning Shouldn’t Stop When You Step Outside.

When I read The Clean Coder by Robert C. Martin, the strongest message for me was that learning doesn’t stop when you finish work, school or university. It’s not easy to make time for learning, especially given how precious our free time is. Unfortunately progress doesn’t happen by accident. Being willing to push yourself where others say, “I am done for today”, is one of the only surefire ways to exert control over your career trajectory. Don’t get left behind.

Making time to program and learn outside the hours of your prescribed curriculum or employment will allow you to forge ahead in terms of your capabilities and knowledge. A side-effect of this is that you get to focus your efforts on the things that pique your own interests. Working on interesting side projects can help give you hints to where you want to specialise throughout your programming career.

Balance effort with enthusiasm.

Learning about things you are interested in has benefits, even if they are not immediately relevant to your work project or something you are learning at school. If all the articles you read tell you you need to be learning some specific technology, stack, language or technique if you have no interest then it’s much less likely you will stick with it. It’s imperative to give new concepts the time and attention required to learn something new in order to gain proficiency.

By picking topics and concepts you care about it’s much easier to stay motivated and create a positive spiral where learning can even become… fun!? 😱.

It doesn’t really matter what you are doing. Spending time programming something that interests you is so much more valuable than spending time procrastinating learning about something that’s ‘useful’.

Learning to Learn.

The single, most valuable thing I got out of my time as a computer science student wasn’t any specific skill, algorithm, programming language or technology. It was a personal framework that I developed for my own learning.

Everyone learns differently so I won’t write directly about my personal approaches. Learning for you might be completely different to how I learn. However, next time you tackle a problem or concept, take notes on what techniques really allow you to conceptualise the new information. Experimenting with different methods of study, learning and experimentation, followed by reflecting on their effectiveness is the only way to build an effective framework for your own learning.

Your learning framework can be as simple as a small mental model of your process, or formalised into flows and techniques on paper. Once you have a rough idea of how you learn you can apply and extend that framework to everything you tackle in the future with great rewards.

Even after years of learning and experimentation I am still fine tuning the way I approach new concepts. Don’t be disheartened if you don’t see dramatic results. The most important thing is awareness and self-reflection. Be aware of your learning framework and in time you will naturally change and refine your approach.

Learning may be hard, but it can also be fun and exciting. To get the most out of it you have to give the act of learning and experimentation the time, thought and process it deserves. Good luck developing your own learning framework!

Let me know what you think? Any feedback on my writing and content is greatly appreciated. I am new to this craft. :>


Thanks to the following people for reading my work and giving me suggestions for improvement:

Ben Follington | Ethan Arrowood | Eliza De Castro | Dylan Janssen | Andrei Ionescu

Zaymon Foulds-Cook

Articles and Musings by Zaymon Foulds-Cook ⚡️
Github Twitter