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
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.
Time and space complexity can become very prevalent, you can quite literally see it from the runtimes. Unlike OOP, which in many cases (Java excluded), you can get away without ever writing it.
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.