I want to learn programming but where do I start?

In case you didn’t know: coding, programming and software engineering/development all mean the same thing.

I’m sure every software developer gets this question a lot. While there are a million blogs and videos on this topic already, I’m still gonna go ahead and write this because my twitter followers have been persistent. And I understand where they’re coming from. I’ve been there myself. Every day I’d say today is the day I start and then come on the internet to read about “how to learn programming” and then call it a day.

I think it’s mostly the hesitation to start. Maybe call it procrastination? IDK. Like when you got an essay due and you open up a word document, give it a title and stare at your blank screen for a couple of hours until you eventually fold your laptop (yeah it’s definitely procrastination). Even though you haven’t done anything, you still get that “at least I’ve tried” feeling. Trust me, I know.

This is my first ever blog so I’m gonna try keep it short. I’ll share 3 things: my introduction to Programming, how I learnt it and what I recommend you do to get started.

My University Life

I was formally introduced to programming in university where I took a Computer Science course. I did it for 2 years and eventually dropped out. While my university experience was life-changing, I wouldn’t recommend it. Especially for a CS degree, I think it’s a waste of time. Hear me out.

In uni we learnt a lot of needless theory. What’s the point of knowing the definition of a variable? These theoretic terms only made sense when you used them practically. We had to remember so many acronyms. Why do I have to remember what a CPU stands for when a simple google search will give me that in less than a second. They made us cram a hundred lines of code for our exams instead of testing us for our ability to think logically and solve problems. I personally found uni to be a long and exhausting way to learn programming.

A little side note: most of the CS graduates I know couldn’t put together a fully functional program after leaving uni. Furthermore, the best coders I know never ever set foot in a lecture room.

This isn’t to say you won’t learn programming in uni, I just think it’s much harder when you got lectures, assignments and courseworks you’ve got to worry about. And if you’re a student who works part-time, I think it’d be nearly impossible to find the time. I mean if you can easily get 80% as your final mark without having to know how to code, as a student, what’s the point right?

After leaving uni, I thought because I ‘learnt’ most things I could take an intermediate course to brush up on my skills. I bought an intermediate-advanced JavaScript course on Udemy. To my shock, even the little I thought I knew, I didn’t really know. I was confused. I’d code along with the instructor and even though everything sounded familiar, I didn’t know it. It was devastating and I was in denial. I mean two years of my life went by and I was still a beginner? I didn’t want to admit that but after struggling for a couple of weeks, I did. I came to terms with the fact that if I didn’t start over I’d probably stay confused my whole life.

With programming, a strong foundation is very crucial. All the concepts build upon each other. It’s kinda like algebra. Imagine being unsure about your multiplication skills and diving deep into Algebra, disastrous right?

How I learnt Programming

I bought this JavaScript beginner course on Udemy and I absolutely loved it. It refreshed all the concepts I already knew (in theory) and learnt a lot of new ones. All the intimidating terms I always heard now made sense. It’s a full-stack course but it’s made for beginners. It basically built my foundation. I learnt a bit of backend, setting up my own server, connecting it with a database, authentication, making API calls and so much more. Most importantly, it gave me the confidence I needed to start working on my own projects.

After finishing the course, I did a couple of practice projects. They were a good way to learn but I felt like I needed to do more. I reached out to a couple of friends who had small businesses and volunteered to create websites for them. I mean what better way to test myself right? I made big promises and gave myself tight deadlines which left me with no choice but to deliver. The pressure was real and I went for days without properly eating or sleeping — it was all worth it.

I got some confidence and thought it was time to take it up a notch. I started talking to the people I knew who had real businesses. I’d prepare presentations on all the benefits they’d get from having a website for their business. More times than less, they’d hire me. That’s when I started doing freelance web development.

What I recommend you do to get started

When anyone asks me what language they should start with, my answer is always HTML, CSS and JavaScript. In that order. I say that because firstly, IMHO, these are all easy. They build up — with HTML being the easiest, followed by CSS and then JavaScript. Secondly, you’ll feel like you’re getting somewhere. You get to see the results of all your actions on a browser. Whereas with Python, and most other languages, all you see is a black console screen. Most beginners get bored easily when all they see is black and white text. With HTML, you’ll see how your daily progress will eventually result in a fully designed web page — and that will keep you going.

A lot of people also recommend Python as a first language. You should do some research on their differences and pick one for yourself. TBH, it really doesn’t matter how you start. My first language in uni was C++ (the ugliest programming language known to man) and looking back at it, I’m glad it didn’t make me give up on programming. However, and this is important: you need to stick to whatever language you choose. If you choose JavaScript, make sure you learn it properly. There’s a good chance you’ll think you should’ve chosen something else, erase that thought from your head and only switch languages once you’re at an above-average level. Changing from language to language without having a strong foundation will only lead to confusion.

Before I go into more detail, you need to hear this: coding is like going to the gym. You won’t see results unless you are consistent. You must code every day. You can’t code for a week and expect to see immediate results. It just doesn’t work that way. Coding has to be included in your daily schedule, even if it’s for an hour. And just like how you get better with time at the gym, the more you code the better you’ll get. This is a never-ending process. Again like the gym, even if you consistently workout for 10 years, once you stop you’ll slowly lose your touch.

Image for post
Image for post

If you’re motivated and ready to start this journey, go ahead and buy this course (or any other course for that matter). Courses on Udemy cost about £10–20 (make sure you check the reviews before making a purchase). If you can’t afford that, there are A LOT of good courses on YouTube that are completely free. Leave a comment with the language you want to start with and I will try to find you one. If you can afford it, I recommend Udemy. Their courses are properly structured and you get to interact with other students on your level. The instructors are also available (most of the time) whenever you need help.

Once you’ve purchased your course. Make sure you code along with the instructor. Watching videos without coding never helps. Again back to the gym analogy — imagine saying: “I’ll watch workout routines and call it a day”? Exactly! It doesn’t work that way. For you to see results you have to get your hands dirty. You MUST code or you won’t learn, it’s that simple. Open your code editor and the videos side-by-side. If you have a monitor or a TV, even better. Open one window on your laptop and the other on your monitor.

Code along, rewind and pause if you have to. If it’s a bit too fast for you, try slowing down the playback speed. You’ll come across terms that don’t make sense. Don’t feel overwhelmed by this, it’s totally normal. Open up a tab on your browser and whenever you come across something you don’t understand, google it. Some things you won’t have to really know but having an idea of what they are will always help you in the long term.

Now, as a programmer, it’s totally normal to come across things you don’t know. As a matter of fact, you definitely will. You will hear all these different libraries and frameworks. All these things that just don’t make sense and that’s totally normal. Even experienced programmers who’ve been in the field for 10+ years go through this. There are so many libraries being built every day and it’s almost impossible to keep up with all of them.

Some tips I want to share:

Don’t ever memorise code. This is one of the biggest mistakes I made when I was at University. You just need to learn how things work and when to apply them. It’s ok to use a reference at first but don’t ever try memorising anything.

Learn how to get help — When writing to code, running into problems is inevitable. You have to learn how to find solutions. My favourite thing about programming is the fact that you’re almost never the first to encounter a problem. 99% of the time, someone ran into the exact same problem you’re facing before you. They went on the internet, asked a question and got help. Learn how to find those answers. In the rare case that you are the first, learn how to ask questions.

Stack Overflow and Reddit are your best friends. The developer community on these platforms is huge and very generous. People are willing to help you without expecting anything in return, but only if you’re willing to help yourself. My brother’s favourite Somali saying goes like this: ‘nin quraac hesto baa qado loogu daraa’. It roughly translates to ‘Only someone who has earned breakfast is worthy of lunch’. While I have to admit, I feel some type of way about this quote, it fits this context perfectly. Help yourself first if you want to be helped.

Help other people. I’m sure you’ve heard the quote that says “If you want to master something, teach it”. It applies here as well. When I’m stuck on a bug, I usually go on the recently asked questions on Stack overflow. While I’m waiting for help, I try to help others with things that I might know. I’ve learnt so much by doing this. Seeing other peoples code and their way of solving problems opens your mind up to different perspectives.

Last but not least, don’t ever give up. Learning how to code was one of the most frustrating things I’ve ever had to do. The process was long and sometimes I’d contemplate whether or not it was all gonna be worth it. Now that I have learnt it, I can say this with absolute certainty: it is the single most rewarding thing I’ve ever done for myself. It opened my mind up to a different way of thinking which also helps me make logical decisions in my day-to-day life. It makes the saying “anything is possible” have meaning. You can quite literally create whatever you want, just by writing commands on your code editor. Even for non-technical people, I think knowing how to code is an invaluable skill.

Conclusion

I expected this blog to be much shorter than this. However, I didn’t want to leave anything out. So there you go. I wish you luck with your journey. If you feel like I missed something or have any questions, leave a comment here or send me a DM on twitter and I will try my best to get back to you. For more tech/coding related content, check out my favourite tech YouTuber’s channel.

Peace and Love 💙

Written by

Not a blogger

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store