How to learn programming – a slightly unconventional guide to getting into coding
Table of contents
- Before we begin
- Is programming difficult?
- Why it doesn’t make sense to tell someone “just write code”
- Fighting your own internal critics
- Dealing with external criticism and gatekeeping
- Learning to ignore people.
- Dealing with difficult people
- Find someone else who loves coding or being a programmer
- If you are still unable to make any progress…
- At the and of it all
Hi, I would like to learn how to code in python? How do I do that?
I want to learn Java. Where do I begin?
Which is the best programming language to start with?
I have heard these questions multiple times and have had them myself. This article is about the things I would have loved to have known about when I started my own journey as a programmer. This isn’t about which tutorial to pick or how many hours a day you must code. The internet is filled with amazing FREE and paid learning resources. This blog is about the mindset struggles and mental blocks I have faced as a noob programmer and what helped me overcome them.
Before we begin
The terms programming and coding tend to be used interchangeably. To clarify: Coding is the process of writing instructions that a computer can understand in one of the many languages that exist like C, C++, Java, Python etc. Programming is the larger process of understanding the requirements/purpose of a software project, building systems, planning, researching, executing, analysing, deploying, maintaining and testing. One could say that coding or writing code is a subset of programming. Keep that difference in mind as you get started with writing code, which is where many people start.)
Okay. Let’s go.
Is programming difficult?
There are plenty of tutorials which make it sound like programming is a walk in the park. But even years later, there are problems that could stump experienced programmers. You might be a beginner comparing yourself with the pros. And that is highly likely to leave you feeling discouraged. It is a lot harder than some people make it to be to get you to buy a course. But it could indeed be challenging and rewarding.
So, think of it like a team sport. You need to train often, by yourself and with other people. Go and play your heart out. You need to be able to play reasonably well with a team (or teams) of other people. Get in enough rest and nutrition (hides) etc.
Why it doesn’t make sense to tell someone “just write code”
People will often tell you "Just start writing code in ___ language". It is easy to start telling people to write code, because that is what one needs to do at the end of the day. Write that darn code. But for someone new, that is like telling someone who has never sat in a train to travel to a completely new country. “Just go to Greenland!”
It is usually not that straightforward or simple.
With apologies to the people of Greenland, there are many steps to traveling into an unknown land. I didn’t know much about travel when I went away on my own to a new city for the first time. Do you have a valid passport? How does one become eligible for a Visa? Are there any travel restrictions in place? Or do you have a realistic budget in place? You get the drift.
There are means of learning which might work well for you: well-structured programming course, a video game that teaches you how to write code, diving into an actual project, watching others code or a colleague who gives you valuable advice.
Fighting your own internal critics
Doing anything new (and challenging) comes down to handling your inner narrative.
Thoughts like:
- I am too stupid for this.
- I am _ (a woman, a teenager, an old person, someone who barely passed my exams, bad at math), so this may not be something I can do.
- My __ (sibling/colleague/partner/parent) told me that I am too stupid to be a programmer. What BS.
I would in no way minimise the social/economic barriers one may face or deny that some of us aren’t more privileged than others. However, it comes down to figuring out which of these are real issues that put us in jeopardy vs. mere excuses that we are making to ourselves.
Dealing with external criticism and gatekeeping
This part is a little personal. When I started out, I was motivated to code after working around a bunch of amazing developers. But I was teased that “Apps cannot write apps! (Lol).” (Apps was my nickname at work). That shit stung and hurt. Some people love telling you what you can and cannot do.
I powered on and the next thing I attempted to learn was Python, and HTML/CSS. I started writing python scripts to automate simple tasks. I loved installing new operating systems and software, trying out different linux distros, from Fedora to RHEL, and messing around with the linux command line.
But the people around me still told me that Apps was still not capable of writing apps. Just because you haven't written any apps doesn't mean that you can't ever.
The discouragement got under my skin eventually because I was vulnerable at that time. I had lost both my grandparents one after another and was a little too emotionally overwhelmed to fight back discouragement. I got into other kinds of jobs for a few years.
But technology is one of my eternal loves and I now know for sure that I cannot be apart from it. I have since then learned to adapt to new languages (hello C# and Javascript) and frameworks as needed. I have also become better at dealing with non-constructive criticism. And Apps has already written apps :P
If you know what you like for sure and people minimize it by saying,” all that is great, but do you know . No one will hire you for this” don’t be disheartened but try to listen to what they might be protecting you from.
Ask people more questions about it. Find out if their hypothesis really holds merit before quitting what you have been doing. Maybe it is a good idea to learn a different technology/language if what you are doing currently has no demand. Maybe you do suck at what you do right now. That is not a failure. It is new information.
And that’s great.
Learning to ignore people.
The first time I read the books Ignore Everybody by Hugh MacLeod and The War of Art by Steven Pressfield – both brilliant works, I didn’t really get the message.
One will never stop encountering things that want your attention RIGHT NOW! Learn to discern who or what truly needs your attention and let the others slide. Meet your own needs before focusing on the world.
Dealing with difficult people
One of my most life changing realisations was that one will not really stop encountering people who will troll, discourage, undermine, or straight up sabotage you.
This is not your audience. Maybe it is a jealous friend who never wanted you to succeed. Maybe you are revealing your strengths to a bunch of bullies who will minimize your capabilities, even if you have the potential to be great. (You do!) Some people just suck. Period.
They will tear down every dream of yours and make you lose your budding confidence. Please don’t stick around such people if you can afford it. It will otherwise cost you your time, money, opportunities, and emotional well-being.
There are kind and supportive people in this world. You will regret not leaving the bullies behind sooner.
Find someone else who loves coding or being a programmer
People who write code or are into programming weren’t born with an innate understanding of C, Java or SQL. They started somewhere. Things are going to seem difficult when you are doing it for the first time. (Or second. Or the tenth). So don’t do it alone. Try coding with a motivated friend (Not one that talks about a lot of great ‘ideas’ but doesn’t create anything). Even better: find someone who has already crossed the mental barriers that you are facing and can help you across them gently.
Most people who appear like experts are also still figuring stuff out. You are exactly where you need to be.
If you are still unable to make any progress…
If you keep at it, you will know in your gut if coding is the right job for you or not. And that is more important than what others may tell you.
But you may be procrastinating a lot right now and still feeling like a failure. Then it is time to look at how you are doing it.
- Are you trying to build a whole app, where you should just be trying to solve a simple math problem?
It is okay to reduce the complexity / difficulty of your task, so that you feel more motivated to do it.
- Are you a perfectionist like me, and overthinking the hell out of what you need to get right? And therefore never starting or putting yourself out there?
Get used to writing imperfect code and building basic apps. And fix them as you go.
- Do you hate the language you are trying to code in? Are you tired or just coding at the time of the day when you are not good with logical thinking? Is the online course you are taking TOO boring?
What is one thing you could do differently in this case?
It is okay to try new things, but it is also ok to give up and do something else. …
At the and of it all
Even if all you know about coding is enough to make using technology a little more pleasant, consider that a win. If it helps you escape getting cheated out of your money by a scam caller using technical jargon in your face, that is great too.
Because no one should lose out on the joys and pains of coding for the wrong reasons.
Happy coding!!!