Learning Programming Basics
Last updated
Last updated
So, you've chosen your programming language. Now hear the most important thing – you only need to learn to write very simple programs and solve simple tasks of 10 or a couple dozen lines. Nothing too complex.
You don't need to study frameworks, you shouldn't try to make your own projects, or "follow-code" from random YouTube videos - you won't learn anything useful, you'll pick up bad practices and waste your time. Period.
So, the goal here is to learn basics of your language, and learn it well.
You can choose one of these platforms:
Or find free (or paid?) courses that you trust, whose syllabus, I repeat, isn't about some crappy projects but about learning the basics of your programming language and elementary imperative programming!
If you're completely unsure about the material and can't find anything suitable - write to me, I'll try to help you quickly and free of charge with choosing initial material.
If we're looking at training platforms with tasks, I personally recommend starting with exercism because for some programming languages, their tasks are arranged in a learning path with quite detailed explanation of materials.
Just start with it, really. You'll have time to return to codewars, I promise.
Make sure that you enabled learning mode, it should look like this:
If you're starting with a programming language that only has practice mode (no learning mode tree, just a list of tasks) on Exercism, start with easy ones tasks and review all materials provided. Each task includes helpful explanations, documentation links, and hints to teach the necessary concepts for solving it.
Another good point on Exercism – you can ask someone, a mentor to review your solution and provide valuable feedback on your code! And this is for free!
While Exercism is free and has no ads or paid content, they rely on donations to maintain their service. Consider trying it first, and if you can spare some money later, think about donating to help them keep running this valuable platform.
Okay, moving back to learning process – try to understand the problem and attempt a solution before looking up answers or asking LLM for help. Only honest work will improve your learning and problem-solving skills.
This is entirely on your conscience - if you want to learn something, you'll try to apply your own efforts and train your brain.
You'll constantly want to cheat yourself, take shortcuts, and so on. it is Inevitable.
If you stuck on task for a 20 minuts and make no progress, trust me – it will be beter to take a small break, drink some tea, walk for a while. Once you will be back to your screen... Magic might and likely will happen.
If you want to learn more about how your brain works, read "Thinking, Fast and Slow" book by Daniel Kahneman
Besides that, It's still quite difficult and rare for people to have enough self-control to actually learn effectively on their own. My next advice might seem strange, but if you have such an opportunity - find yourself a mentor who will help you in learning, even just one lesson a week.
It's unlikely that someone will help you for free, so look according to your capabilities.
Five years ago, I would have taken such advice with skepticism, but only because I was inexperienced and foolish - a professional, a master can always help you learn something faster, simply because they already have this experience. Plus, mentors usually are those who have at least some teaching experience and desire to teach. Consider this advice seriously.
I am not trying to sell you my help, simply because I am not offering any paid mentorships currently. And also I am not going to recommend you any mentor or platform – there are plenty. And if you will seek a mentor for this step, you actually might need just a good middle-grade CS teacher ¯\_(ツ)_/¯
The goal of this block is to learn to write simple programs, like tic-tac-toe, guessing game, and so on - nothing complex, no graphics - simple terminal programs.
Depending on your predisposition, efforts, and existing experience, you might spend from one to three months on this block.
Don't get stuck, it gets more interesting further on.
Starting with exercises in this block and in all following ones, you'll have to learn a lot. Study many concepts, terms, master new skills.
Learning itself is a skill, and I've tried almost all possible methods to learn something. So now I will share the most precious method - it might be obvious, but it's really effective and challenging, yet rewarding.
If you're really serious and want to establish solid skills, I recommend making your learning real learning through applying so-called "thinking through writing."
I'm an advocate of systems engineering and systems thinking, I won't go into details now, but the rule is very simple: -> You can guarantee that you've learned and remembered something if you can write several sentences or a short essay on the studied or read topic in your own words.
Own words, you hear?
Learning thoroughly, making conscious efforts to think, having self-reflection sessions, and reviewing your notes to recall topics and improve understanding will lead to excellent progress:
When you write programs, in some way you'll also learn through thinking through writing, but most likely in your course you'll solve typical tasks with lots of hints, so to absolutely solidify your skills you need to either write similar programs in another code file and from scratch - try to reproduce at least something in a similar form, solving a similar task.
Or if you want to reinforce a theoretical concept learned, just write somewhere in your notes in your own words what you remembered and understood.
Don't be afraid to write nonsense - it's better to write not quite correctly than not to write at all. In the future, returning to your notes, you'll remember and understand much faster what you wrote about, better reinforce the topic, and almost always from the height of your new experience, you'll get new ideas and new understanding of the material! You can add your new thoughts to the same files with notes or to new ones.
I recommend keeping your study notes in some software like Obsidian. Even better - if you write your thoughts publicly, maintain a blog or write threads - this will give you even more motivation, impressions, and stimulus, which will only positively affect your learning process.
Just ignore stupid trolls. If you're easily triggered - don't read replies and feed them. Just use social media as your public learning journal.
During the learning process while studying the very basics of programming, it might be difficult for you to write about something, but later...
Just keep pushing, try harder! It is hard to write because our brains are lazy and it try to trick us with stress, or when we haven't fully understood what we studied/read. Try harder, hack yourself!
Writing and thinking through writing is just another professional skill you should master if you want to become an elite self-learner and engineer.
Getting just 1% better each day will make you 3.6 times more skilled in a year. Now imagine pushing yourself beyond that 1% daily improvement. Just don't stop! Code, Read, Write RIGHT STUFF!
Last side note here. In case you struggle and start to think that you are stupid and blame yourself saying "I can't understand it, I will never be able to get it 😖💢"
At my very first steps in IT, I was studying the internals of Unix-like systems. Not because it was a requirement for passing my internship, but because from the start I was curious to hack as deep as I could. There were a lot of unclear things to me. But I remember the words of Dmitriy Ketov, from one of his videos about Linux Internals, I will never forget the essence of it:
"If a human invented or discovered it, you can understand it. Sooner or later, keep trying."