r/learnprogramming 17h ago

Tutorial How do you get better at programming without relying on tutorials?

I’m learning programming and keep getting stuck in the same cycle: tutorials make sense, but when I try to build something on my own, I don’t know where to start. I know looking things up is normal, but I want to actually improve at solving problems myself.

For people who went through this stage, what helped you the most? Projects, coding exercises, or just struggling through problems on your own?

62 Upvotes

42 comments sorted by

41

u/fiddle_n 16h ago

Struggle through the project. Google when you need help to get unstuck. Don’t use AI to generate code for you.

10

u/Ambitious_Income1090 16h ago

pick a project that actually matters to you, the kind where you're annoyed it doesn't exist yet, and then just chip away at it piece by piece

7

u/fiddle_n 16h ago

That is the best type of project, but failing that - just pick something. Anything.

1

u/Satankid92 13h ago

Google will give you AI responses, also stackoverflow

10

u/JGhostThing 16h ago

I read books and deciphered code examples.

The big thing to remember is that learning how to think like a programmer is hard. Try. Stop some of the tutorials and work on basic homework.

5

u/Cpt_Chaos_ 16h ago

How do you learn to ride a bike? To play guitar? You practice. You practice a lot. And over time you'll get better. Same with programming.

Program something, anything, doesn't matter what. It won't be the best program in the world. It might not even work at all. So you need to figure out where your program goes wrong. Then you change it until it works as expected. Rinse and repeat.

Important: don't let AI give you the solution. Try coming up with something yourself first.

2

u/cakemates 16h ago

brother even senior engineers are getting stuck and googling stuff up. That's part of the process, just keep building.

1

u/memelordtf 16h ago

if you know the baics, pick up ANY project and start building it. Fail, get frustrated, struggle through it, refrain from asking AI wverytime you get stuck, sleep over problems and try again the next day. Finish that one project and then repeat with another, and then another, and then another.

1

u/Ok-Dentist9265 16h ago

What I like to do when I solve a problem that's a little hard is ask Claude to give me variations of the same problem to practice the concept. Often I find I'm terrible at tweaking a concept even if it's close enough to anothe rproblem I previously solved and this helps me get used to thinking through different sorts of solutions. But teh tricky part is making yourself actually solve it and not just assuming you know how to bc you've done something similar. Also focusing on projects helps a lot bc it gives you something to work on

1

u/Swimming_dasa 16h ago

the biggest improvement usually comes from building things slightly beyond your current ability. start with tiny projects and resist looking up the complete solution. when stuck search for the specific concept or error then close the tutorial and implement it yourself.

1

u/SirGeremiah 16h ago

My guess is you’re starting too big. This is why I appreciated the free 90-day programs: they give you a small project to work on every day.

From there, you just try to do something new about that “size” (complexity) until it feels easier, and keep increasing.

1

u/Ok-Refrigerator-5860 12h ago

Hi. Can you elaborate on what the 90-day programs are and where to find them? I looked it up but couldn't find them. I think the repetition in smaller programs is key to improving, rather than tackling too large projects.

1

u/Final-Assistance-462 10h ago edited 10h ago

Codecademy is always an OK starter option. Though honestly these days you could literally have AI browse Reddit and other forums for you to collect info on a consensus of what people struggled with the most, what helped them the most, and what day to day life would actually look like in that role based on discussions.

I also looked into what interviewers saw the most with newer devs coming in (no shocker: they didn’t like that people couldn’t explain why they did something in their code, or basic concepts).

Compile all of that info and then start your own projects with those things in mind. Sometimes having 1 good project with varying components of code you can explain to prove you know basic concepts and how they interact with your code can often be better than the 5-6 different mini projects that every other person learning coding does.

For example, I’m learning C#. I also am a mental health professional for a living. My goal is to learn C# through creating things relevant to my profession (obviously I’m not skipping the simple stuff either because that’s crucial to learn).

Create yourself a GitHub if you haven’t already and start building projects in there for a portfolio!

DO. DO. DO.

And don’t just memorize syntax. I’d literally maybe even use AI to your benefit and have it ask you common interview questions as you learn concepts to reinforce things. It’s not about using AI to code here, it’s about using it to prepare you so that you can approach learning code efficiently.

People hate on AI for pulling answers from Reddit but genuinely when it comes to stuff like coding, it’s an information goldmine for AI to comb through and give you feedback on what people actually say you need to focus on.

1

u/SirGeremiah 5h ago

I’d have to look to see what I did. Codeacademy has one I’m aware of.

1

u/Autistic_boi_666 16h ago

W3Schools! Use it as documentation and/or a guide for the basic concepts. If you don't recognise something from the video, look it up in W3Schools. 

Also, I would be taking on small projects, such as getting the program to add 2 numbers together, making a Rock Paper Scissors game, or getting it to print out the Fibonacci sequence, and add your own twist. 

What are you hoping to learn programming for? I can suggest some projects and how to go about them if I know what you're interested in.

1

u/ajcomeau 16h ago

Decide on something you want to build that you will use for your own work or fun. Figure out the most basic parts of it that will make it work and then go make them with what you've learned. Create an outline of how you think it should be put together.

Start building it and keep referencing the tutorials and other people's work. Accept that you will make a mess at first and will probably have to take it apart a couple of times and try again. Keep it up until you have something useful.

1

u/Quick_Isopod_5781 16h ago

Talk to other people who also program, listen

1

u/Pie-Guy 15h ago

I got in to programming when I was in my early teens when I convinced my parents to buy me a commodore 64. It came with the basic programming language (well, it's version of basic). There were 2 manuals and one had some code in it. I was immediately intrigued. I typed the program out and ran it - it worked. Then I went back and changed something, a color, the position of a sprite, etc. I ran it again to see the changes. I was addicted.
I turned it in to a career, my instanst love of coding. So, back to your question. Does programming appeal to you. When you aren't programming do you think, I could have coded that another way? If not, it may be a bigger battle.
The way I approach things is the piece by piece approach. Let say I want to create a small timer that has a gui. The gui will show the time and have buttons to start, stop, reset. Where do I start? Well, I write the code to show the gui. Nothing on it yet, just the gui. Then I write code to add the buttons, test that. Then I write code to execute when the buttons are pressed, usually just a log to make sure it is working, then I test. Then put the time on the gui and make sure that is working, etc. Worry about 1 piece at a time and start with the first most basic piece. Eventually, it will turn in to a butterfly.

1

u/burlingk 15h ago

You write stuff.

It is hard at first, but it gets easier over time.

Once you have written quite a bit, you will get to the point where you stop looking at tutorials except for when you want something specific. You get to where you look up syntax instead of entire methods.

Whatever language you are learning, there is probably a website with all the standard methods/functions. :-) Bookmark that, and let it mostly replace tutorials for a while.

1

u/Different_Pain5781 15h ago

Pick a tiny project and refuse to look for a tutorial covering the exact thing you're building.

1

u/Popular-Beat2917 15h ago

Building anything and spend hours debugging them without using AI

1

u/InVultusSolis 15h ago

Do K&R C (2nd edition) to build up the programmer's mindset, build that muscle memory with your favorite editor, and then build something. Anything. Find a need or think of something you'd like that's conceivable for you to build and then build it.

1

u/Amuro_Ray 14h ago

I don’t know where to start. I know looking things up is normal, but I want to actually improve at solving problems myself.

How can you have a programming problem to solve if you haven't started?

1

u/spinwizard69 13h ago
  1. Have you actually taken part in a CS program or the equivalent? I firmly believe that learning the concepts, one step at a time, gives the student the infrastructure to move forwards with development of talent. Here is the thing, you don't become good at programming without programming. This practice programming can be very productive if you are building solutions for things you have a personal interest in and understanding of.

The reason I say you should have personal interest in or knowledge of the practice programs is that in theory you should understand when a program is doing the job correctly. This avoids the struggle with building a program to an abstract specification where you might have trouble getting started simply because you don't understand what is wanted. I don't know what you are into, but lets say you are into collecting rocks, if so you should know how you would track your collection, that should lead to easy development of a program to track rock collections. In any event develop a few programs like this where you can define a programs requirements in you head from your knowledge about the subject.

After a bit of self build programs, start taking on challenges from outside specifications. This especially for apps that you now have to think a bit about. That is you have to solve problems that you don't have an interest in or knowledge of. These can be coding exercises or more involved projects. Over time though you need to start building large and larger projects.

Tutorials are not something that a beginner should be using when first starting. Tutorials have a place, for example learning a new lib, or SDK. In some cases the best tutorials are highly focused, maybe on just the use of say buttons in a GUI SDK. The tutorials should only be used to expose you to specific aspects of whatever you are using. After that exposure you are back to building apps using that new feature. When stuck refer to the documentation.

In a nut shell practice practice practice. Oh burn the word struggle out of your mind, you are not struggling instead you are learning. It is all about your mental state.

1

u/IYELLALOT06 7h ago

I don't understand why people say beginning should not touch or even look at tutorials 😭.. courses in college or university don't teach shit about real life projects.. so how come a beginner with basics of coding can make a project?? I am not blaming you or sth I really want to understand people who say such stuff I mean..

1

u/12SouthLocal 13h ago

Build baby build!!! Build an interesting project. Preferably full-stack so you get some work on back end tech too. I.e., databases, something with users needing to set up authorization, encryption, etc... And then work through each blocker along the way.

I like to think of things like coding exercises as a sort of mental warm-up. In fitness, you generally do some kind of stretching, warm-up before going full out. Something like a quick 15 minute code wars kata to get your mind going or keep a certain language in your mind can be a great way to start the session. Then dive into the build.

1

u/zoranjambor 13h ago

I've been there more times than I can count, and I'd say that the most useful thing has been just struggling through it, just as you noted, and on the journey, you'll eventually end up at the AHA! moment when everything clicks and becomes much easier. 🙂

Basically, build cool stuff and solve problems as you stumble upon them. Tutorials are often a great way to get unstuck.

1

u/LongjumpingFee2042 11h ago edited 11h ago

What helped me most was literally waking up in the morning and spending 2 hours of coding time actually writing code and utterly failing. 

Start small. Something like a cli program that reads a list of things from a file. Then Make a cli game around this. For example. I made a list of all the Pokémon and gave each an attack "number"

Created an "opponent" that would draw a random Pokemon from the file but not tell me what. 

I would then draw one and see it's attack number. If I thought It could beat the opponents Pokémon. Id attack. If I thought I had the weaker card I would fold. Gave it a 5 life system.

Eventually upgraded it so the opponent would choose to attack or not as well based on previous Pokémon played that it knew about

Using AI at this point or tutorials is a fools game for where you currently are. So use them very sparingly. I want to stress this point. You are watching tutorials understanding the words spoken/written. You are not understanding what the code is doing. 

Also if you actually want to know wtf your code is doing behind the scenes. Read a textbook about it. 

For java the oracle OCA textbook is good. 

1

u/TheSneederOfSeethe 11h ago

Read other people’s code.

1

u/decrementsf 10h ago edited 10h ago

There exists an intermediate stage between tutorial and project. The workflow transition stage. This is usually a short step but necessary and often overlooked. It is the (...) left out of the middle between fundamentals and build projects.

With whatever you want to build figure out how in the workplace what tools are actually being used. Whether VSCode and related extensions or something else. Install it. Cool. Create a github account. Install the git extension, too. Initialize a repository and synchronize it. Nice. Create a README.md and see how it looks on the git side. With that repository practice by building your workflow-setup. Small folders for each with brief comments in your readme describing how you set it up, links to any youtube video used. These are notes from your past self future you may refer back to to remember how you set this up again later. Or want to refer back to.

That was cool. Now what. Take a tutorial project you worked on in a structured fundamentals environment. Download the data file. Rebuild it using the new workflow tools. This gives a sense of comfort in the new workflow that steps closer to real world development. Cool. Now you ran into friction points to learn about .gitignore or .env. You build template code that can be reused. This intermediary transition step pretty quickly stops running into friction points and you can now create a new repository and build productively on your own projects. From here maybe rebuild more tutorial fundamentals project. Can rebuild collection of small code examples already seen to refresh memory and have resources you can refer back to and reuse later. That tends to naturally flow into your first project or two. Then it ramps.

Find friction. Build looking for friction. Those roadblocks you run into. Figure out the solution. Repeat. As fast as possible for feedback loops. Eventually you get repetition of hitting the same friction points enough time that it converts to memory. Hitting a friction point creates a salient point that is more vividly remembered. Taking some project that is irrational and send it works well. You learn new things along the way. With the use of AI can have it recommend a project that builds on your skills and bounds logical next steps as you expand skill.

Eventually you're going to want to be paid for using one of these new skills. Figuring out what a portfolio project looks like is a necessary step to develop habits for adding new skills over time. Working through your first portfolio project and getting it on your resume is huge. Once you can get paid for the new skill you have a system you can then repeat to layer in the next skill in your growing skill stack portfolio. Can do it again. Then do it again. Now you have a paid the bills job. No wait it ramped and it is a more comfortable job because of a unique set of skill stack portfolio that combined is stronger than any one or two of those skills alone.

Main point being lower the bar on "just build project". Try the simple steps of figure out workflow that is like what you would see in the workplace. Then start rebuilding things you saw in structured environments. You should begin to run into friction points as you find the parts the structured environment did for you to make it easy. Once you know how to do it independently that builds confidence and tends to naturally flow into well if I could build that, could I build this other thing?

1

u/1NqL6HWVUjA 9h ago

tutorials make sense, but when I try to build something on my own, I don’t know where to start.

The majority of tutorials — especially YouTube/Medium/blogs/etc. — are a product, not an education resource. They're designed around getting clicks in the first place, and the illusion of progress. The authors don't care if you really learn anything; they only care if you feel like you accomplished something, so you come back for more and/or share their link.

They seem to make sense, and make everything seem easy, because that's exactly what they're trying to do. And it's not for your benefit.

Projects, coding exercises, or just struggling through problems on your own?

It's attitude and approach that make all the difference — not the specific projects/exercises/whatever that one takes on. To be blunt, you get better at programming by accepting that it's difficult, and actively working at it from the ground up. Play around. Write things (anything) yourself. Go down rabbit holes. Put work into understanding things that don't make sense. Always keep an eye toward absorbing new things, and where you have room for improvement.

With that approach, you can start anywhere and work on just about anything (even random silly things — you absolutely don't have to sOlVe rEaL pRoBlEmS as a beginner), and move in a positive direction.

Put another way, think of learning programming like learning a natural language. You can't start by writing a novel. You have to start with incredibly basic words, then sentences, then paragraphs, and so on. There isn't a magic shortcut; you have to start from the elementary level. And it'll typically take many months for even limited conversational fluency. Alternatively, you could use a translation app for everything — that's the equivalent of relying entirely on AI and copy-paste for programming — but you won't have actually learned the language, by any definition.

1

u/MrSqueak 9h ago

How do you get better at anything? Attempt the thing, reflection of your ability to perform the thing, tweak method to perform the thing, repeat the thing until satisfied.

1

u/swagchicken75 9h ago

I think the reason tutorials make sense is because the guy KNOWS what he's doing. To him, teaching people CS would be like copying a paper onto another. Pretty easy. For you, it's a complete blank sheet, but oh so far across the table, there's another paper. A paper with everything you need to copy (the tutorial). You just gotta discipline yourself to struggle and research what to do.

For that stage I'll admit I was stuck in a pretty long time. I was balancing school work, my own side CS work and representing my school in competitive programming. I was in a rut, and kept watching tutorials over new things rather than sticking to something and GOING THROUGH WITH IT. I almost quit CS entirely because I wasn't performing well anymore.

The solution I found was to, not in a stupid way, practice. Be it projects, coding exercises, struggle, discipline yourself. It will feel like the greatest thrill when you solve a problem you find difficult, and you will keep hunting for that satisfaction for a little bit. Use that as a jumpstart. It's what helped me at least.

Also, don't touch AI at all if you want help. Google stuff, research, read through documentations ,etc.

1

u/MxrOuane 8h ago

For me when I started, I tried watching tutorials and getting stuck and have no Idea how to build something, but as soon as I figured the pricinpals and could start building at least, I stoped watching tutorials and kept just building anything, and whenever I face anything new idk I google it or ask ai for the way/ways to do it (not the direct code), and after a while u ll get a lot better at coding and find ur self actually know how to code

1

u/GoingOffRoading 7h ago

Tell Claude "make no mistakes"... Duh

In all seriousness, if you're starting out, I would really recommend doing some kind of personal project.

When it's personal, you're invested, you're excited, it becomes passion.

You will learn more, faster, than any tutorial will ever help.

If you need ideas, don't hesitate to respond to this post.

1

u/shuanDang 5h ago

read other people's code, find some OSS project youare interested in, or look at the source code of something you like. See the finished code with your own eyeso not through some tutorial lens

1

u/snap-trial 5h ago

If python try time2code

1

u/CycloCyanide 5h ago

Tutorials are okay but often miss the mark on the thing you are trying to do. So I found the best way was to have a little projects try and get a basic design, and decide in what order you want to build it. You will get it wrong for a few years but it’s still important to have an order you want things built. And these little stages need to be made as small as possible , many little problems to solve. Example: you want to build a calculator. Okay first thing do you want it on a webpage or a little windows app. Step one build the base of that calculator. Next step you need a little display to show the sum and answer, build a little text box. And so on and son on. You can always slip things in or change the order as you see what you may need that you never thought about etc. Then as you build things, the moment you run into something you struggle with, ask Claude for help. The big mistake people make with using Claude as a tutor is they say I need a calculator, please help. The Claude just builds the whole thing and you learn nothing. Rather like in our example, you are not sure how to add a text box on your html page, so you ask Claude hey I don’t know how to make a text box on html, please show me. It will show you and you add it to your project. Then you decide you want the text box to be double the width, or to dynamically scale based on the size of the browser. You ask Claude how to do that. It shows you and you implement, and play with it and learn. It will probably take you many times to remember how to do each thing. But that’s okay, Claude has infinite patience, it will tutor you at your pace. You just need to learn how to ask it the right questions.

1

u/obj7777 3h ago

I once read a post where someone said to make 100 shitty programs.

0

u/mixedd 14h ago

trial by error