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...
1. Draw a circle
2. Draw the rest of the owl
1. Draw a circle
2. Draw a hawk
Manager: ship it. It’s good enough.
every single download guitde
1. Trace on the dotted lines to draw an owl
2. Draw an elephant on a blank piece of paper
I love that subreddit
thats wrong, your forgott one thing. you dont know what a owl is. Thats the problem with all teachers?
"The master has failed more times than the beginner has even tried."
true
Every senior dev after not managing the Legacy code for several decades and then retiring: "My time has come........"
ooof, I'm stealing this!
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)
Mostly fail because of lack of training
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
@@DasHeino2010 then just learn general use of html and css and then move on. If youre confused just search google and take note.
@@MaynardFreek then you keep doing it until u succeed
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
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.
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.
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
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.
Has anybody taught a baby a walking theory?
@@upcom1ng116 yes
no struggle = no gains
it so many words, and without youtuber help. the best way to learn how to program is to program
birb
lightweight bebe
@@ginxxxxx indeed, just get your hands dirty and keep banging your head against the table :)
@@ginxxxxx no pain, no gain.
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.
This is why I recommend new programmers learn to read code first before learning to write it.
Could you clarify? What's the difference? Isn't learning how to read natural language done by teaching how to write?
@@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.
@@twisterteeHell no. You don’t learn to read by learning how to write.
That’s not how language works.
@@comradecameron3726 yeah that s why Kids never do step by step their poems et lol
Can confirm. Throughout my school years, I learned more when my teachers made intentional mistakes and explain why doing that was a mistake
intentional mistakes
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.
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
you should call your tech "hacking" and also when you really understand it you should call it "grok"
you will be fame
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
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.
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
Very true
How I learn.
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.
So true. That dude takes you through the entire process and that is where real learning happens
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'"
You are good. I love you.
Please, teach me JavaScript
Your energy and enthusiasm are contagious. Love it!
Why would I rebuild X?! Elon dominates the market, there is no way I could compete with him
i was looking for that comment
X is billion dollar software so if you make 0.1% of that you're good.
My thoughts exactly
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.
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
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
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.
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.
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."
@@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.
@@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.
@@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.
Sanity.
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.
Proof by contradiction 👌
True with everything. Even talking.
Teaching a derived answer doesn't help people understand the answer.
Practice failing forward.
Whenever this reel comes up in my feed, I watch it. Precise and beautiful explanation of what learning is.
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.).
So simple yet a deep philosophy
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.
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.
I actually like best those videos where the instructor runs into a problem and solves it live rather than edits it out.
As someone learning to code this 💯 facts . And you have to read the damn docs. .
Love it. We only learn from being wrong. The struggle is real, and worth it.
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.
That is the exact approach in the current course I am attending. I have never learned so much so quickly and retained it.
Issue with programming is that you can easily struggle, waste time, have mental anguish and not learn anything new.
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.
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
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
Been there every week
That goes with all learning, try pottery, you will realize you go through these steps even there
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.
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.
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
This is true. Really fortunate I had a great mentor of a lead back then on my first job.
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.
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!
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
@@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.
@@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.
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."
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.
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.
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
Keep going. You’ll be the one over someone else’s shoulder. I realised when it happened to me.
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!
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.
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
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.
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
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
I have never seen such an educator who goes to the underpinnings of learning, eager to follow you to learn more.
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.
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.
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.
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.
Yeah.. this can be really tough, especially early on.. but it is the only way to get to making what you actually want
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.
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.
I agree completelt
"Failure is the whetstone that hones us for success"
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
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.
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.
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
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.
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
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)
It ain’t learning if you ain’t fail
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
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'
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.
Holyshe the best vid i've ever saw about learning process
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
Same with music as well. Most people just play, but its the theory that accelerates your understanding.
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.
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.
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.
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.
I've been looking for a way to put this into words about a year now thank you
I've learned vastly more from fixing breaks in my projects than from any other source.
That’s why building projects are beneficial and so vital to ingrain knowledge.
Thats why fundamentals is the most important part of learning.
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.
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.
The first one falls under tutorial hell. Second one is actually learning.
Well, you dont have to reinvent the wheel, you try to learn good practice
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.
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.
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.
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.
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
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
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
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?
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.
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.
the most sensible guy on youtube advincin programers
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 !!
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!
Same here💙
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.
This video is like a ray of sunshine on a cloudy day.
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.
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..
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.
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.
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.
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.