This post is contributed by Lucy Mitchell, who taught at a coding bootcamp before working as a developer in health tech (). She also occasionally writes science fiction shorts () and blogs at .
I help teach career-changers how to learn two programming languages, two 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 six months. Trust me when I say we teach ALL SORTS. Trust me when I say you CAN learn to program.
Whether you are learning MATLAB, Python, R, Javascript, or anything else which would help automate, analyse, or improve your work or study experience: it is achievable. One Chances are, if you’re reading this, you are already in undergraduate or postgraduate education, or work in a STEM-related field. Also, you will have already implemented 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 and humanities person”. (I frequently debunk such remarks on the basis that you can be any blend, any type of person you wish, and can learn to code. It might take a bit of hard work and circumstances which support it, but everyone can learn.)
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 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.
He asked, “What did I expect?”
I was very new. 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 with 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”
Schopenhauer
and
“Be not afraid of going slowly, be afraid only of standing still”
(Chinese proverb)
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 that you can update as you go along: “By the end of x-day I will be able to explain: […]”. Team up with someone or get input on your plan from someone who knows more than you do (programming never happens in isolation, contrary to stereotypes, and feedback and accountability are important). Refresh your memory on what SMART goal setting 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 will be 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. 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.
Good luck!