A rant about the course

I am taking the course and its going “OK”

But it is getting confusing, not because of the code itself, but because of the samples or test given have wording that are going to become a bit confusing.

Take the Testing Objects for Properties section.

Sample given:

const myObj = {
  top: "hat",
  bottom: "pants"
};

myObj.hasOwnProperty("top");
myObj.hasOwnProperty("middle");

Very super easy and simple.

Then you get a test and solution that looks like this:

function checkObj(obj, checkProp) {
  if (obj.hasOwnProperty(checkProp)) {
    return obj[checkProp];
  } else {
    return "Not Found";
  }
}

So, what is confusing about it?

You are going from testing the properties of an object, to testing the arguments of function.

It might work the same way, but on top of it there are these check points below talking about a pony and a kitten, and there are no ponies or kittens for the test given, so it makes it a bit more confusing.

Talking in within the same values for the test given, and testing result samples would make it a lot easier to find out what the test is trying to accomplish.

checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "gift") should return the string pony.

checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "pet") should return the string kitten.

checkObj({gift: "pony", pet: "kitten", bed: "sleigh"}, "house") should return the string Not Found.

checkObj({city: "Seattle"}, "city") should return the string Seattle.

checkObj({city: "Seattle"}, "district") should return the string Not Found.

checkObj({pet: "kitten", bed: "sleigh"}, "gift") should return the string Not Found.

Its getting confusing because learning how to do more than basic things with code is hard! Struggling while learning is normal!

Understanding function arguments is a common difficulty. This challenge wants you to combine the example with previous information, which is hard.

To be able to program, you need to be able to synthesize multiple concepts to accomplish complex tasks. You need to be able to go from copying examples to modifying examples to extending examples to be successful.

I don’t really agree with the idea of doing more work for the learners - deciding what code to run in order to experiment and debug when you are working is important. Us thinking more for the learner delays the learning, in my opinion.

Don’t forget, the forum is always available if you get stuck or have questions! You should ask on the forum before looking up the solutions!!

You are going from testing the properties of an object, to testing the arguments of function.

The camper should have already learned that arguments are what you send them - that if you pass an object to a function, then the parameter is that object.

but on top of it there are these check points below talking about a pony and a kitten, and there are no ponies or kittens for the test given, so it makes it a bit more confusing.

It has to be tested with different objects to ensure that the user is not hard coding the object in. (I see that a lot on “Why doesn’t this pass?” - on this very challenge.) It needs to be made clear that the function has to work for any object and any properties.

Talking in within the same values for the test given, and testing result samples would make it a lot easier to find out what the test is trying to accomplish.

Again, I think that would be bad - it would make it less clear that this should work for any object and would make it much more difficult to test.

Everyone has things that are difficult to sink in. But it is different for every person. For me, the above concept was very easy. I’m not saying that to brag - there were other things that took much longer than they should have to sink in. My point is that for any of these challenges there is probably someone getting tripped up on them. If FCC starts adding in extra challenges in between to account for every possible tripping point, then the curriculum is going to balloon to 5-10 the size and people will quit out of boredom.

I remember Randy and I were talking once - wouldn’t it be nice to have analytics on the number of tries users need to complete a challenge, to identify the biggest problem spots. But you’ll never get rid of them all.

I would also add that struggling with this is good. It’s what happens in the real world. Coding is not typing away, whistling a happy tune, while bluebirds chirp on your shoulder. There is a lot of stress and frustration. And there is a lot of “having to look things up”, which is what I think users should be doing. And asking for help - I do that on the job all the time. These are vital skills.

And remember that this is all a work in progress, made and supported largely by volunteers.

1 Like

To add onto this, a structured learning environment could be optimized for a better learning experience do doubt. I believe the curriculum suffers from these sorts of inconsistencies due to the nature of how it is built.

But the real world is unstructured, confusing, nasty, ugly, and an open-ended mess.

Computers and the code humans write will somehow need to translate the real world nasty-ness to the strict logic a computer requires. Such a process is annoying. Furthermore if you screw up this process, a computer will not hesitate to point it out to you and make your code explode.

So yes I feel the pain and annoyance the you may feel toward the curriculum, but I do want to point out that this pain and annoyance within a structured learning environment is only the surface of the real world’s pain and annoyance that is software development. Its always annoying, but it also is part of the job that wont go away.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.