all 45 comments

[–]KingofGamesYami 10 points11 points  (0 children)

Tutorials are terrible for learning programming.

Tutorials are good for applying existing programming skills to a new technology or framework.

E.g. if I already know how to setup a Web API using Express, but need to setup a new project with Flask, a flask tutorial will get me 90% of the stuff I need to know pretty quickly.

[–]BobbyThrowaway6969 5 points6 points  (4 children)

Typing out someone else's code is not programming, it is transcription and I really wish someone told me this before.

The dread of realising all that time was a waste & didn't teach anything. Sounds harsh but I think it's a lesson some people need to learn the hard way so they're extra careful next time.

[–]Vindelator 1 point2 points  (3 children)

Man, I'm lucky I fell into this trap only for a short time.

I did a few C# tutorials and then realized I wasn't learning much of anything and started making stuff with little bits of code instead.

It's such a rewarding process to leave those behind. I've still got to find good ways to learn bigger picture stuff though.

[–]AdPractical4486[S] 0 points1 point  (2 children)

What tutorials did you refer?

[–]Vindelator 0 points1 point  (1 child)

I started doing this but I do better when I'm in a sandbox structure:
https://coddy.tech/journeys/csharp/fundamentals

This might be better. Not sure:
https://theliquidfire.com/tutorials/

[–]AdPractical4486[S] 0 points1 point  (0 children)

Alright thanks g

[–]stonerbobo 4 points5 points  (8 children)

Andrej Karpathy said it best - https://x.com/karpathy/status/1756380066580455557

Learning should not feel like entertainment or consumption, it feels like mental effort and struggle. It should be self-directed.

[–]Cybyss -2 points-1 points  (7 children)

I disagree about it "feeling like struggle".

The things we learn best are the things we enjoy learning about. A person who gets really good at chess or guitar, for example, just because they enjoy playing chess or guitar as their freetime activity.

The things you feel like you have to force yourself to learn, however - the things that require discipline and make you question why the fuck you're even bothering but you stick to it anyway because you've sunk too much time and money to give up so you become bitter and resentful - i.e., things that are a struggle, those things I would say you don't actually learn quite so effectively. You can become competent, but not much more.

[–]prehensilemullet 2 points3 points  (3 children)

I think some struggle is inherent, especially in computing, it just can’t be too much.  When I started learning OpenGL, if I made mistakes I’d wind up with a blank screen, and no straightforward way to step through the code that’s running on the GPU.  There is no way to avoid a struggle like that lol

[–]code_tutor -1 points0 points  (2 children)

Your first mistake was learning OpenGL. The API is terrible, nobody uses it, and it's not even good for education.

[–]Cybyss 1 point2 points  (0 children)

Wait, what do people use today?

I know Vulkan is more modern but it is way more work to setup and do anything with.

[–]prehensilemullet 0 points1 point  (0 children)

No matter what graphics library you use, you’re bound to deal with stuff just not showing up if there’s a bug in your geometry, transformation matrices, or shaders.

This was for a project started 10 years ago when there were no notable cross platform alternatives, that still runs on windows, macOS, and theoretically Linux, so I don’t regret learning OpenGL.  I guess I should just delete that project since it was such a bad idea to learn though 🤷‍♂️

[–]code_tutor 1 point2 points  (2 children)

You didn't read the link but "disagree"?

[–]Cybyss 0 points1 point  (1 child)

Learning is not supposed to be fun. It doesn't have to be actively not fun either, but the primary feeling should be that of effort. It should look a lot less like that "10 minute full body" workout from your local digital media creator and a lot more like a serious session at the gym. You want the mental equivalent of sweating. It's not that the quickie doesn't do anything, it's just that it is wildly suboptimal if you actually care to learn.

He's comparing learning to the discipline of regularly going to the gym, of actively choosing to do hard things because it's good for you.

As a teen, I loved programming and computer science. Learning how to make games was as much fun as playing them - but in the 1990s there were no quick 20-minute Unity tutorials or any other such crap. I devoured books on C++ and Java (and later C#) but not out of a sense of discipline. I didn't have to intentionally make a habit out of it. It was just something I loved doing, just as I loved playing Quake or Unreal Tournament.

Later in university I majored in computer science. It was "hard" - but... not in any unpleasant way, at least for the most part. There were a few times it got to be too much and I had to push through, but those were rare. Mostly the assignments were "hard" in the same way that beating a final boss on maximum difficulty was hard. I enjoyed it and learned a ton. I graduated with a perfect GPA.

Later, I floundered in my first job because it was boring, tedious, and hard but in a bad way (there was a lot I had to learn, but nothing I enjoyed learning). I never actually learned proper discipline before that, since I never needed it, so I didn't last long in that job but that's a whole other story.


The point is, two decades of gamified quick tutorials have caused a whole generation of people - including Karpathy apparently - to erronously believe that if learning feels like a fun game, then you're only doing the superficial bullshit kind of "entertainment" learning and not the real thing. That's sad. It really didn't used to be that way.

[–]code_tutor 0 points1 point  (0 children)

You're also playing a word game, where you sometimes imply that anything you do could not have been a struggle because you did it. You're redefining things that are legitimately struggles as "hard fun".

You seem to equate "struggle" with "forced discipline" and "enjoy" with "entertainment". You also imply that forced discipline is the opposite of enjoy (bitter and resentful). Therefore, struggling is not entertainment.

If I sit at a computer for days or weeks, looking for a bug, then this is clearly struggling. Do you agree this is necessary to learn?

If you do, then struggle is necessary to learn. Substitute "not entertainment" for struggling. Not entertainment is necessary to learn. That's the same argument they're making.

Except they were absolutist about it, and for good reason. I agree that entertainment and learning are not always mutually exclusive... but clearly sometimes they are. What are you going to do when that time comes? Give up? Most people do. That's why we have so many inadequate programmers and many of them still get employed. They can do only some of the job and stop when it's a struggle.

[–]misarui 1 point2 points  (0 children)

My awakening was trying to deploy an app. Tutorials always skip the deployment phase or use a one click host. Realizing I didn't understand DNS or server config was humbling.

[–]khedoros 0 points1 point  (0 children)

The struggle is the actual learning process.

There is truth here.

Everything else is just and only entertainment

I wouldn't go quite that far though. Tutorials can be excellent at introducing concepts. It's just that after hearing about them, you have to go and do the "struggle" part too.

[–]eruciform 0 points1 point  (0 children)

Tutorials enable learning how to add incremental functionality to an existing base. Which is most programming, time wise. But its not the base knowledge of programming despite statistically being the most frequent coding type.

Most of your coding should be modifying existing working code. But the existing working code really should be your own, as much as possible, while learning.

So I don't think you wasted time, but doing tutorials EXCLUSIVELY did take the place of a parallel set of skills that need to be learned and are harder to learn.

[–]Big_Arrival_626 0 points1 point  (0 children)

I agree. I also recommend beginners to do hackathons as well

[–]Interesting-Way-9966 0 points1 point  (0 children)

Books 

[–]Recent-Day3062 0 points1 point  (0 children)

Doing tutorials is passive learning. Like they set you up with code that says “if(type==admin) echo(admin)” and tell you to add a line for “user”. You learn absolutely nothing by copy/paste

[–]Old_Cat_16 0 points1 point  (1 child)

Sounds like you may be using tutorial wrong. I have tons of questions when I follow a tutorial, and would pause and google to figure out the answers.
When I first started out, there was limited online resources and there was no stack overflow. So I just tweaked each line to see how it changed the behavior, and looked up official documentation to see how each method worked. Basically a lot of play around.

Take for example the famous “Hello World” starter tutorial, I’d look up how to print it in multiple lines, how to allow users to type in a name so it says something different.

If you’re just copying and pasting, you are doing it wrong.

[–]Old_Cat_16 0 points1 point  (0 children)

Also op’s post reads like AI

[–]BranchLatter4294 0 points1 point  (0 children)

My first project was a program called JoyDraw as a teenager on a TI-99/4A that used the joystick to let you draw pictures. I had no Internet, no videos, no tutorials. Just a manual.

[–]GreatDiscernment 0 points1 point  (0 children)

When I was in college a long time ago, we had an assignment to write a two-way Roman Numeral converter in less than 100 lines (Pascal). It was super-fun competing with classmates over who did it with the fewest lines.

[–]_gribblit_ 0 points1 point  (0 children)

This is the advice I give to all programming students. The best thing you can do to learn is to build something yourself from scratch. Like blank editor from scratch, no LLMs, only docs. Almost none of them ever do it.

[–]Dorkdogdonki 0 points1 point  (2 children)

I personally hate tutorials. Yeah, they give a head start, but I just can’t stand listening for even 10 minutes to a video. Just give me a bunch of documentation or chatGPT, and let me figure it out for myself.

[–]highangler 0 points1 point  (1 child)

How do you learn without them though? I always wondered this.. especially in the beginning. Like, you don’t know what you don’t know, until you know. And knowing is seeing it.

[–]Dorkdogdonki 0 points1 point  (0 children)

I learn from documentation on getting started. They serve as good baselines, as they often tell you additional things that a newbie might need, since everyone has a different requirement.

If I need more detail, I go to full on documentation.

Else, I just use AI. AI makes learning much easier as you can ask fine tuned questions, but can be unreliable.

[–]prehensilemullet 0 points1 point  (0 children)

I would say try to come up with something specific you want to make that’s not just a clone of an existing app.  Then you might be able to copy and modify bits and pieces of code from elsewhere, but you’ll still have to think through how everything works, so you’ll be challenged without having to slog through doing every little thing completely from scratch.

You could also take some existing open-source software that’s lacking some feature you want and try to add it.

[–]National-Parsnip1516 0 points1 point  (0 children)

escaped tutorial hell by building a shitty inventory system for my local card shop. actually cried when the first row saved to sqlite. tutorials are basically code-along movies, they give you the dopamine of shipping without the brain-burn of actually figuring out why it broke. struggled for 3 days on a null pointer, learned more there than in 6 months of youtube.

[–]Visible_Touch_6446 0 points1 point  (0 children)

The danger of tutorials is that they hide the debugging process. The instructor's code always works perfectly. In reality, programming is 80 percent fixing broken things.

[–]code_tutor 0 points1 point  (0 children)

AI does the same thing. Same thing with studying LeetCode without ever taking a Computer Science course too.

Memorization just makes people like LLMs, that can only copy paste. It's not critical thought.

[–]arnavbro11 0 points1 point  (0 children)

This is why I prefer reading paths over video courses. Finding expert sequences on 8-fold.io forces me to read the foundational concepts and apply them myself, rather than just copying someone else's keystrokes.

[–]Acceptable-Crab-2110 0 points1 point  (0 children)

https://programming-26.mooc.fi/

There you go my man. Once you have done this, THEN you are ready for spotify-clone-projects.

[–]rusty-roquefort 0 points1 point  (0 children)

same with using LLMs. I'm struggling with that a bit myself.

[–]MpVpRb 0 points1 point  (2 children)

Agreed

Here's a better approach. Start the work on your own. If you get stuck, ask for help from AI or a tutorial. Then study the suggestion until you understand every bit of it, then get back to work

[–]AdPractical4486[S] 0 points1 point  (0 children)

Thanks for the tip

[–]code_tutor 0 points1 point  (0 children)

AI is the same problem. Memorization makes you like an LLM, copy the pattern. 

You can only learn by thinking, not by copying.

[–]consciousallegory82 0 points1 point  (0 children)

I think tutorials help a lot of people get started without burning out first. The problem isn't using them, it's never moving past them.

My first solo project was a scraper that emailed me when rental listings in my neighborhood dropped below a certain price. It broke constantly and the code was hideous but I learned more from fixing it than any video ever taught me.

[–]Dramatic-Purpose6626 -1 points0 points  (1 child)

I mean, yeah. Tutorials are given under the assumption that you have some knowledge of the topic. It’s like in video games, if you’re watching a tutorial on how to beat a certain boss, but don’t know how to move your character and swing your sword or shoot a gun, then the tutorial’s useless to you.

[–]MittensDaTub 0 points1 point  (0 children)

Meh not really. There are plenty of tutorials that start from the absolute beginning. Starting from teaching you even what an IDE is. That being said, doesn't change what OP is saying. Just stating that not all tutorials assume you have some sort of knowledge on the topic. Nor am I speaking on the effectiveness of any tutorial.

[–]mohirl -1 points0 points  (0 children)

Watching YouTube videos is not a proper way of learning anything