How to start learning to code.
Paschal Chukwuemeka Amah
Chief Technology Officer @ Wowzi | Lead Technology + Software + Product + Data Engineering Strategy and Management | Serverless Microservices | Event-Driven Architecture | Automation Junkie
If you read my last article you will see how I struggled to teach myself how to code. I have been told that it is a fun read but I tell you that although it has a joyful ending, it was tough for the guy in that story. The good news is that you do not have to be that unfortunate. This is how you can learn to code on your own (mostly) without having to go through the same tough times. I am going to use my favorite language, python, as reference here.
What are you doing with coding: If you did not pause and have a convincing answer to this question, you might as well not start. And yes, if your only reason it to explore the possibilities of this realm it is totally a good reason. Is it sufficient? Maybe not. Curiosity must be your first step but you cannot stop there. To continue and finish there must be a practical reason why you want to learn how to code. If you are at curiosity, take the next step. Some want to learn a programming language so that they can be able to do data science or web development, or software development or scripting and automation, perhaps for network management.
Which language is the best? Now that is the wrong question. No language is the best. However, some languages are more suited to particular areas. What you decide above is what is mostly going to drive your choice of language. If you are thinking about data analytics and science, python and R are very well suited for it. If you are looking at going into web development you will want to think about python (Django, Flask) and JavaScript (Node and the army of frontend tools ending in js). I started with python for an obvious reason: my main domain. Fullstack Academy and ionos believe these are your best bet to pick from. Yoshitaka Shiotsu has this article on Upwork which will disambiguate web development language choices for you.
If you are looking at software development, it appears that about all programming languages will deliver this for you in one way or the other. For perspective look at this list by Coding Infinite. Python is at the top for some reason one of which will arguably be the fact that it is a high level language. High Level used to confuse me. It need to confuse you now. It just means that it is closer to human language so you will probably get it by looking at it more than other languages. It makes learning it that much easier.
Setup. Learning to code, this is the part that most resources I tried to learn coding with took for granted. Incidentally it was the very thing that got me stuck the longest. To start learning a programming language, you need to setup your computer for it. This involves setting up the executable file that installs the learning environment for you. It is your first practical step towards learning how to code. Follow this step by step guide to setup for python. I'm afraid that's the language I can refer a guide for you. For other programming languages I'm positive Google is great friend here.
After you setup, you will need an integrated development environment (IDE) to work with. Your learning resource will suggest one. Some of my favorites are Jupyter Notebook, Atom, Sublime Text. There are other great ones like VScode.
Learning resources. Back in 2008 when I tried to learn to code, there were hardly any interactive resources available. That has totally changed today. There are literally hundreds of thousands of them ranging from blogs to youtube channels, whatsapps groups to MOOCs like udemy, coursera, udacity and the rest of them. Yes, that will also make it harder but its better to be spoiled with choice than none.
To learn any language, there are two broad resources to choose from. I will recommend a combination of both. There are 100% free resources at places like w3schools, SoloLearn and similar websites and services. They usually have a well laid out path from basics to intermediate to advanced topics on major languages. For learning, they have basic web or mobile based interpreters they use to demonstrate things for you. Although sites like this will take you far, I personally find that you will tend to stagnate if you do not go further.
Your second option to choose from is MOOCs: coursera, udemy, udacity and the rest. This is why I prefer this (if you are only going to choose one to really follow) to the former type of resource. First, you are likely going to pay a token for the tutorial. I know that udemy courses are notoriously affordable. If you pay for learning material, chances are you will attach more importance to it and try to go all the way. Secondly, part of the very good ones will include some mini projects you can do in the language which will usually include challenges/assignments in the course of the course. The third is that they will usually have a sort of certificate or statement of your accomplishment which are shareable. I am not a big fan of laminated papers but it is good to have a declaration of your achievement attached to your linked profile. Even if the HR is not impressed, at least you have a memento of your effort you can look at and beat your chest (hoping you just laughed). Finally, nothing beats listening to a tutor than having to read the whole thing yourself. It can get boring fast.
There are two categories I will like you to know in MOOCs. One is self-paced and the other works with a calendar and are available only at specific times and assignments are required to be submitted timely. I here recommend the former and for python, I have taken and loved The Python Mega Course. I do no know him personally but he is a great and lively tutor. It was USD11.99 at the time of writing this article.
Find a Mentor. Personally the word mentorship is too heavy for me. I insist of calling it co-learning. You will need someone you can run to when all the resources you have have failed to put you through or simply when you want to get it better faster. From their wealth of experience, these people will not only teach you some tricks, the really good ones will point you in the right direction. The latter is more powerful in my experience.
Find a community. It is no secret that people you roll with are going to influence you the most. I am not asking that you apply for and get an ID card to a coding community. Do it if you find one you fancy and they have this requirement. Seek out people on LinkedIn who have demonstrated good knowledge in the language you are interested in. Don't shoot them missives right away. Having them in your feed is already a good one if they put out materials from time to time. Sure, you can drop sometime when you need their help. Have specific requests. It makes responding to you easier. Ask how you can iterate through a python list of lists as against how can I learn to program in 1 month?.
It's OK if you get stuck. If you heard it is going to be smooth to the end or that I have said it here somehow, take my word that it is a fat lie. The good news is that you will not be the first. The other good news is that you can decide to push ahead. Think about the reason why you started this journey and how far you have come. Speak to your mentor, interact with your community, you will get that spark back.
Skipping the basics. Hello world is the silliest line of code you will ever write and every programming language has that ritual. The things immediately after that usually about data types: strings, integers, floats, boolean, arrays; then loops and iterations and the rest of the foundation are things you never want to skip. No matter the complexity of the codes you write tomorrow, it builds on this structure. If you skip it, you will fail backwards.
Continuous learning. This will arguably be your greatest asset. Programming languages keep evolving and along with them solutions. If you must continue to be relevant you will have to keep learning.
Be deliberate. At a point in your learning, you have to decide which areas you must advance as you cannot take on everything. If you do try to take on everything, you will substantially slow yourself down and risk stagnation. If you are going to use python for web development for example decide to zero in on Django or Flask and get it really good. If you are going to do data analytics, you must be grounded in numpy, pandas and matplotlib.
Build something. If you wait for when you would have learnt well enough to deliver a killer project then you will never deliver any. The only way to know how far you have come is to take on projects from small everyday scripts to bigger automation scripts to full fledged projects. Join or volunteer on a team where you can use the much you have learnt. It will immediately show you how far you have come and what you need to keep improving.
Finally, make sure you are having fun. This is the ingredient that like salt, will give you a great taste of the experience.
All the best in your journeying. I am rooting for you.
Warehouse Analyst at Pebnic Ventures Limited (Guinness Nig. Plc) CPMP, HSE 1,2,3
2 年I have one information for you. You can Sell your online course or digital products on Elitezworld, Be an instructor (teach on Elitezworld) or register as student ?? www.blog.elitezworld.com Also register on its social community where you have your personal blog page, add or follow instructors or students, live chat or message with all various of useful features. ?? www.elitezworld.com Yeah! All are interlinked and fused together.
Data Analyst | Process Automation Engineer
4 年i love this article. Though i have little background on python i will go back to the basics and build sufficiently from there. Thank you sir for this piece
Business Intelligence | Artificial Intelligence | Financial Analysis | Credit Risk Management
4 年I didn't get to see this incisive, inspiring and experiential post of yours before reaching out to you for Mentoring (or in your words, Co-Learning). Thanks Sensei, "we die here".(Smiles)
Data Analyst || Business Intelligence Analyst || Data Visualization Developer
4 年Thanks for this Paschal Chukwuemeka Amah . Every upcoming programmer/Analyst must see this..... very insightful.
Trust and Safety Specialist | Child Safety | Passionate about Digital Safety and User Experience
4 年Wow thank you. This is a very beautiful write up and it will help me a lot in my code learning process