The Best Way To Learn Programming

Поділитися
Вставка
  • Опубліковано 28 лис 2024
  • Recorded live on twitch, GET IN
    / theprimeagen
    Become a backend engineer. Its my favorite site
    boot.dev/?prom...
    This is also the best way to support me is to support yourself becoming a better backend engineer.
    MY MAIN YT CHANNEL: Has well edited engineering videos
    / theprimeagen
    Discord
    / discord
    Have something for me to read or react to?: / theprimeagenreact
    Kinesis Advantage 360: bit.ly/Prime-K...
    Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
    turso.tech/dee...

КОМЕНТАРІ • 746

  • @SimGunther
    @SimGunther 8 місяців тому +5631

    1. Draw a circle
    2. Draw the rest of the owl

    • @richardmenz3257
      @richardmenz3257 8 місяців тому +190

      1. Draw a circle
      2. Draw a hawk
      Manager: ship it. It’s good enough.

    • @cd-zw2tt
      @cd-zw2tt 8 місяців тому +37

      every single download guitde

    • @CW91
      @CW91 8 місяців тому +46

      1. Trace on the dotted lines to draw an owl
      2. Draw an elephant on a blank piece of paper

    • @omomer3506
      @omomer3506 8 місяців тому +4

      I love that subreddit

    • @hansgluck5228
      @hansgluck5228 7 місяців тому +11

      thats wrong, your forgott one thing. you dont know what a owl is. Thats the problem with all teachers?

  • @JesseGilbride
    @JesseGilbride 6 місяців тому +1816

    "The master has failed more times than the beginner has even tried."

    • @PolarLord1
      @PolarLord1 3 місяці тому +12

      true

    • @justamanofculture12
      @justamanofculture12 2 місяці тому +13

      Every senior dev after not managing the Legacy code for several decades and then retiring: "My time has come........"

    • @TheDrhusky
      @TheDrhusky 12 днів тому

      ooof, I'm stealing this!

  • @hansdampf2284
    @hansdampf2284 6 місяців тому +910

    How I learn programming is:
    - I want to build something
    - I learn about the thing I want to build and it’s surroundings
    - I try to find out how to build the things I need
    - I learn a ton of (at first) useless half-correct things along the way
    -I build the thing (or I fail to build it)

    • @MaynardFreek
      @MaynardFreek 6 місяців тому +20

      Mostly fail because of lack of training

    • @DasHeino2010
      @DasHeino2010 5 місяців тому +12

      I am new to this and I was really worried with that tutorial. I wanted to make a website. Now I made one with a simple calculator.
      But the first thing mentioned was: If you dont know HTML and CSS then dont bother watching this tutorial. And I was like AW man! :3

    • @gamester7152
      @gamester7152 5 місяців тому

      ​@@DasHeino2010 then just learn general use of html and css and then move on. If youre confused just search google and take note.

    • @razpaqhvh7501
      @razpaqhvh7501 5 місяців тому +4

      @@MaynardFreek then you keep doing it until u succeed

    • @artemis-arrow-3579
      @artemis-arrow-3579 5 місяців тому +20

      how I learned programming
      1. think of a project
      2. start creating it without having the slightest idea where to begin
      in all seriousness, C was my second language, right after python
      my first project in C was a ring 0 rootkit for linux

  • @Evilanious
    @Evilanious 8 місяців тому +389

    I think there's room for both. Showing a final result can give an idea of how a concept is supposed to work. It builds understanding but not skill. Just trying stuff until it works builds resilience and skill but if you don't understand why what you made works you're missing out. You might also keep doing stuff in inconvenient ways because your working in a way that's locally optimal but globally subpar. So I think there needs to be a split of 30% new concepts cleanly introduced and 70% unguided or lightly guided practice.

    • @EddieVillamor
      @EddieVillamor 7 місяців тому +19

      Agreed, what if the person is a junior, they're just gonna have a much longer learning curve when the senior could have helped skip a lot of the reading.

    • @aceman0000099
      @aceman0000099 6 місяців тому +2

      I think you look at the result, realise it's too hard, do your own thing, learn a little bit, struggle, try something new and that Maybe works and then go back to the perfect way and you understand it. You can skip a week of trial and error but still learn

    • @Antri-jd9jy
      @Antri-jd9jy 6 місяців тому +9

      Exactly, it is simply too black and white what primeagen suggests, it is always good to try on your own first and really try to solve the problem but if nothing comes up, then looking for guidance is totally fine as long as you try your best to understand why it works that way. I mean this is why we have education, it is simply too inefficient for every invidual to just try stuff on their own, and hope they will magically figure it out one day.

    • @upcom1ng116
      @upcom1ng116 6 місяців тому +2

      Has anybody taught a baby a walking theory?

    • @aceman0000099
      @aceman0000099 6 місяців тому

      @@upcom1ng116 yes

  • @tiko-
    @tiko- 8 місяців тому +2324

    no struggle = no gains

    • @ginxxxxx
      @ginxxxxx 8 місяців тому +34

      it so many words, and without youtuber help. the best way to learn how to program is to program

    • @Margen67
      @Margen67 8 місяців тому +4

      birb

    • @exginto8053
      @exginto8053 8 місяців тому +2

      lightweight bebe

    • @hendrywilliam
      @hendrywilliam 8 місяців тому

      @@ginxxxxx indeed, just get your hands dirty and keep banging your head against the table :)

    • @nogrammer
      @nogrammer 8 місяців тому +9

      ​@@ginxxxxx no pain, no gain.

  • @patrioticgrind
    @patrioticgrind 7 місяців тому +418

    I studied programming for two years and didn’t understand. I learned better by looking at the end result. Then I broke each component of the architecture down to its simplest. Started with the end and worked my way to the start. Kind of like trying to build a tv for the first time by taking apart all the parts of the tv and understanding each component.

    • @fulldeploy
      @fulldeploy 7 місяців тому +67

      This is why I recommend new programmers learn to read code first before learning to write it.

    • @twistertee
      @twistertee 7 місяців тому +16

      Could you clarify? What's the difference? Isn't learning how to read natural language done by teaching how to write?

    • @fulldeploy
      @fulldeploy 7 місяців тому +41

      @@twistertee Both are important, but you can’t know how to write well if you don’t know how to read what good writing is. Same with writing software. Yes you learn by doing, but you can speed up your learning by reading good code.

    • @comradecameron3726
      @comradecameron3726 7 місяців тому +8

      @@twisterteeHell no. You don’t learn to read by learning how to write.
      That’s not how language works.

    • @kettelbe
      @kettelbe 5 місяців тому +1

      ​@@comradecameron3726 yeah that s why Kids never do step by step their poems et lol

  • @xTriplexS
    @xTriplexS 8 місяців тому +1234

    Can confirm. Throughout my school years, I learned more when my teachers made intentional mistakes and explain why doing that was a mistake

    • @Gregzenegair
      @Gregzenegair 5 місяців тому +9

      intentional mistakes

    • @FlowersByIrene
      @FlowersByIrene 3 місяці тому +9

      Same when I watch videos of people coding and they don't edit out the mistakes. Sometimes that mistake is a complete tangent and they have to scrap the whole thing.

  • @selewin
    @selewin 8 місяців тому +78

    How I learned it is to do the step by step solution and then start figuring out what means what. And tweaking things try and adjust the solution to fit my current problem better. After a few of those you have a general understanding of how things work and when you do the proper way of learning then it's a lot faster. But this keeps my interest high

    • @ginxxxxx
      @ginxxxxx 8 місяців тому +1

      you should call your tech "hacking" and also when you really understand it you should call it "grok"
      you will be fame

    • @kintenle8882
      @kintenle8882 7 місяців тому +6

      Same. Tho Id like to add, once I get comfortable with it / highly intrigued I'll start challenging myself, doing X but out of context, without handholding. This is the final step that will solidify all that I've learned

  • @Atrain1349
    @Atrain1349 6 місяців тому +38

    It’s important to see the final result when you are first learning. This is because when learning something new, most times you never understand the “why”. The end result gives you an answer to this “why”. Then when you dive into the code and learn more about the individual parts, the “how” becomes clear. Next thing you know you have a solid end to end knowledge of an application.

  • @Rose-ec6he
    @Rose-ec6he 8 місяців тому +24

    I agree 100%. Most learning comes from making assumptions about a system and doing things that rely those assumptions, and looking back at those assumptions to reasess your understanding until you stop failing. True understanding does not come from memorisation but from making assumptions and repeatedly interrogating them until your understanding grows to account for most nuances and edge cases

  •  5 місяців тому +51

    I still didn't see anyone else teach like Jeffrey Way from Laracasts. His approach is pure learning. He builds on the screencast the wrong version, shows you the error, then fixes it (kinda), shows you the way, and then improves the fix again. He is just brilliant.

    • @jonathanjohnson2785
      @jonathanjohnson2785 4 місяці тому +2

      So true. That dude takes you through the entire process and that is where real learning happens

  • @sods2731
    @sods2731 3 місяці тому +10

    What has helped me more in learning to program is getting to the point where I have just enough knowledge to know what I need to look for if I get stuck, and to be able to properly translate the code into english that makes sense. When I first started out, no one said in any of the classes I had about it or any of the videos I watched, some of the most important advice which is to look at the documentation for the language you are using. Being able to understand what something is doing is far more helpful than just being told "use this because it's correct". It also helps to realise that translating the shorthand into the full phrase helps you to understand it, like in for loops when an "i" is used, if you don't know what "i" is, or what "for" does but you get told "this is for iterating over data" it can be very confusing, and is far more helpful to say "the i stands for iterator, and reading what a for loop does goes something like this 'for each i (iterator), do these instructions'"

  • @MyCodingDiary
    @MyCodingDiary 8 місяців тому +11

    Your energy and enthusiasm are contagious. Love it!

  • @thehibbi
    @thehibbi 8 місяців тому +67

    Why would I rebuild X?! Elon dominates the market, there is no way I could compete with him

    • @pwsh_supremacy
      @pwsh_supremacy 8 місяців тому +9

      i was looking for that comment

    • @astrahcat1212
      @astrahcat1212 5 місяців тому +7

      X is billion dollar software so if you make 0.1% of that you're good.

    • @damonmlinaric9254
      @damonmlinaric9254 10 днів тому

      My thoughts exactly

  • @tongpoo8985
    @tongpoo8985 5 місяців тому +3

    This is correct and it applies to a lot of stuff, it's how I learned Solidworks really quickly. Went through a youtube tutorial series, and I'd always pause the video and try to draw/model the thing myself, then after I was done, I'd watch the professor do it. The first part was where I really learned my way around the software in-depth and independent problem solving, then watching the professor do it after showed me where I messed up, best practices, and shortcuts and techniques I could've used.

  • @crazycrazy7710
    @crazycrazy7710 4 місяці тому +1

    First you learn the tools, then you learn how to use the tools to make small things to understand which tool works in what case. Repeat, play and get familiar with tools so that you can express basic ideas with them. This is important as then you know how to use the tool to shape your ideas in a way that can be created.
    Then you take a problem, break it down in sub-problems you can solve. If subproblem is too slow or too difficult, look for solutions or clever tool usage and reinforce your understanding of the tool used.
    This "playing with tools" is the process of learning. Repeat is a way to reinforce, solving better problems is the application + feedback loop which deepens the concept. They are not mutually exclusive, rather they comes one after the other. Skip either and you would not gain proficiency

  • @botwithdot
    @botwithdot 2 місяці тому +12

    I usually do this:
    - Have an idea
    - Research what tools I'll need to realize this idea
    - Learn the tools
    - Start and finish the project using the tools and sometimes learn / switch to new tools

  • @quibster
    @quibster 8 місяців тому +4

    There's a construction set called Meccano by the old toy company Hornby, this exact understanding was known to them at the time of construction (it's as old as 1898) where they would intentionally fudge the instructions with mistakes, so that the individual creations would become more unique. This concept is lost to time as people are hungrier and hungrier for learning but refuse to subject themselves to any failure or strife.

  • @xandercorp6175
    @xandercorp6175 8 місяців тому +55

    This has an element of truth, but is dangerous to follow to an extreme conclusion. Throw them in the deep end, sure, but make sure they have working arms and legs first.
    The first method is great for getting up to speed on specifics when you know what you're doing generally, the second builds character - but only if you have those basics down first. You have to build up both parts of your personality, passive and active motivation and perception.

    • @alansmithee419
      @alansmithee419 8 місяців тому +1

      Almost everything is dangerous to take to the absolute extreme.
      This is intended as a nudge in the right direction. How far to take it will be dependant on the individual and how that person finds they learn best.
      Indeed, all he is really saying here is to *avoid the extreme* of "just copy what someone else did."

    • @xandercorp6175
      @xandercorp6175 8 місяців тому +2

      @@alansmithee419 The capable mind learns what's laid out for it, then goes to find more. It's true that you learn to think by thinking for yourself; but once you've learned to do that to a proper degree, the conveyor belt system only helps you.
      Trying to get everyone to bootstrap themselves constantly is both an accelerant at the bottom 2% and a brain tax everywhere else.

    • @alansmithee419
      @alansmithee419 8 місяців тому +3

      @@xandercorp6175
      The video is about learning, not about doing. So any complaint you have that this isn't effective once you have learned is irrelevant.
      You *learn* almost nothing by following the steps of a tutorial like-for-like. *That's all this video is saying.* It can get a job done sure, but you don't learn. If you want to learn to provide skills beyond "I can copy paste code" or want to make your own stuff, you have to learn by doing it yourself at some point - which is something you say in your comment. So we are not in disagreement it seems. You just misinterpreted what he's saying.
      "Trying to get everyone to bootstrap themselves constantly..."
      My entire previous comment was dedicated to explaining that he wasn't advocating for any extremes like this. If we go the other way:
      Making everyone copy code all the time without ever doing any coding themselves would lead to a severe loss of skills in the industry that would ultimately destroy most opportunity for innovation and progress, as well as make bugfixing almost impossible.
      See how that doesn't work as an argument against anything you said, because you never advocated for that? That seems to be what you are doing, just in the opposite direction.

    • @xandercorp6175
      @xandercorp6175 8 місяців тому +3

      @@alansmithee419The video is about learning to program, not about learning to learn (learning is also a kind of doing, anyway).
      You do in fact learn a lot by copying how something is done by others, that's how reverse engineering takes place and isn't a casual intellectual endeavour. The problem is stopping there, not doing it in the first place. What people need to remember to do is to set their own goals, and learn from the result.
      People who like learning don't need to be told this.

    • @TheCrusaderRabbits
      @TheCrusaderRabbits 7 місяців тому +2

      Sanity.

  • @TheDmviper
    @TheDmviper 8 місяців тому +51

    One way to get understanding is through failure. You let reality tell you you're wrong over and over again until things start to work. And the hope is that things work because you understand what you did.
    Another way that I honestly think is better and almost never addressed is by starting with the right answer and trying to break it. You look at each step and think of all the ways you could do it differently and then see if they work or why they don't. Basically, you go backwards in an attempt to prove to yourself the "correct" version is actually correct.

    • @22albi22
      @22albi22 8 місяців тому +2

      Proof by contradiction 👌

  • @TheHigherFury
    @TheHigherFury 12 днів тому +1

    True with everything. Even talking.
    Teaching a derived answer doesn't help people understand the answer.
    Practice failing forward.

  • @nikolastamenkovic7069
    @nikolastamenkovic7069 3 місяці тому

    Whenever this reel comes up in my feed, I watch it. Precise and beautiful explanation of what learning is.

  • @dewanpretorius
    @dewanpretorius 8 місяців тому +3

    I think it matters at what stage you are. I've found that when beginning to learn a new language and you're learning the basics, it helps to do a bunch of projects just to get used to the language, and then to tackle something like described (i.e. to the point where the language and its syntax isn't the barrier, but what you are trying to do is.).

  • @ADGroupOfArtMedia1
    @ADGroupOfArtMedia1 8 місяців тому +77

    So simple yet a deep philosophy

  • @LuLzezRoflcopter
    @LuLzezRoflcopter 3 місяці тому +1

    Makes sense. Same was true in math class. Watching the teacher work through a problem is completely different to you being given a unique problem and asked to work through it yourself.
    A very easy trap to fall into was just watching lots of math videos and watching the teacher work through problems and go yup it all makes sense seems easy. Approaching a problem alone and figuring out what tools to apply yourself for the solution. It’s like a muscle, you gotta put the work in yourself. Watching others only helps to a certain extent.

  • @kwith
    @kwith 3 місяці тому +1

    That's what I'm doing right now in my course. I'm told about various features and then the challenge is to make X. Sometimes it's easy sometimes you have to read documentation. The documentation is told to you as well so part of the onus is on you to read to figure it out.

  • @aram5642
    @aram5642 7 місяців тому +3

    I actually like best those videos where the instructor runs into a problem and solves it live rather than edits it out.

  • @GloriousReign
    @GloriousReign 6 місяців тому +11

    As someone learning to code this 💯 facts . And you have to read the damn docs. .

  • @dnhatanh
    @dnhatanh 8 місяців тому +12

    Love it. We only learn from being wrong. The struggle is real, and worth it.

  • @Coreplay_
    @Coreplay_ 7 місяців тому +1

    The way I've been learning is the first thing that you said. BUT there's a challenge at the end of each stage that revises what you learned during the stage that you do yourself.

  • @TheCodeTinkerer
    @TheCodeTinkerer 7 місяців тому +2

    That is the exact approach in the current course I am attending. I have never learned so much so quickly and retained it.

  • @1Manda1
    @1Manda1 8 місяців тому +131

    Issue with programming is that you can easily struggle, waste time, have mental anguish and not learn anything new.

    • @secretzpt176
      @secretzpt176 7 місяців тому +29

      You shouldn't look at it that way. If you struggled to do something it means that you were approaching the problem the wrong way. Eventually finding the right way not only teaches you what the right way is, but also how the other things you considered can and can't be applied.
      When you wasted time, many times you actually came out learning a lot more than if you get it right the first try.

    • @scrimb
      @scrimb 6 місяців тому +5

      i've never had this issue ever. how do you not at least learn that your incorrect approach was not an efficient way of solving the problem? you can at least eliminate a couple of variables this way

    • @youcefdz5598
      @youcefdz5598 6 місяців тому +5

      i'm a cs student second year , i jumped into native android app developement with java , i can tell you it's complex . 95 % of the time i try to do something new it doesn't work and i struggle my ass of to get it working and that made me learn a lot , it's been almost a month and the amount if stuff i learnt is astronomical

    • @demolazer
      @demolazer 5 місяців тому

      Been there every week

    • @PixelThorn
      @PixelThorn 5 місяців тому

      That goes with all learning, try pottery, you will realize you go through these steps even there

  • @johnathanrhoades7751
    @johnathanrhoades7751 6 місяців тому +2

    I’ve done a bunch of tutorials, but am currently working through the second half of nand2tetris and it’s ways better. They say “here is how our assembly language works with the virtual hardware. Now make a multiplication program” and I had to figure out how to use the three available registers and do it out on my own. And then I took that and made something to do integer division. Way better than most tutorials I have had.

  • @OIP_1
    @OIP_1 6 місяців тому +1

    this is absolute facts. the struggle is where you get the understanding. the caveat though is you can get stuck in bad habits without someone to help you optimise your cobbled together solutions.

  • @ShilohFox
    @ShilohFox 8 місяців тому +2

    i learned programming mostly by step by step direction when i was a kid. it worked for me for most of it, but my troubleshooting skills DEFINITELY came from me screwing around and making tons of mistakes with those directions.
    You still learn, especially when even following the directions doesn’t work. Then you gotta figure out what dumb crap you did to mess up, then you learn troubleshooting.
    my learning path is unique though. i am autistic and have a severe special interest in programming. i was so determined that i would destroy my sleep and school schedules and pretend to do schoolwork when i was actually programming

  • @onihae9063
    @onihae9063 7 місяців тому +1

    This is true. Really fortunate I had a great mentor of a lead back then on my first job.

  • @Playeroth
    @Playeroth 7 місяців тому +1

    that's absolutely true. i found that by myself, was more productive if i only had what i need but not the result, this way i can work my way to the result.

  • @Fs3i
    @Fs3i 8 місяців тому +59

    I know that prime speaks with an authorotative voice, but actually people have studied what works best.
    They've looked at high-schoolers learning to program (I think in the Netherlands), and split it up in three groups:
    - One was mainly focused on learning code through reading, i.e. they read code, discussed code, and then implemented new stuff.
    - One was mainly focused on writing code, i.e. the thing that is described here. A bit of guidance, but mostly trial-and-error
    - The third group was a mixed group with both, but still a large focus of intentional reading.
    When it came to performance in tests afterwards, the reading and mixed group were fairly close in performance, but the mixed group won out.
    The "mostly-trial-and-error" group did the worst of all. The conclusion of the study-authors was that too much emphasis is placed on writing of code, and trial-and-error, and too little of just reading comprehension.
    We need to do more stuff like "explain what this piece of code does in your own words?" and also things like "why does it have this bug?" "which method implements this?" "describe this function in your own words"
    I think, yeah, just following a tutorial is stupid. But reading, the "clean solution by a master" is something that is undervalued in programming courses all over the world!

    • @asdfljasdfaklsd1910
      @asdfljasdfaklsd1910 8 місяців тому +3

      Yeah what he is describing is how experienced engineers learn something new. When you have a foundation, context, and a lot of preexisting knowledge it’s a good way to go.
      For everyone else it is not and you will likely fail

    • @ReganDryke
      @ReganDryke 8 місяців тому +1

      @@asdfljasdfaklsd1910 What he is describing is how we build a body of knowledge so that the trial and error step can be minimized in the future. Especially for learning.
      It's a waste of time to have student reinvent the wheel especially when you get to anything complex. They don't have the time for decade of trial and error to reinvent modern solution that a stack overflow thread would have given them in 2 minutes.

    • @asdfljasdfaklsd1910
      @asdfljasdfaklsd1910 8 місяців тому +2

      ​@@ReganDrykeYour tone implies you think you disagree with me but your words don't seem to contradict what I said, so I suspect you didn't understand my point.
      Trial and error is often what occurs when a student with little background tries to got their own way in getting to a solution. It's not good.
      For more experienced programmers, it's not trial-and-error; you have enough background to reason through things. In this case, going your own way to get to a solution can be a useful and productive way to learn.
      On the whole, I think the original video makes a bad point.

    • @alansmithee419
      @alansmithee419 8 місяців тому

      All he said to do was avoid your example 1 by *shifting toward* example 2 - the implication of this is you end up in example 3.
      You and him agree from what I can tell. I don't know why everyone is interpreting what he's saying in this extreme absolute sense. He's just saying "don't do option 1."

    • @monkeibusiness
      @monkeibusiness 8 місяців тому +1

      Yeah, thanks for your post. All it does is frustrate the shit out of people who then give up. Not everybody is autistic and sticks with it fail after fail after fail after fail... and as you said, while learning at a slow pace doing that.
      When you start out, you need to see how its done right instead of wasting your life away.

  • @rabiddoughnuts
    @rabiddoughnuts 4 місяці тому

    My teacher taught us the very basic principles like what strings are, what for loops are etc, and along the had us practice things with no real guidance other than, build this, you should know all the tools you need already, you could get help if needed, but she was great about not giving answers but a gentle nudge in the right direction, i loved her.

  • @adammontgomery7980
    @adammontgomery7980 8 місяців тому +5

    I'm a hobbyist, and still don't understand how people design programs. I just bang my head against the keyboard until something approximating my intent happens. I've always learned better with the 'over the shoulder' approach

    • @willd0g
      @willd0g 7 місяців тому +1

      Keep going. You’ll be the one over someone else’s shoulder. I realised when it happened to me.

  • @PinakiGupta82Appu
    @PinakiGupta82Appu 8 місяців тому +1

    You add value to people's experiences. That's something I like about you. Yes, learning by doing is the most effective way to acquire experience. Look at the problem. Break it into steps. Think from there. Good work, keep it up!

  • @GerbenWijnja
    @GerbenWijnja 16 днів тому

    When I was little, I just read the Commodore 64 user's guide over and over, and built all kinds of little games, sprite editors, all kinds of stuff. For years. I had mastered BASIC.

  • @jaydensalgado9877
    @jaydensalgado9877 2 місяці тому

    2nd year of uni in cs, a HUGE majority of my learning is as follows:
    1. Want to make a thing
    2. In the simplest terms possible determine how that thing will work
    3. Figure out how to make it work in code with previous knowledge or looking up how to do the operation that i need
    4. Either do your best to rewrite and optimize the code or just upload to stackoverflow and get your code obliterated by everyone with a keyboard and wifi

  • @demonman1234
    @demonman1234 8 місяців тому +1

    I learned by going head-first into projects and then studying pre-existing opensource programs to figure out what it did/how it worked, only using documents or youtube if I got stuck.. it worked pretty well so far. Also, sure, this probably isn’t the best way to learn since everyone that makes the open source programs are at a different skill level, so I could be looking at a complete beginners program or a professional. I didn’t care at the time though as I just wanted to learn basics. Sure, there’s probably a better way to do things but oh well, I’ll learn those as I go.

  • @1993Delicious
    @1993Delicious 19 днів тому

    Very true. Currently in 1st year of SD, and I frequently talk to a former student.
    Last week he said, if you want a challenge, take a password, hash it, and salt it.
    This week I got my feet wet with MD5 and SHA, managed to got it to work. And just today, I wrote my first Algorithm that generates 31Million Hashes and stores them in a List, checks them for collisions.
    Took me two days because recursion, had to double the heap size, and for now optimized it tenfold.
    I learned so much about what works and what doesn't

  • @sunnywunny
    @sunnywunny 2 місяці тому +1

    this is how i learned
    i would start a tutorial, see what they were making, then make it myself
    once i was done, i'd continue the tutorial to see how they did it

  • @shoaib_akhtar_1729
    @shoaib_akhtar_1729 4 місяці тому

    I have never seen such an educator who goes to the underpinnings of learning, eager to follow you to learn more.

  • @MgelikaXevi
    @MgelikaXevi 7 місяців тому

    exactly. This is why, even if you poured a year into "doing courses" - you still can be completely confounded when you try to build something from a scratch.
    Use course to familiarize with concepts and fundamentals, and then start your personal project.
    Also, when you learn something new while ALREADY having experience with your own projects and mistakes - you gonna learn A LOT more and much more efficiently.

  • @robertfox4114
    @robertfox4114 8 місяців тому +1

    That's how I feel on learning C with K&R. First i try to make the stuff that is vaguely explained in the book -> fail -> read the example code -> take notes on the stuff you did wrong.
    Also the exercises at the end of each chapter are a good way to get stuck for a week.

  • @Hellmiauz
    @Hellmiauz 5 місяців тому +1

    That's one way.
    Copying even understanding what you copied has little value. On CS50p for example they teach you the base case, and then to solve the problems you'll never make it with that base case alone, you have to think and go read the python docs, libraries docs, whatever.
    Each problem is a struggle, but it feels so good when you finally solve them.

  • @hitbox7422
    @hitbox7422 4 місяці тому

    exactly that. My mentor told me what an array is, different data types for variables/functions, what functions and parameters are, how to create a class, how to build a constructor for that class and so on and so on .... In the end he told me "and now, here is an actual project im working on right now, i can't be bothered to do it myself, but i think for you it would be the perfect training case to work on".
    I can now do this stuff with my eyes closed.
    Edit : I knew most of the stuff i mentioned earlier before my mentor got into those things with me, but the bottom line is, that i learned those things "for the sake of repeating it", i never really got into using those principles on a daily basis. Through him i developed a natural understanding on how to dissect the amount of states within a function for example, or why it is so important to use Type- over JavaScript if your building actual React components. These are lessons you are not going to figure out yourself without hands on experience, a lot of Junior Dev's write singular functions and write everything in global lets- or constants, let alone useful documentation. Properly using function/variable scopes and reusable class components is an important lesson.

  • @jarrettonions3392
    @jarrettonions3392 8 місяців тому +1

    Yeah.. this can be really tough, especially early on.. but it is the only way to get to making what you actually want

  • @iFireender
    @iFireender 8 місяців тому +1

    one of my profs, which ended up being my advisor during my master's program, did exactly that.
    All the other embedded courses were like 'you put this here and this here and this there, tada, now you have your robot moving'.
    His approach was 'Ok, we have this component that needs to do this. We use these concepts A B and C to implement functionality. Now go and implement' - and he'd have this huge codebase for a robot that can do all kinds of stuff with functionality left out to implement during the course.

  • @AROAH
    @AROAH 5 місяців тому +1

    This methodology is how I’ve learned nearly everything in my life, and now I make more money than two of my friends combined without ever going to college.
    Never doubt what perseverance can teach you.

  • @Robert-pt2jz
    @Robert-pt2jz 2 місяці тому

    I agree completelt
    "Failure is the whetstone that hones us for success"

  • @boredSoloDev
    @boredSoloDev 2 місяці тому

    What I used to tell people is follow a guide but pause right before you do something. Try to do it yourself, fail a bunch if it's too much unpause the video follow.
    Repeat
    If you can do an entire project with just using someone telling you the step by step stages, while you build the stages you will be so much better

  • @Xeoncross
    @Xeoncross 5 місяців тому

    If you swap programming for cooking I think there are some issues following this approach if you take it too literally. However, avoiding too much hand-holding and micromanaging is certainly a good thing.
    I would recommend starting with full instructions and slowly leaving out larger and larger steps for them to figure out.

  • @xealit
    @xealit 4 місяці тому

    that's right, but I would say there is value in executing a known plan too. Especially if someone explains you the idioms in the solution, etc. The point is that these are different things: learning something, developing, operating it. And it is really overwhelming to overlap them, to do each at 100% at the same time. Especially if you have deadlines. You want to learn things separately as much as possible, then apply what you already know to some extend in development. Yeah, there there will never be a perfect split. You will certainly need to learn in the real project. But it is possible to learn ahead, and it will make your life much easier if you go into a real project with some basics learnt in a simpler situation.

  • @hudsonreynolds4349
    @hudsonreynolds4349 3 місяці тому

    Thats why I like learning it in college. Our classes overview the components then we have to go build X. Its great. Group projects, solo, long, short, languages & IDEs we know and ones we don't, our own project ideas or theirs, etc

  • @SlitDiver
    @SlitDiver 8 місяців тому +1

    I learned to programme by building games in batch back in the early days of youtube. There was very few tutorials or guides on games in batch, but I thought it was really cool, and eventually worked my way up to other languages. I learned because I had to figure out the code myself.

  • @BravoBrakas
    @BravoBrakas 3 місяці тому

    I´ve never believed this to be true. I´ve learned a lot from people showing me the correct way and me just copying the result. It taught me how I should think when constructing my own programs.
    I actually hated in school when some math teachers would just give you tools and no examples, it was a slow and painful learning process and I barely learned anything.
    I learn by doing things many times in many different ways, not necessarily by failing a bunch of times

  • @lethil
    @lethil 8 місяців тому

    100% I would no way call my self a programmer, but I can knock out some tools, small scale things and trouble shoot and that's only because I took on learning how to my self, learnt the basics, came up with a project, made it, failed a dozen times along the way until it began to work. Thats enough to get you by, but what really kept me learning was refactoring and doing the same thing again but better with the new knowledge you have.
    Nothing is more rewarding then looking at some of your old code and seeing how far you have come and whipping up an old tool to be better (As long as you remembered to comment for yourself/others haha)

  • @chad_giga6934
    @chad_giga6934 8 місяців тому +9

    It ain’t learning if you ain’t fail

  • @asdfghyter
    @asdfghyter 8 місяців тому +16

    i think at the very very beginning the first method can be useful, just to give some basic framework, but you should start doing the second as soon as possible or maybe even in parallel

    • @nilscoussement
      @nilscoussement 8 місяців тому +5

      Yes,
      You tell people of the journey
      Only when they know of the journey, can you explain parts of the trip.
      That order is not important though
      But if yo don't understand where your data is coming from, you will never learn how to 'create a page'

  • @miras1433
    @miras1433 7 місяців тому

    To me, coding grows exponentially abstract. Seeing the bigger picture is a must. It's about absorbing a large amount of specific information, compressing it into an idea, applying it to something useful, then moving on to the next new topic.

  • @rizze796
    @rizze796 Місяць тому

    Holyshe the best vid i've ever saw about learning process

  • @JediCore
    @JediCore 8 місяців тому

    The most important part in the middle is to show you HOW and WHAT to look for the stuff you need to do X. This is the issue I see everywhere. Point me to the somewhat vague but right direction and I'll do the rest by myself and go through the learning process. But if I don't even know where to start, I simply won't

  • @teresmajor7956
    @teresmajor7956 3 місяці тому

    Same with music as well. Most people just play, but its the theory that accelerates your understanding.

  • @BertoLaDK
    @BertoLaDK 8 місяців тому

    Im in a class with a bunch of other guys where we do electronics, and currently its all arduino programming, luckily the teacher is actually somewhat doing it in the right way and giving them problems that they have to solve on their own. Im bored af as I do programming as a part of my Apprenticeship soo, but its great seeing how others learn it and also helping them.

  • @michaelbennett7396
    @michaelbennett7396 7 місяців тому

    It's called scaffolding - it's essential for the learning process. That's why people and toys helped you with your first steps; why you went over dotted lines when writing or learning to draw etc.

  • @human_brian
    @human_brian 7 місяців тому

    Trial by Fire is the best way to learn anything, I think. I was given a job as a Linux admin 7-8 years ago and knew 1 Linux command (ifconfig if you must know). I learned rapidly how to be a Linux admin, probably helps that I was a Windows admin for 12 years prior so I had a solid background. I'm a mixed Windows, Mac,, iOS, and Linux admin now days. I teach my junior admins by giving them a task with specific details and deliverables. They either learn it or they fail.

  • @0ptikGhost
    @0ptikGhost 2 місяці тому

    Programming is problem solving. The poster just described how to learn to problem solve. You need to know a few basics and then are asked to solve problems, plural, not just one problem. The basics should be relevant to solving the problem set. Completely agree learing to problem solve is the optimum approach to learning. Speaking from experience. This is precisely how I learned programming back in 1997. That course built up our toolbox through out the entire course. The instructor spent less than 5 minutes each class explaining some new tool. We spent the rest of the class solving problems from the problem set for the week. A subset of the problems were required. Most problems were optional. Students were encouraged to help each other. Best learning environment I've ever experienced. Nearly 30 years later I still try to employ a problem solving approach to all my learning whether it is programming or anything else.

  • @evolagenda
    @evolagenda 8 місяців тому

    I've been looking for a way to put this into words about a year now thank you

  • @LuxFerre4242
    @LuxFerre4242 2 місяці тому

    I've learned vastly more from fixing breaks in my projects than from any other source.

  • @Choco794
    @Choco794 6 місяців тому

    That’s why building projects are beneficial and so vital to ingrain knowledge.

  • @xandroid001
    @xandroid001 8 місяців тому +1

    Thats why fundamentals is the most important part of learning.

  • @AngmarAnvil
    @AngmarAnvil 7 місяців тому +1

    I like to be able to answer where why and how before starting to code, building a solution design proposal before moving to the implementation works for me.

  • @lukaandjelov766
    @lukaandjelov766 7 місяців тому +3

    When he started explaining I thought he was gonna tell us why AI will be able to do this as well if not better and faster.

  • @m3mes420
    @m3mes420 8 місяців тому +1

    The first one falls under tutorial hell. Second one is actually learning.

  • @piotrek7633
    @piotrek7633 8 місяців тому +1

    Well, you dont have to reinvent the wheel, you try to learn good practice

  • @dev_taco
    @dev_taco 8 місяців тому

    The way you suggested to learn how to code is how I learned to code. The most astounding thing I learned was I just learned how to learn.

  • @GetShwiftyInHere
    @GetShwiftyInHere 7 місяців тому

    SoloLearn does a cool way of teaching coding. Either drag and drop the code to correct spots, type in missing pieces, or giving you a playground to manipulate code to see how it behaves. At the end of each lesson there is a problem you have to solve so ot gives you practical examples of each concept. You cant move on until the problem is solved.

  • @huffinLeeroy
    @huffinLeeroy 7 місяців тому

    I never got it in school. Later in life, I decided to try learning it again, so I tried all the books and UA-cam tutorials I could find...still didnt get it. Then, a friend got me into arma. I loved the game and became curious about the creative possibilities the scenario creation afforded. I picked up the basics quite quickly. Because no one is saying "do this this and this to create this", I was self teaching by finding an incidental, self-created, problem; and working out not only the coding around it, but also different ways of applying types of structures to different problems, and later how to optimise. Now that same friend (who is a professional programmer) asks me for my scripts and functions! I then found that going to other languages was a breeze, and I was able to pick them up quickly and create some awesome things. Long story short, the benefit of self education is enormous. Finding your own problems and finding your own way around them with the assistance of the available resources (forums, programming tutorials, etc.) provides the most robust skill set you can achieve.

  • @fullstackcrackerjack
    @fullstackcrackerjack 2 місяці тому

    This is exactly why I build 100% of my UI components myself. The iterative process is how you learn. NPM install is the opposite of learning and you eventually pay the price when it comes to forced upgrades. There is no saving time. You either pay now, or pay later.

  • @alexandratsankova5825
    @alexandratsankova5825 4 місяці тому

    To be fair, the first approach does help if you already have some prior knowledge in programming. It is how i learned Java (after already knowing C and Pascal) as it outs me directly in the deep end, by blazing me through the basics to the things I'm interested in

  • @pregooooooooski
    @pregooooooooski 7 місяців тому

    In my OS class had to build specific components. However, understanding a mid/large scale system and tweaking it is also highly valuable on a real job; not as easy as it seems and many times more difficult than to start from scratch. Looking at others people’s code is how you learn as well. You rarely do things from scratch. A mix pf both is ideal IMO

  • @elementkingaming1947
    @elementkingaming1947 8 місяців тому

    The way i learned from videos who showed you exactly how to do a specific thing, is i would than break down every component of the code and than figure out HOW it works and WHY it works, than build something different off that code component. Kind of like reverse engineering, that way i retain more information about it, and i gain new coding techniques that i can implement into my future projects. Its extremely helpful but it takes a long time to figure it all out

  • @kazegarasu4704
    @kazegarasu4704 7 місяців тому

    Prime I hope you can see this comment.
    I have been struggling in the second type of learning. It always brings me back to watching more and more tutorial videos.
    In the end, it makes me feel like I'm not progressing at all. Is this part of the learning curve? When is the best time to stop watching tutorials?

  • @ZiaGameDev
    @ZiaGameDev 7 місяців тому

    Pick a reletively simple project that interests you. Work on it while learning to code through courses so you can apply what you learn as you learn them. Since its something that interests you your practice becomes fun. Ive been doing that with game development for a few years and coding is on its own a pretty difficult thing to enjoy the learning process for. Tying it to making games has made it far more enjoyable and made my practice far more consistent and fun.

  • @The_flipsideview
    @The_flipsideview 8 місяців тому

    This might not be general and all but when i was learning programming at school, we were given a step by step guide(pseudo code) in our assignments and after we did that we had another assignment that has a description of the wanted program and an exemplary output. This way, the step by step guide gives you a way to know the language and the second assessment let you test if you understand what you have just learnt.
    I dont know if this is the full video but if its like what you said where you just try to write a code by your self after learning a language. There is a big chance you wil give up especially if you are very new because programming can really be confusing.
    Although you will learn from mistakes but not a lot and you will waste a lot of time. This is in most cases because you will only learn how to make your program work not how the codes you are actually using works. When you now have to use the same code in another work you will go and google the same thing again so that it will work for your program.
    What works for me is to read the notes and understand the basics, and when i want to code, i write a pseudo code and i follow the it in my program and correct my mistake along the way. After that i run my code, if it is working well, praise to god, if not , i try to solve it till i am stuck and i seek help.
    These are just from my own experiences. It does not apply to everyone but i think there is no one strong way to learn programming. And you dont have to choke yourself with all the little bugs from early on because you will make the mistakes many times again in the future and you will google it again.

  • @johanmbaabu1580
    @johanmbaabu1580 5 місяців тому

    the most sensible guy on youtube advincin programers

  • @youcefmantas4944
    @youcefmantas4944 8 місяців тому +4

    Can you please provide us with more tips like this im honestly really counting only on you on my journey of learning , i watch all your videos even tho most of time i don’t understand what you’re talking about but i make researches on topic but please keep on giving us more tips , i hope you can read comments even tho i know you are always busy building and reading about amazing stuff , keep it up !!

    • @SimGunther
      @SimGunther 8 місяців тому +1

      He's not the only mentor you can read about for tips and research papers relevant to your specific kinds of projects. That struggle will mold you better than any generic kind of advice pointing you in the right direction. You still have to conduct the experiments and go through the struggle.
      Have a wondrous and splendid experience in your projects!

    • @v0id_d3m0n
      @v0id_d3m0n 8 місяців тому

      Same here💙

  • @johntard-e9y
    @johntard-e9y 2 місяці тому

    I started as a child making batch scripts and programmed things as I needed them but it was only after I learned to write assembly that I truly learned how to code. After that I understand what every language is abstracting so switching to a new language is easy and takes very little time. Could not recommend it enough. If your processor is x86, nasm is quick and easy to jump into if you want to give it go.

  • @MyCodingDiary
    @MyCodingDiary 8 місяців тому

    This video is like a ray of sunshine on a cloudy day.

  • @dljworks
    @dljworks 7 місяців тому

    In school, this is the “I do, we do, you do” sequence.
    But the “break it apart and put it back together” method is a better way for most learners.

  • @StarnikBayley
    @StarnikBayley 7 місяців тому

    the best way to learn is to have an end toy application in mind. then use the documentation and tutorial to achive the "application" you had in mind.. you will get a general idea of the language/framwork/library/api capabilites and the gaps it has and it keeps you motivated to learn..

  • @servantofthelord8147
    @servantofthelord8147 5 місяців тому

    Wow. This is a perspective shift. Now on Leetcode, I’m going to look forward to the “Wrong Answer” status as a sign that I’m learning! And the “correct answer” is simply just the final result.

  • @Skarvokx
    @Skarvokx 3 місяці тому

    No, trial and error or "discovery process" doesn't equate learning, learning is understanding the fundamental parts of something so you are not just "reproducing".
    And just as someone can learn by examples, others can get the result by trial and error while having no clue why it worked.

  • @michalkrsik2702
    @michalkrsik2702 4 місяці тому

    This is also the reason why there are so many "smart" frameworks on how to be more productive and whatnot. It is not the final output that is what makes you better, it is the process of discovery for that one person.
    Learning is the journey. Final answer is just information.

  • @terry2295
    @terry2295 6 місяців тому

    That’s literally how I teach myself pretty anything.
    Rarely do I do courses on stuff, I mostly just start trying something then inevitably fail and reading up on my precise point of failure and fixing it.