I’ve been learning to code now for just over a year. I’m not yet at a point where I’ve got myself a job, but have learnt a lot over that time. I’m also a secondary school (high school for you US readers) music teacher and have been doing this for almost four years now. As a musician you gain many useful insights and experience of practicing one thing (an instrument) over a long period of time and as a teacher I’ve looked at a lot of pedagogy (how you learn). Hopefully some of the insights below can help you on your coding journey, but just remember, this is what I’ve learnt. I’m giving my advice, but it won’t necessarily work for everyone.
Consistency is king
Making sure you have a regular schedule to work on projects and courses (or just keep learning) is really important. As a musician earlier in my life, ensuring you do a little bit every day towards practicing an instrument was much better than just leaving it all to the last minute. While you’re learning a new language (Python in my case) I find this particularly applicable. Just getting your head around the syntax is an important barrier to overcome, so you can then start to understand what’s happening behind the scenes and the real fundamentals of computing. By practicing your coding everyday you’re building up these skills in your mind by adding to what you learnt the day before. If you leave all your coding to four hours one day a week, you might get a lot done in that time but you’ll probably spend the first hour or so reminding yourself what you were learning last time. This is something that happened to me for a while when I started learning to code (I have only recently learnt my own lessons!). This leads nicely on to…
Whether you love it or hate it, Twitter does have its uses (of course it doesn’t have to be done on Twitter, it’s just where a lot of people do it). This point is about making sure you’re accountable. You may have heard of/seen/come across this before but I’m a big advocate of 100 Days Of Code. Telling yourself for 100 days you are going to spend an hour of that day coding is such good motivation. I’ve had many stop starts when doing this (showing how impressive people who get to 100 are). I think I have about six tweets that say: ‘Day 1: This is it, I’m committed this time’ on my Twitter timeline (and no, I haven’t done 600 days in a row!). But it’s something that keeps me accountable and that’s something that’s hard to do when you’re working on your coding alone, and why it’s really important to…
Find a community
Coding alone often has its uses. You can really focus on the topic you’re working on. You get yourself into that ‘zone’. You’ve got the flow. You’re invincible and the best coding ninja there is. You are unstoppable. No one can get in your way. Except for that bug. That bug you just can’t get your head around. You look at the clock and you’ve spent the last hour in the depths of Stack Overflow and you have countless tabs open on your browser. You’re stuck. All sense of worth and satisfaction has run off down the street and you’re not sure if you’re even cut out to be a programmer.
This is where having someone to turn to can help. And it doesn’t have to be a physical presence in the room. I am part of a few different communities on Slack, and in most of these if I’m really stuck I can just post a question or a code snippet and people will get back to me and help. I don’t remember seeing any negative comments on these groups. The people there are there to help. So I would suggest getting yourself signed up for the Code Newbies group and the 100DaysOfCode group. These are both great communities to get help from if you’re new. Don’t forget, once you’ve got a bit of experience under your belt, that’s the time to give back to those in need and remember you were clueless once too!
You may be surprised to hear me telling you to teach seeing as I’m moving my career away from teaching but it is the number one best way of learning anything. If you’re struggling with a complex topic, try and break it down to it’s fundamental parts and then see if you can explain it to someone who preferably isn’t a programmer. If you can get them to understand it then you will learn so much from that process alone.
If you want a bit more structure to your learning you can sign up to Exercism. This site gives you coding problems for the language you’re learning and then gets a real person to give you feedback on what you’ve written. You can then also sign up as a mentor to be the person giving the feedback. This may sound daunting at first but I have learnt so much from helping people on here that I never thought I would learn. I almost always learn something new, or a new way of thinking from every person I help. My tactic is once I’ve gone through a problem with a mentor I then start mentoring that problem. Don’t feel like you have to mentor all the problems. Just stick with the earlier problems, these are still an awesome learning opportunity and a great way of giving back to the community. Exercism also have a Slack group for mentors.
This is probably going to be my shortest point but immersing yourself in the tech world is really important. When you’re having a conversation and you don’t understand most of the words in a question someone just asked you life can get pretty tough pretty quick. (But always admit when you’re not sure of something). I have found that listening to podcasts around my current language (and coding in general) help expose me to things I may have not found naturally on my own. Every time I hear a word on a podcast I don’t know I try and make a mental note of it (or write it down if I’m not driving) and make sure I look it up later. Doing this has given me a wide vocabulary of tech centric words and is really useful all over the place and ends up saving me a lot of time when doing tutorials or having a conversation with another coder.
Thanks for reading. Any feedback is greatly appreciated (positive or constructive). I’m a teacher, I’ve got a tough skin! ;)
You can find me on twitter here (I’m always open to DM if you don’t want to share with the whole world too): @ed_the_coder
If you’re ‘old-fashioned’ like me I can be emailed here: email@example.com
I co-host the podcast 'A Question of Code' and it can be found here: https://aqoc.dev