Learning to code? Three pieces of advice.
An article written for Scientists Are Humans.
Note: this article refers to ‘coding’ as a subset of ‘programming’.
I help teach career changers how to learn 2 programming languages, 2 frameworks, and myriad skills in 15 weeks. At the end of this, we get them jobs they thrive in. Our placement rate is 96% in the first 6 months. Trust me when I say we teach ALL SORTS. Trust me when I say you CAN learn to understand programming languages.
Chances are, if you’re reading this, you are already in under- or post-gradute education (or work) in a STEM-related field, and you will have already had to implement some kind of programming into your work. I won’t have to convince you that your “brain isn’t really cut out for that sort of thing” or “you’re more of an arts & humanities person” (remarks I frequently debunk on the basis that you can be any blend, any type of person you wish, with enough hard work and circumstances which support it).
This article has 3 pieces of advice and some anecdotes, which I hope will humanise the experience.
I remember the first proper conversation I had with a software developer. I had committed to putting a lot of time in and was struggling with the pace. Most of all, I felt like every time I learnt something new, it wouldn’t really stick. I had to look everything up, all the time. What did I expect? He asked. I was very new. Importantly, though, I should learn to manage my expectations. I would feel this way for a long time. Years. It would be folly to approach this in any other way than the realistic humility required to learn, every day, and just accept that you stand on the shoulders of giants and it will take many years to develop your craft. It is more than acceptable to feel like you barely know anything, and that (in Einstein’s words) “the more I learn, the more I realize how much I don’t know.” If this sounds Sisyphean, you’re in the right ballpark. You can either treat the boulder as a burden and let it affect how you feel about yourself, or see it as an opportunity.
So my first piece of advice is: get used to feeling dumb. You’re not a bad person if your code doesn’t compile. You are not stupid because you have to look up syntax. You are not alone if you debug for 45 minutes only to find you’d made a typo. Eventually, you will solve what you’re working on, and the feeling is fantastic.
My second piece of advice is: be specific about your goals.
In my experience, as a learner there seem to be only two modes: “I don’t get this and I feel incredibly stupid” and “IT IS WORKING I AM A WIZARD”. The space in between those two places is where the learning happens. There are no shortcuts, so you must put the time in. I have learnt to see this as a combination of:
“To overcome difficulties is to experience the full delight of existence”
“Be not afraid of going slowly, be afraid only of standing still”
What really helps is scoping your tasks. Instead of trying to learn a language and a framework and an approach and a load of stuff all at once, pick one thing for right now. The other things aren’t going anywhere. Write a week-long plan of what you’re going to focus on each day. Write a draft of “By the end of x-day I will be able to explain: […]” that you can update as you go along. Team up with someone or get input on your plan from someone who knows more than you do (coding never happens in isolation, contrary to stereotypes, and feedback & accountability are important). Refresh your memory on what SMART goalsetting is. Your time and energy are resources, so you should spend them wisely. At the beginning, it will be more effective to invest time in understanding the constituent parts than it will to try and learn the machine from the top down (when you have some grasp on what’s going on is a great time to graduate to building something using all those parts). Be as granular as you like.
My third piece of advice is: celebrate your achievements.
As a learner, you are possibly the best person to be teaching someone who is a day or a week behind you. Senior software engineers, or people who use programming regularly, probably don’t remember what it’s like to have that dearth of knowledge, or appreciate how arid the educational landscape feels when it’s totally void of content, or any frame of reference. Even after your first day of learning, you are in a position to turn around and help someone who wants to get started. That’s a fantastic achievement.
It can also have a hugely motivating effect to see how much you’ve learnt, if you invest five minutes at the end of every day jotting it down. It turns out the thing that kept me motivated while I was learning programming was actually not the main content, but keyboard shortcuts. I love them! That joy is important. Use it to power your journey.
Give it a go. Good luck!