So I’m an on/off noobie but have been focusing on actually sticking with programming what I’ve been working on is Python but this question is for programming in general. For me it’s hard but I want to see how I can get better
Like are these good ways to get good:
Follow tutorials, then work on ways of adding your own twists or changes? Or trying to code it in something else?
Work on assignments from a resource you’re using like in my case Python Crash Course and attempt to redo the assignments without looking back?
Experiment with multiple libraries and library methods or built in methods?
Please share any other ways especially ones that helped you
Also when would be good to start a new language after learning one
Nice try GPT-6
Be result-focused. You’re trying to achieve x. Look at however many tutorials you need to achieve x. Now x is part of your repertoire. Then repeat, with a new x.
Later, you’ll think “I need to do y. I’ve done it before. I’ll just copy that syntax, with new variable names etc” and boom, you’re good at programming.
Find a hobby project you love
I spent an entire summer learning to write HTML because I loved pokemon, and I made a site to show off. It was so much fun
I think the best way to get better at programming is to
- Write programs that you actually want to make
- Whenever you run into a hard part, first try to do it yourself
- Once you succeed or fail, research the problem and see how others solved it
- Always look up words/concepts you don’t understand while researching and don’t stop until you understand
- Repeat
If you like, you can also just read some books or scour some programming related communities for general info, without some specific goal. However, most people don’t have the motivation to do that, because they don’t know what that information is good for yet. That’s why, for most people in my opinion, it’s better to just try to do something and then learn (better) ways of doing what you want, because then you actually immediately get what it’s good for and why you’d need it.
I disagree with your first point, when I started learning c++ I wanted to make an integral approximator, an approximator that takes any function and returns the approximate value. I already knew programming through java, and I’m not entirely used to the C++ syntax. Basically what I did to do my programming project that was “fun for me” was rush through the learning process, skipping detail of classes, inheritance, polymorphism, structs, linked lists, pointers and arrays, to get to lamda functions. Eventually I did get to learn c++ formally with my programming class, most of which I don’t remember learning it during the summer. Its not that doing your own projects is bad, you just can’t be overly ambitious on it.
That #1 is crucial. I see a lot of people get stuck in turorial hell or burn out from doing other people’s projects. Some tutorials are okay if you’re just starting out but at some point switching to your own projects and challenging yourself is necessary
And since OP mentioned being on/off, i would also just say be consistent. Dedicate some time to work on your own projects so you’re not forgetting stuff before it really sticks
IMHO, the top way to get better is to code a lot in a space you’re unfamiliar with. And make it a substantial project, not just some little toy thing. If you want to learn mobile dev, choose an app you want to clone, and start working on it. It will be slow and painstaking going, but you’ll learn a ton.
When you’re stuck, don’t AI. Use standard search because you’ll learn more that way.
And understand that people who are skilled in the art have been learning for years. Don’t let that dissuade you. Just take it one step at a time and someday you’ll have been learning for years, too. ✋🖐️🖖🤘
MIT made several of their classes free online, CS 101 will teach you python and foundations of programming….
https://ocw.mit.edu/tutorials just teach you how to do one specific thing, not general coding….
it’s kinda hard but you can go at your own pace… just remember a class is supposed to take months, not a couple days, so it’s okay to take some time doing it….Wife just went þrough þe Harvard version of þis, and… take þe MIT one. Þe Harvard class stinks.
Following tutorials and courses is definitely a very popular way of learning programming but I personally hate it. For me, the motivation was always a problem to solve, and programming was just a tool to solve it. Of course, you probably need to follow some kind of guided experience to gather the absolute fundamentals, but to get better you just need to apply this in practice.
The first ever problem I decided to solve with programming was organizing pirated video files into manageable directory structure. I knew almost nothing about programming at this point and my thought process was something like this:
- Which programming language should I use? Search the web, read a bunch of articles, make a decision. I chose Python.
- Ok, first I need to find the files to process. Search the web for “get files in a folder Python”. Read a bunch of answers (never just a single one!). Apply the solution.
- Now I need to somehow discern between movies and series episodes. Search the web for “check if text contains text Python”.
- Repeat until you have a working program…
Now, the most important part of this is to have an idea for a project which either solves a real problem of yours or just is exciting to you. Some examples of my projects:
- Due to weird grading system used in my school, calculating GPA was pretty inconvenient. I decided to solve this with programming. I wanted to make the solution easily available to my teammates so I created a web app.
- I wanted to control my smart TV using a computer. I knew it can be controlled using Android application so it seemed likely that I can do the same using my PC.
- I bought a smart lightbulb and I was playing with setting it to different colors while listening to music. A thought suddenly popped up: “hey, can I make it blink to the music?”.
When starting most of these projects I had no idea how to approach the problem. So I just searched the web until I knew it. In the beginning you will probably be searching and reading much more than writing code. But that’s a good thing! Programming (or rather software engineering) is not about typing out code, it’s about breaking down the problem into smaller chunks until you actually know how to solve each of the chunks with the tools you have at hand. Once you have this understanding, writing code is usually rather easy.
This isn’t exactly answering your question, but one thing I see a lot of people get wrong is not knowing how to express what they’re trying to do. An example I recently ran into would be when I was trying to enforce that an input to a function is a child class of an abstract class. If you express the problem with the right vocab you won’t end up googling “how to make sure a variable is of the right type” and getting a different answer completely. I find that having taken classes and followed through books has helped me the most because the vocabulary to define my problem is ingrained in me. That’s what I’d recommend the most, is increasing exposure to concepts and vocab so that it doesn’t feel weird when you have to express a new problem.
In addition to ‘just write anything and stick with it’, getting someone who knows what they’re doing to look at your code and criticize it can be useful.
I was gonna say, having my code reviewed by senior devs and SMEs was the single biggest factor in me progressing as a developer. That doesn’t mean you shouldn’t research and try things by yourself first, but having your code looked over by expert eyes will point things out to you that could otherwise take years for you to learn to notice on your own.
I’ve taught a few developers and have pretty extensive experience on the topic
Tutorials are fine, but don’t get stuck on the idea that you need guidance through the whole process, it’s better to avoid tutorials entirely than it is to follow a bunch of tutorials.
For example, when I started out my most recent student we began with some challenges that I knew would provide some context for future projects, then immediately jumped into those projects. Depending on what you’re passionate about, the best project for you can differ, but we did the following projects:
- A lemmy face wizard page, literally just a list of lemmy faces that clicking on will copy to your clipboard
- An invoice maker, since they needed to send me invoices because I was paying them for their time
- a react native sudoku app, this one was challenging and took them a couple months, but when they were done they took over one of my contracts for mobile development
And the challenges that led to these projects? Everything from basic algorithms to api interaction puzzles.
My advice would be to pick something that you love and come up with the tiniest project you can possibly think of, then cut the scope a little more.
For example, love pokemon? Maybe make a website that you can click on one of the types and it will highlight the strengths/weaknesses of that type. Love golf? Maybe make a golf score tracker mobile app, a big button to add a stroke and another to move to the next hole.
If you are passionate about something it gets a lot easier to get better at programming because the stuff you’re missing will become obvious and you’ll need to look it up to finish your project.
My very first project nearly 30 years ago was a windows 95 app that moved your mouse to draw in mspaint automatically.
I’d say starting a new language is a pretty big mistake until about 4-5 months after you feel proficient with your first language. Starting over with new syntax has actually caused more than one of my students to quit
After coding a lot, and talking to many people, I have decided that while most people can be trained to be decent programmers; the critical ingredient is both an interest and the ability to sit down and do it for long periods of time.
As long as you have both you will find your path.
For me I learned a lot by reading books, coding my own things, and reading other people’s code. Often on first read, I was intimidated. Sometime I had to take a while to figure out new things. More than once I had to stare at a few dozen lines of code all afternoon.
It really helps to have a debugger to step through each line of code as it runs . This shows the values of variables at each step
And that assumes the code runs at all. I learned to debug my own code, when it would not run, by making every conceivable error several times until I could read the output in my sleep and know how I messed up. That takes a while to make that many errors!
But debugging is definitely very important
Since the op is talking about python, I recommend pythontutor.com it is a visual debugger and not only shows the values of variables but shows the scope which each variable exists in.
- Build stuff.
- Repeat step 1.
Really, just keep doing random projects and look up things along the way. Other learning resources like courses can help too, but should be considered supplemental.
when would be good to start a new language after learning one
Do you feel like it? If you’re interested in some language, just try it.
First something that you have probably already guessed yourself: practice,. practice and more practice.
Then something that too many people in my experience tend to not fully appreciate the value of: read code written by more accomplished programmers and try to figure out and understand why they wrote it the way they did.
deleted by creator
Quick guide on how to get better at X: do X a lot.
Programming is no different. Write programs and do research (aka google stuff) when you get stuck or when you want to further your knowledge. Repeat 100000 times and you’ll know lots.
Repetition doesn’t improve programming in many situations. Even when you get stuck. I could write a bunch of nested if statements every single day, and If they work, I wouldn’t get stuck and ever learn that there can be better ways to do it in many cases.
Especially for people like me, who self-learned and didn’t take any courses, I simply don’t know what I don’t know.
Everything from O notation to Object oriented programming is abstract in a way that you can’t accidentally learn it. I had to find these concepts and learn them, and not because I got stuck.
Well… At one point, these abstract concepts all did not exist. The first people to invent them did get stuck and had to invent them to do what they want.
Maybe you’ll never “learn O-notation” by yourself (why would you call it O?), but if your program is slow and you don’t know how to solve it, you are actually stuck, and need to think about why your program is slow. And eventually you might figure out that no, you don’t need to iterate over all of your entries times all of your entries, it might just be possible to iterate only over all of your entries. And now you have learned “O-notation” or that O(n²) is slower than O(n).
What I’m saying is, when people say repetition, they don’t mean “write if statements again and again” but “solve problems creatively again and again”. Many people have never learned creative problem solving, and so they’re stuck writing if after if.
If you had to re-invent everything that came before you, there would never be any progress.
Humans achieve progress by learning from other humans.
I actually learned O notation from an interview question for a job I applied for, I’d never actually had a program run too slowly before that.
That’s why I included “do research”. I absolutely agree that reinventing everything is not the way forward, but I also think it’s important to get stuck on a problem before looking up what the possible solutions are, because that is when you are in the best position to understand them and how / why they work to solve the problems.
If you write nested if after nested if, hopefully at some point you go “hold on, is there a better way?” And then you do research and learn. That is not to say that learning for knowledge’s sake is bad. It isn’t. In fact it’s great. But it might also be a bit dull to just follow tutorials and such.
Haha, I feel that… My first bash script to loop over my files and use mkv or ffprobe to modify either metadata or encode my files were if statements for every file xD
It worked but was ugly as fuck, tedious and surely not efficient… I had to change each file name manually…
I keep those scripts as “things of the past” to remember myself where I come from :) I’m still chuckling seeing those horrible things, but they worked and I was happy that I did it all by my self :D.






