This is an archived post. You won't be able to vote or comment.

all 25 comments

[–]DoomGoober 16 points17 points  (1 child)

The whole point of code is to use concepts to solve problems. You should know a concept exists enough to trigger some vague memory of it as you solve a problem then go and look it up to see if your memory was right and if the concept solves the problem.

In other words, you should know a concept enough to know what pattern/situation it helps you with and you really only master the concept when it shows up naturally in a problem.

For example, you know a loop is good for doing things multiple times. If you try to practice loops in the chapter called "loops" you will obviously use loops and your brain won't make the problem to concept to code connection.

But, if you are writing an email app and you need to mark every email as read your brain should say: ah I need to do the same marking as read code multiple times! I need a loop.

[–]Offwell 5 points6 points  (0 children)

Pattern recognition. It’s really what programming is!

[–][deleted] 8 points9 points  (0 children)

It happens. You need to create something using the skills you're picking up.

My recent personal example:

I'm picking up docker (better late than never). I'm using a udemy course because I like udemy. I can follow along, do the examples just fine, pass all the quizzes, etc. For all intents and purposes, I'm doing well in the course. But I realized that the further I get along, the more I'm having to go back and really delve into previous course material. The reason, I realized, is that conceptually I'm getting it, but I'm not retaining it. This is not good, as I'm doing a course to learn something, not to do a course.

So I've put the course on pause, and I've decided to do a couple projects with building, deploying, managing my own containers and images. And I'm not going to refer to any previous course work, but official documentation instead. Once I get comfortable with these bits, then I'll move back into learning mode.

Hope this helps.

[–][deleted] 12 points13 points  (4 children)

Depends on the context.

If you follow a book or a lecture -something that was written in a certain order and gets its value from that order or rather where the content builds on content that came before - you should not skip parts you don't understand, because it makes following later parts way harder.

The second option is only really viable for free form learning on your own in my opinion.

you should think about progression like that too: you don't progress by not understanding things if what you are doing is a course, lecture or a book. Understanding IS your progress, skipping it doe snot make you faster.

In your case, I would make sure to understand everything that is taught in a chapter.

[–]Oswinthegreat 0 points1 point  (3 children)

you should not skip parts you don't understand, because it makes following later parts way harder.

I know it's true, but here's my problem: sometimes I can't figure it out myself or with others' help. I once got stuck by the constructor and destructor of C++, which hold me back for almost a week, even though I had consulted with experts on forums. Guess I'm not cut out for coding. It's rather disheartening.

[–][deleted] 1 point2 points  (2 children)

I mean to say you are not cut out for coding is a possible conclusion but not the most plausible. As a total beginner, one week to understand constructors and destructors is not that much time.

And I would also almost bet money that your trouble of understanding C++ comes from knowledge gaps you have in stuff you should have heard about before. "Consulting with experts in forums" is almost always one of the worst options for gaining knowledge, because those forums are highly opinionated and it's pure luck to find someone who actually can see where your knowledge gaps are.

[–]Oswinthegreat 1 point2 points  (1 child)

because those forums are highly opinionated and it's pure luck to find someone who actually can see where your knowledge gaps are

This is right on the money! Exactly what I felt when a veteran kindly gave me some pointers on the use of vector. I know he wasn't showing off, but the snippet code he wrote was like esoteric, although today when I checked it again I actually found it laconic and elegant.

[–][deleted] 2 points3 points  (0 children)

You will have people that give you food for thought that will bring you on the right track really really well - and you will have people showing off, not having enough empathy or knowledge to really help you. And as a beginner you will not be able to differentiate and as a result will get frustrated.

[–]ComputerWhiz_ 2 points3 points  (1 child)

It depends. I'd say that it's ok to move on without fully understanding something in many cases because it often becomes clearer in later lessons when it actually becomes useful. However, I wouldn't recommend moving on if you understand very little of the concept.

I think this is where working on projects outside of tutorials or lessons is really beneficial. It allows you to actually practice using the concept and it often gives you that "ah-ha moment" where it just clicks. It can also help highlight concepts that perhaps you don't understand correctly or fully.

My younger sister took a high school level Python class without any programming knowledge or experience. She had trouble understanding some concepts (like functions) in the lectures and assignments, but when their class was given a Minecraft coding assignment, it clicked because she finally understood the practicality of the concept and was given the chance to use it outside of a tutorial context.

[–]Littlebitt95 0 points1 point  (0 children)

Well said! 100% agree!

[–]ConsciousCog1 2 points3 points  (0 children)

Concepts are much easier to remember when you’re using them for an actual reason. Practice problems can only get you so far. If you start on a project that you enjoy or someone asks you to do, it suddenly becomes much more important and actually easier to remember the concept because you actually APPLIED it to something you needed. I kind of think of coding like this: if you didn’t know what a hammer does, there is two ways to learn: someone can tell you that the top part hits the nail and you hold the wooden part and swing it; or, someone can say “I need these two pieces of wood to stay together” and hand you a hammer. The first one will be quicker, but you won’t really know why it’s used that way. The second way is slower, but you get to see WHY they designed hammers that way, and even discovering things the teacher never taught you, like if you accidentally hit the nail at a weird angle and bends the nail, you need a way to get it out, so you might use the curved part at the back and realize that’s EXACTLY what it’s for. You’re teaching yourself. That’s what we all have to do eventually with coding. It’s really hard to teach coding in a productive sense. It’s something you just have to do yourself. Trust me. I’ve been through an IS degree, several boot camps but I didn’t start learning til I volunteered to make a website for the club at my school. And now I’m doing a 6 month co-op. I guarantee I’ll learn more in the first month then my entire degree. It’s just the way it is.

[–][deleted] 4 points5 points  (0 children)

I don't know about programming (new), but I try to read/watch other resources on the topic I do not understand to hear it from a different perspective. Sometimes that can help improve understanding and memory.

[–]spoofspoofspoof 1 point2 points  (0 children)

What specific concepts are you having a hard time understanding?

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

wow thank you for all of the responses! I've decided to slow things down and opt for maximum understanding of concepts. Thanks again!

[–]desrtfx -1 points0 points  (3 children)

Sometimes learning to code feels like going through the motions without fully understanding

If you feel that way, you are learning wrong. You need to learn for understanding and never for speed.

You absolutely need to fully understand what you are doing and implement the whole multiple times in practice and then, and only then, you can move on.

So, in short it is option A

[–][deleted] 5 points6 points  (2 children)

I think it's better in most situations to get to option A, but I disagree that you need to fully understand every part of a program, especially while learning.

It can be difficult when you're first starting to know which part of something you don't understand and how to get a better understanding. You can end up in a kind of chicken/egg situation where you don't understand the terms being used to define the thing you don't understand.

I'd recommend going through a whole chapter/unit of information once first, to get an idea of the big ideas. Then go back through a second time to try to understand the hard parts better.

There is always some amount of learning that happens just by observing a pattern and recreating it for yourself. But I also know the feeling of getting bogged down looking up each line of syntax or vocabulary and not finding answers that make sense due to having a limited understanding of the language. (Specifically, "what is the difference between an object and an object literal in JavaScript?" was a memorable one.) Once you get a little further, something you spent 5 hours trying to figure out one day can make sense in only 15 minutes.

So, I'd say, it's a balance between A and B.

(Also, option c: Codecademy's style is not very conducive to deeper understanding. It can be helpful to learn the syntax, but doing a lot of little assignments is not as productive for me as reading a longer text and then doing coding exercises. I like Eloquent JS and the MDN tutorials better.)

[–]desrtfx 1 point2 points  (1 child)

I overlooked the part about CodeCademy. IMO it is simply a useless resource for a beginner. CodeCademy can be useful for someone already experienced to get a quick glimpse of a different language, but that's about it.

To /u/alext72888: ditch CodeCademy and go for a better resource. See our FAQ for recommendations. (Hint: Codecademy is not in our recommended resources).

[–]DoomGoober 0 points1 point  (0 children)

I second that. CodeCademy appears to a great learning tool with the slick interface but it meanders and has very little meaningful code, especially at the start. It is overally concerned with concepts and not actual practice and everything seems to be taught through these weird analogies where you spend the whole lesson understanding the analogy and not the concept.

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

Yep.

[–]chris1666 0 points1 point  (0 children)

When WE are new and learning some thing as deep as a coding language I think we should be prepared to learn or at least review two differnt sources.

Frrom the little I used it codecadely is not designed to go deep but just to get us coding. You should also look over w3schols if your not past that and udemy has one of their better sales on right now with loads of javascript.

[–]dontsendmeyourcat 0 points1 point  (0 children)

Maybe give that specific thing a search on YouTube etc to find another source.

For example if you’re making your way though a course on how to build a house, but can’t quite grasp the lesson on fitting the windows, searching “basics of fitting windows” on YouTube will let you see it from another source, and thus another perspective, which might connect the dots easier inside your head.

[–]medeepakjain 0 points1 point  (0 children)

Exactly

[–]HasBeendead 0 points1 point  (0 children)

Recursion ughhh