From a person that only learned to code a few years ago. Dedicated to all the people that have asked me how to get started with programming.
So you've heard about programming. To your chagrin, it turns out Python isn't just a snake. AI isn't just a deus ex machina invoked in sci-fi for plot convenience. And a car without a driver drove past you and you swear you weren't on psychedelics. Welcome to the world of programming.
Programming is the art of turning caffeine into computer programs. The incessant war between you and the compiler. The process of problem solving using code.
Before I go into how you can learn programming, who should care about this? Whoever wants to learn to program, should learn to program. I don't think there is any age or skill gap that should prevent anyone from starting to learn something they want to learn. However, whatever you do, have a good reason to begin and continue. Don't just do something because of desperation, hype, FOMO or because you dream of getting free lunch at a large Silicon Valley tech company. There are easier ways to get a free lunch.
Now then, if you're dead-set on beginning this journey, let's dive into how you can learn programming.
1. Pick a programming language
2. Learn these three key things
how to create and store variables
data types (ints, strings, floats, etc.)
data structures (lists, dictionaries, etc.)
conditional statements (if/elif/else)
loops (while and for loops)
how to think systematically when using all these
writing style and conventions
does your language require semicolons at the end of lines or indentation
what's the syntax that implements the programming logic you know
Oddities of the language
in python you don't worry about memory allocation and pointers but in C or C++ you need to, SQL has something called join operations, etc.
what are common libraries people use (e.g.: numpy or matplotlib in Python)
where do people find documentation for your programming language
The first time you are learning a language it is usually the hardest because you are trying to learn all three of these at the same time. After doing it once, picking up other languages is just a matter of learning syntax and the oddities of that language.
Resources to learn these three things (this is word for word what I search for):
Go to YouTube and type "freecodecamp [insert name of programming language]" and then watch the 3-4 hour long tutorial for beginners of the language while following along with every example. This is their video for Python. They should help you set up an IDE (where you will be programming). If not, then work on Google Colab if you don't want to set up an editor or if you want to, download and use VSCode.
For quick tutorials or examples of code search for "w3schools [insert name of programming language]" in your browser. Learning through examples like this is very helpful. This is their site for Python.
Use Stack Overflow (a question and answer website for programmers) as well by searching for "[Any programming question you have] stackoverflow" in your browser. Many programmers have had questions about what you are stuck on and others have written answers to these questions.
3. Practice using the language
The only realistic way to solidify your understanding of a programming language is if you use it. You'll probably also learn a lot more by doing this frequently. These are some python projects you can try:
Devpost has a list of hackathons around the world. Participate in one, form or join a team, select a problem, use programming and technology to solve it. These are time constrained environments where deliverables are expected. I primarily learned and practiced through hackathons so I would highly recommend doing these. Hackathons are also a great place to learn from others, expand your horizons, connect with programmers working in industry, and much more. It's a great multiplier for your skills.
Data Structures And Algorithms
freecodecamp's video (never just watch a video, make sure to follow along so you're learning)
Leetcode (questions with real time feedback, used to prep for technical interviews when applying to software roles in companies)
DMOJ Problems. Here are some good ones from the Canadian Computing Competition.
Competitions: Google's, Facebook's Hacker Cup, etc.
Look for tutorials on using Flask (traditionally used) or FastAPI (a faster and more modern framework than flask) to make a web app.
Make a login system.
Create a CRUD app (that can do create, read, update and delete operations). These are some good ideas for what to make.
Intro To Deep Learning With Pytorch (free course by Udacity). I began with this and learned how to use the Pytorch library first.
Then look into training models on datasets (try doing this on Kaggle), implementing work in ML research papers from scratch, or building ML applications.
Make a URL shortner
Make a pong or chess game
Web scraping using beautiful soup
Web browser automation using selenium
Simultaneous Localization And Mapping (SLAM) using OpenCV
Line-following robot using a Raspberry Pi.
Bonus Tip: Document your learning. Videos and visuals of what you are working on go a long way when you want to explain to others what you have worked on. Make a GitHub account and a website like this one so you can showcase important projects you have worked on.
Becoming a good programmer is about becoming better at studying by yourself, hacking around with your code till it works, being an expert Google searcher, and being persistent with whatever you are working on.
That's about it. Good luck.