I want to learn how to code. How do I start? What do I learn? Where do I learn it from? If these questions seem familiar to you then you’ve come to the right place. Not because I’m going to give you all the answers, but I’ll share my experience of learning and give you some pointers. For you more experienced coders, don’t worry, I have something for you too.
Firstly, I have to admit, at this point in time I am not an experienced developer. The reason I decided to write this blog now is because those questions of how do I start are still somewhat fresh in my mind. I have a feeling my opinion on how to start will change somewhat over the next few years, and I’m not sure if that going to be more or less helpful.
I’m gonna guess you’ve had a go at learning at least, probably watched some videos on YouTube, maybe used sololearn a little, but you still dont understand what to do with that information you’ve been given. I was very much the same. I knew how to write a few bits of code, I understood some of it, I could make some sense of code as it’s written. But now what? That’s a big leap to make, which looking back looks a whole lot smaller than it did from the other side. And I think part of the problem lies with the way a lot of tutorials and sites that are meant to help you start. So theres a few common examples of first steps I don’t like.
Theres a sight I saw a lot when I was poking around the internet trying to find something, anything, to latch on to and not lose motivation. And inevitably, I did. Over and over.
This is something I think people who have been coding for a long time seem to forget, seeing “Hello World” printed out in a console window is not going to make anyone feel like they’ve done any programming. The reason is simple: it doesn’t actually do anything. You might as well open Notepad, and just write “Hello World”. To the learner, these two things don’t look different, in both cases you have succeeded in displaying the words “Hello” and “world” on the screen; one is on a white background with black writing, and the other is probably on a black background with grey writing.
int x = 5; int y = 2; Console.WriteLine(x + y);
Maths. Yes, we can do maths, thank you. You don’t need to point out that letters can represent numbers, and the little cross symbol in the middle adds two numbers together. If you did need that explained then I don’t think you should be learning to code just yet.
Yet it is a slight improvement over “Hello World”. At least you have given some instructions that perform an action which the learner can understand. However, it’s not going to make anyone go “wow”. Unless it’s sarcasm, and I am a fan of that.
This is a pet hate of mine, saying I want to learn how to code and having plain HTML explained to me. If I wanted to format a document I’d open Word. Ok, if you want to present something on the web you will have to learn it, but don’t expect anyone to be excited by it.
So … complaining over, at least for now. What should you do then? Before I get into that, I’m going to give you a brief overview of my journey to learning software development.
I remember the first computer I used. Right at the start of the 90’s, I was at my dad’s workplace, and he let me on to have a go on, I believe it was Microsoft Paint. Bearing in mind that I must have been about 6 at the time, this memory really stuck with me. At some point he got me a mid 80’s IBM from a car boot sale, it only ran DOS, but it was my very own computer. Admittedly I couldn’t do much on it but I always liked tech, and that never went away, but through my teen years it dropped away as a priority and I became more interested in music than computers. Through a long series of events that are completely irrelevant to this blog I ended up doing a Masters degree called Sound for the Moving Image at the Glasgow School of Art. And for my final project and dissertation I decided the topic for me was sound and music for games. Of course that meant I had to learn how to make a game to demonstrate something relevant. So I picked up Unity because it seemed like a good game engine for a beginner and started learning how to use it. That meant I was soon exposed to C#. And so it begins.
In the subsequent years I spent a lot of time poking around websites, watching random videos; mostly they were – you guessed it – “hello world” tutorials, and how to add an subtract. I’d just coded reasonably complex behaviour for my game, so this wasn’t gripping me. But I knew game design wasn’t what I want to pursue. So for about 6 years I was poking around at bits and pieces and not really getting anywhere. Then I started a job in admin. Anyone who knows anything about admin will know, sooner or later, probably sooner, you’re going to use Excel. And I took an interest, because Excel is a whole lot more powerful than most people realise. Eventually I ended up writing macros in VBA (Visual Basic for Applications), and that I found fun. But it also solidified in my head that I love writing code, I want to do this for a living.
So we finally get to a tip, if you can, reach out to someone you know who is a developer. In my case I was lucky as I knew James Studdart of https://cynicaldeveloper.com/ through a Facebook group I was in, even more lucky for me was that he is a .NET developer, which means my previous C# knowledge crossed into his domain quite nicely. He suggested I start with some courses on http://pluralsight.com, which is a paid site, but also with a free trial. Now, I had always been a bit wary of putting cash down before, because there’s so many sites to choose from, how do you know which is worth it? Well, a recommendation helps, and I started to learn from there, with James backing me up when I didn’t quite understand something, or something wasn’t working the way it did in the video. That really helps, someone to help you past those little bumps which would otherwise drive you mad. If you happen to want to learn C# as your language then I would also recommend IAmTimCorey on YouTube. I’m not going to tell you that’s the right language for you to learn, it just so happens that’s what I learned so I know more of the resources.
Now Pluralsight is a great resource, no doubt about it, and it can take you through from having nothing to really knowing what you’re doing in many areas, and not just software development. It’s also semi-guided with paths you can take, but the pacing can be a little uneven; sometimes you’ll be bored of having the simplest concept explained in great detail, and sometimes they’ll skip over something quickly, but without it what you’re doing won’t work. So not perfect, but hopefully you can get in touch with someone you know who might be willing to be a mentor and answer the questions you have after doing some online learning.
Now for another question you’re likely asking yourself: what language should I learn? Well, frustratingly, I can’t answer that. Yes, some languages have a steeper learning curve than others, but I wouldn’t encourage you to learn a language because its touted as great for beginners, or be put off by a language that you’ve heard is complicated. When you start the most important thing you can do is motivate yourself, and the best way to motivate yourself if by achieving what you want to achieve. So what do you actually want to make for yourself? Pick a project that you want to make, and look at the options. Don’t worry about actually getting it to work perfectly, try to choose the right tools which can make it work perfectly. And if you get it wrong and want to change, just change what you’re learning. Most programming languages are more similar than they’d like to admit, so if you’ve spent a week learning one language as your first language and decide its not for you, that week of learning has probably cut at least half a week off your learning time for another language. You’ll understand things better, and you’ll get how it works quicker.
That’s about it for the first blog! Please share your thoughts in the comments, I’d love to hear your stories about getting into coding.