Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Object-Oriented JavaScript: Challenge Building Constructor Methods and Generating Objects createSpaces() Method Solution

Chris Shaffer
Chris Shaffer
12,030 Points

This course is frustrating and poorly taught.

The token object isn't used in the solution at all. It's not relevant at this point.

I'm about to stop taking this JS course @ Treehouse. This is by far the WORST taught course I've taken on this site.

I'm not learning anything from it.

All of the concepts are concepts I already know (and even use in my job when coding) yet this "challenge" to create this game is so ridiculously broken out in such a confusing way and also explained so terribly with multiple mistakes throughout it's frustrating me to the point of just skipping it all together.

I can only imagine what a totally new student to this course would be thinking at this point: "I'm just copying what she is doing and having almost no idea how exactly she got there".

Had there been more insight as to the expected structure of the app and OOJS concepts had been better reinforced, this might not be the case.

It's sad, because I've never really had this big of an issue with a course @ TH before.

Chris Shaffer
Chris Shaffer
12,030 Points

As I was still hacking through this course hoping to learn something it dawned on me why exactly it's so frustrating:

The course uses instructions to tell you what to code but not why or what problem it's intending to solve (not exactly - you know you're building a game but the instructions take that and abstract it out in a way) - it's a VERY imperative approach to programming - which is arguably a very BAD approach to teaching programming.

I was reminded of this article discussing Impertive vs. Declarative programming: https://tylermcginnis.com/imperative-vs-declarative-programming/

There's a reason we don't do this:

An imperative approach (HOW): I see that table located under the Gone Fishin’ sign is empty. My husband and I are going to walk over there and sit down.

And instead do this:

A declarative approach (WHAT): Table for two, please.

This course does the first one. A lot.

Like most projects, there's lots of different ways of solving the same problem and I imagine you aren't the only one who's likely looking at this and thinking about how you'd do it differently in order that it is simpler and less confusing.

You mention it would be better if the concepts were taught and then this course was provided, but that is exactly what happens here. She explicitly says in the beginning what the prerequisites for the challenge are.

Your comments appear to be very aggressive, and honestly, it's that kind of disrespectful attitude aimed at a (female-presenting) teacher, that feels like much more of a daunting barrier to entering a dev career than one individual's teaching style (which happens to be working for many, and is also not her design!).

This is a forum, where, as you said, you should be able to post feedback based on the money you spend. I would just consider whether you believe the money you spend also entitles you to unnecessary cruelty.

16 Answers

Ashley Boucher
STAFF
Ashley Boucher
Treehouse Teacher

Hey Chris Shaffer,

I'm really sorry you're having a difficult time with this course. I hate to hear that something isn't working for a student.

This course is trying out a new format that gives students more of a chance to build things on their own, try things out, play with code, and learn by doing. Building out projects on your own is one of the best ways to learn programming, even if that process is difficult. Overall the response to this format has been really positive, and students are enjoying the challenge - but not every style is for every student.

I've received all of your feedback and I really appreciate the more constructive insights you've provided. There are always opportunities to make improvements, and we've already started incorporating changes to help make this course more accessible to more people.

If you're interested, there's a new practice session for OOJS coming out in the coming months that is similar to this course but more instructional, and the project is less complex.

Thanks for being a Treehouse student, and thanks again for your feedback :)

Best, Ashley

Otec Perez Glass
Otec Perez Glass
7,678 Points

Nice! Building out projects on your own is one of the best ways to learn programming I agree with you, that is so true I will take the new practice session.

Chris Shaffer
Chris Shaffer
12,030 Points

Thanks for the response.

I should be clear, this particular project isn't too complex; it's following the instructions without any insight as to why we are doing something that is frustrating and affects the ability to retain and learn the information.

This format might be okay for reinforcement of already-learned ideas. I don't feel it's effective for learning new complex concepts, at least not in it's current state.

I like the idea of taking my own approach, and some of the steps near the beginning allow this, but I also feel that this would be far more effective if we'd had the traditional approach to learning these concepts first, then reinforced with the do-it-yourself approach, and eliminated the cut-paste approach used in some steps. There are obviously concept that carry over from what we'd just learned about classes, but there are a lot that do not and distract from and confuse the end goal.

There is also the fact that some of the steps do NOT take a do-it-yourself approach and instead specifically tell you to copy existing code. That isn't learning for the exact reasons you've already outlined.

I agree 100%, from my own personal experience in my day to day job that having a project to apply the concepts to is extremely valuable in truly learning them and becoming more creative, I just don't think this course achieves that goal.

I am definitely interested in trying out the new course.

Siddharth Pande
Siddharth Pande
9,046 Points

Could you please explain the formation of the 2D array in pictorial form. I tried to form the createSpace() method using two for loops but as told by Steven Parker in another comment that with my code a 1 D array will be formed. So i would really appreciate any help in this regard.

Perhaps Chris' comments are a bit harsh, but I agree in parts. I think the course could have benefited greatly from showing the actual design process. If it means watching three videos with an approach that later is discarded or refactored, so be it! We can learn from watching the mental process of a more experienced coder.

In fact, Guil Hernandez does something like that in his courses. A lot of times he codes something that will get overwritten later, or even deleted. And in each step, he explains how and why he came to that decision.

Here we start with the brainstorming approach (great), but then quickly transition into copying what the teacher decided the app was gonna be, and we don't really know why she made those design decisions. Why exactly those classes? Why that specific array structure? I'd love to watch how she came with that, and all the previous (wrong?) iterations of the final design.

Chris Shaffer
Chris Shaffer
12,030 Points

I think when I'm paying for learning that has otherwise been effective it's important to voice my experience to try to get them to improve things.

I also think that, at least in part, that's exactly what the forums are intended for.

Chris Shaffer
Chris Shaffer
12,030 Points

I think you guys might be missing my overall point, which is that while you may understand what is going on once it's explained in the video, the fact that it's taught this way means you're far less likely to retain it after the fact.

Rather than explaining the concepts behind each step, most of the steps just tell you what to do leaving your logical application of a code solution to not be used at all. The end result is understanding how it works after you have written it rather than applying the knowledge to determine what to write.

Aside from a poor teaching approach, there's a coding mistake in nearly every step.

This is not the quality of learning I've come to expect from Treehouse. It's so confusing and frustrating I've decided to just skip this entirely and worry about learning JS classes another way. OOJS is all over the place and this course is NOT a great way to learn it.

I've been applying it on my own in my job, but don't currently use classes. I was hoping this course would be useful for that. Instead, it's just trash full of mistakes and poor teaching.

Simon Sporrong
Simon Sporrong
35,097 Points

And how do you think your comments helps?

I agree that its pretty confusing, but after struggling to write the code for challenges as much as i can and comparing it to her solution, i felt i'm learning a lot. i didn't fully answered correctly or used a different approach for challenges but since i did my best after watching the solution videos i understood whats going on and understood the approach of OOJS or at least her approach which anyone might do it differently and thats fine, but most important thing is bits and peaces that i picked up and eventually they turned to a bigger picture.

I agree with your synopsis. One thing I found useful was to go through the code at the end of each challenge and comment what each line or method was doing. It made sense to me once I was able to put the pieces together.

Jeremy Antoine
Jeremy Antoine
15,785 Points

I have to say that I am really enjoying this course. In fact, it's exactly what I was hoping to find after taking the OOJS course. Ashley's teaching is perfect for the way I learn. Conceptualize -> Trial and Error -> See the solution -> learn from your mistakes. I made it all the way through to the part where you first build the board in the browser, and it did't work, so I started over, and the second time through so far has been an absolute breeze, remembering how to structure the code and walk myself through it. I love that I can understand it!

Daniel Egelund
Daniel Egelund
9,702 Points

I'm a "new" student and the line: "I can only imagine what a totally new student to this course would be thinking at this point: "I'm just copying what she is doing and having almost no idea how exactly she got there"." is exactly how i'm feeling going through this course.

I love Treehouse and have learned alot on here, but at the moment i don't really understand the code, what it does and why i write it. As Chris said, i feel like i'm just copying the instructors code. I really wish we could slow down and go in depth with every part of the code (what, how and why). It would be nice to be treated as if were dumb and not just fly trough every topic expecting everything to stick the first time. Remember, the students who are here may only have learned the foundation of JS some months or even weeks ago and far from all of the material taught is sticking.

Keep up the good work Treehouse. I now you are capable of doing better :)

Armin Kadic
Armin Kadic
16,242 Points

I also agree with Chris on this one. Maybe I'm just too tired to understand it since I've been all night trying to make it on my own and then get confused with her solution. I will probably skip this one. My question is, where can I find the new OOJS practice session that Ashley mentioned in the comments here? Does anyone know?

Owen Westlake
Owen Westlake
11,650 Points

I agree with Chris here. I am completely new to programming and have been following in order the full stack javascript track from the very beginning.

I can barely follow this section of the course. It jumps too far ahead and doesn't explain why we are doing what we are doing.

Why not just make it simple and start by creating a single 'x' row which we can put tokens into. We can then build the game up from there. Why do everything at once? It gets very confusing. I would also be nice to have visual demonstrations of the game being developed. it's all very conceptual at this point which makes it REALLY hard to understand as I can't picture in my head what is going on.

I had to literally draw out on paper the connect 4 game with columns and rows just so i can visualise what the code she is talking about is doing.

I will be cancelling my subscription to treehouse and checking out Udemy courses after I finish this stack. That's how frustrated I am right now!

Alejandro Pina
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Alejandro Pina
Full Stack JavaScript Techdegree Graduate 15,763 Points

I am just as concerned for the lack of code testing so far in this project. So far I've been taught to test your code along the way, & I think this needs to be encouraged more throughout this project. I've had to run this Console.log commands just to see if the Spaces and the Tokens objects were created correctly.

Seeing the program output also helps students "sink in" what they just coded, even if they don't fully understand it yet.

I totally disagree. I am having a good time with this course. Then again, I have several years of OOP experience in Python. It is interesting to see another programmers design choices.

Manoj Gurung
Manoj Gurung
5,318 Points

there might be infinite number of ways to go from point A to B but there is only one shortest path. Yes we do learn, but in such a circuitous and hard to follow "way" is amazing. This video gets a 1 star.

The teaching style is in this module is verbalized in the beginning as 'by example', which in the teaching world means 'follow along and use what you know from before'. It's even a question in the first quiz. This format of teaching is completely acceptable and typical to throw into a vast program such as the full-stack dev course at Treehouse. It's a tool to bridge the gap from the much smaller projects and everything you have been learning to start getting used to bigger projects and some more complicated ideas that are upcoming. Basically, it is training wheels on what it takes in terms of scope of a slightly more complex project than what has come before in the series.

As someone who comes from a completely non-tech/software background (former grade school teacher) I've found Treehouse to be the most helpful way to get my hands dirty in full-stack development. I've tried several other free and pay courses and have come back full circle to Treehouse as it is in general, more robust than the others. Some of the other options were definitely good, and each one has its own unique benefit, but overall I've found I was most responsive with Treehouse.

It is my opinion that Ashley and the team have done a great job putting this together. Thanks y'all!

Frank keane
Frank keane
8,074 Points

Yeah, my head hurts at this one. Very dense in terms of the logic - not so much the technical/syntactical - just all the calls and references to other classes, far to complex for a first go at this area. Nothing in the supporting videos prepares you for this.

You're not alone man. I feel the same.

Theresa Secore
Theresa Secore
7,001 Points

@treehouse has been great for my learning - as in learning the basics - but they need to put more indepth content into intermediate level topics, such as OOPJ - put some more 'heft' and details when explaining concepts and more practice modules at shorter intervals during teachings. But all-in-all @treehouse and the community has been amazing.