Help us build Version 7.0 of the freeCodeCamp curriculum

:tada::tada::tada:
First of all a HUGE shout-out for keeping FCC moving forward!
Sounds trivial, but I know how much work, thoughts and fatigue goes into each step.

So props to @QuincyLarson, and all the FCC contributor for the constant effort.
:clap::clap::clap:

Now, if I may, I would like to raise two main “concerns” I had:

  • I fear at some point some longer explanation of some sort would be required.

I am not talking about long college-like lectures, but at least some sort of explanation about the reasoning why certain things are the way they are is mandatory.

I have a feat that without it, a new camper with zero experience in coding, following only directives, will end up knowing how to do a thing because “that’s what I was told to do” instead of “I do it like this because…”

So in my opinion finding a good compromise between “a boring wall of explanatory text” and “dynamic yet informative” will certainly be a challenge :slight_smile:

  • Hitting a wall, and overcoming it, is one of the most valuable lessons to learn.

We have all been there. Not only during the learning process, but also on the job.
There will always be a time where, as a dev, you will have to face a challenge that you have no clue how to overcome (yet!).

Learning to roll up my sleeves, do my own research, being frustrated, waste days (that always in retrospection are never a waste but experience gained regardless) of time only to do what seems basic, but ultimately overcome them, is what made me the developer I am.

Again, I think that finding a good compromise between “smashing into a wall”, and learning to struggle will be another good challenge. :slight_smile:


That said I’ll see If I can contribute more concretely… looking at you flappy-bird-react :eyes:

16 Likes

Wow so much excited when you are planning to launch .
Thank You Free Code Camp Team
Thank you
@QuincyLarson

5 Likes

These are both great points.

Let me reply one-by-one.

  • I fear at some point some longer explanation of some sort would be required.

The challenge is to break concepts down into small enough bits that a sentence or two will suffice. Show instead of tell - and do this through painstakingly designed tests.

Think about all of the complexity in a modern video game like Starcraft or Civilization. And yet, all the teaching is done just-in-time. People don’t generally read manuals, and video games have stopped even including manuals. Instead they have single sentence explanations peppered throughout the experience.

“Don’t shoot the food.” Why not? Oh, I shot the food and it disappeared, so I couldn’t eat it. With coding, these kinds of “teachable moments” are everywhere, and the consequences of mistakes are negligable - just hit the “reset my code” button and you’re right back “on the rails” where the tests want you to be.

Why should you generally use === instead of == in JavaScript? Show - don’t tell. It will take some creativity, but I’m confident we can impart the “why” along with the “how” through these tests.

Learning to roll up my sleeves, do my own research, being frustrated, waste days (that always in retrospection are never a waste but experience gained regardless) of time only to do what seems basic, but ultimately overcome them, is what made me the developer I am.

Same here! But I almost quit many times. And I was focused on learning full time.

Imagine if I had just come home from a full day of work, put my kids to bed, and finally sat down at the kitchen table. That’s most people who use freeCodeCamp. And these people tend to give up and then restart several times before they are able to successfully get a developer job. By keeping people on a “golden path” - at least initially - we are are able to keep more people progressing with their skills.

There will still be plenty of head-scratching once they get to the Required Projects. We can gradually ramp up the difficulty leading up to those, so it’s not such a steep learning curve.

That said I’ll see If I can contribute more concretely… looking at you flappy-bird-react :eyes:

We would welcome your help with this. See whether you can build a bare-bones implementation for starters. Then we can work backward to break it down into a series of tests.

10 Likes

What are the plans to make JS-based projects testable at each step without locking everyone into exactly the same codebase? For example, when introducing, say, higher order or arrow functions, are there going to be specific functions that are required by name, taking and returning specific data structures, or are the tests going to be more functional based on the expected outputs, trusting the user to use the proper implementation?

As it is now, the challenge course does have a certain rigidity to each challenge, but the reins are loosened slightly in the honor-system projects. I’ve seen more than one example of a project that passes in functionality, but can’t pass the test suite regardless without major rewrites.

4 Likes

I love the idea of Learn React by building Flappy bird, I’ve just finished the React course and i’ll be doing it again with v7.0. In general though this sounds a great idea of project based learning, especially giving context to what you can do with a tech.

I’d like to help too!

4 Likes

Cheers @QuincyLarson

I figure some kind of curriculum update has been due for awhile. Certainly, I can see how building toward a working project vs just plugging away at exercises that might or might not seem obviously connected, could keep learners motivated. I’m definitely intrigued and would like to contribute.

The one thing that really stood out for me in the original post, however, was this:

Throughout freeCodeCamp’s history, I’ve heard the same two requests almost every day:

  1. Please smooth out the difficulty of freeCodeCamp’s curriculum. It holds your hand for the challenges, then abruptly stops holding your hand during the projects.

Personally, this is what I really appreciated about the curriculum; having to really struggle with the projects made getting the full-stack certification that much more rewarding.

Either way, I’m hopeful that better things are coming, and I look forward to contributing in whatever way I can.

5 Likes

I’d recommend you to read this before starting: https://testing-library.com/docs/intro

Maybe it’ll help you avoid the train-wreck that the current projects/tests are.

2 Likes

I agree with valuing the The Struggle aspect of the curriculum as-is. Maybe it’s because I tend to be somewhat of an autodidact but I think the challenge-level seems just right enough to reward those who choose to stick with it while “weeding out” those who want more than what is already provided.

I mean, as it is, FreeCodeCamp is FREE and has a supportive forum that offers me quick support when I’m stuck. What more can one ask for? Further, it seems to me that the wall-of-words aspect of FCC might aid in training would-be developers to read tech documentation.

All that said, FCC seeming near perfect in difficulty to me might just be to do with my personality. I am so thankful that FCC is around and will contribute in the future versions in anyway that I think I can.

6 Likes

That’s correct - these new projects will be rigid to keep people from straying off too far into the weeds. So yes, everyone’s projects will look the same, and have the same resulting codebase. Rather than serve as portfolio projects you’d showcase, building these projects is purely for learning purposes.

The required projects at the end of each certification, on the other hand, are open ended. The tests are designed to be as flexible as possible to afford plenty of personalization.

And even though you could in theory submit a plagiarized project and claim a certification, we do audit these submissions and catch cheaters all the time (we have a special isCheater flag - kind of a scarlet letter. Don’t cheat, folks!)

10 Likes

We aren’t going to completely remove the struggling - we’re just going to better prepare people for the struggling. Life is a struggle - learning to code is no different.

We just want to keep people on a “golden path” initially so they have time to acclimate.

freeCodeCamp will still be extremely challenging.

14 Likes

I heartily disagree with the comments supporting the sudden challenge ramp-up. People will hit a wall regardless, because everyone has different learning processes, but if everyone is hitting the same wall, then there’s clearly something wrong with the challenge course.

@QuincyLarson: Cool, I wasn’t sure if the challenge projects were going to be the cert projects too. In that case, I guess it does make sense to have rigid “challenge course projects” and open-ended completion projects.

6 Likes

It is impossible to determine which route of instruction would be the best–unless there are future seers among us.

But I don’t think that it can be said that “there’s clearly something wrong” with FCC. A challenge point or commonly hit wall doesn’t immediately point to a flaw in the program.

In fact, some might argue that walls are good to hit and overcome. For example, I’ve been hitting walls for the last 7 months but overcame them left and right and still continue to hit and overcome them. I feel that this is instilling a good work ethic and confidence to tackle difficult challenges as well as training me to look things on my own (an ability that is said to be necessary in programming).

Only the future will tell if Quincy’s new approach with FCC will be more effective than the current one, but to suggest that the current method is “wrong” ignores the fact that plenty of people (including me) have responded well to the curriculum.

4 Likes

I’m not saying there’s anything wrong or broken with FCC overall – flaws can still exist in an otherwise terrific learning platform, and part of that excellence is about acknowledging and fixing defects as they’re discovered. Like I said before, if nearly everyone is hitting a wall at the same point in the curriculum, then that needs to be addressed as a potential bug, whether it’s the wording of the challenge or gaps in the curriculum.

I’m also excited about the project approach, which should make those challenges a lot more interesting as people get invested in the project as it develops. I’m amazed at how much FCC has evolved in the time I was away only a couple of years ago, and I look forward to seeing what amazing stuff they come up with next.

5 Likes

I disagree about the wall being a bug–to me it’s a feature.

But I’m with you on seeing FCC evolve!

4 Likes

Couldn’t resist…

16 Likes

Looking forward to what’s coming next. Very exciting

3 Likes

I’d love to help! Joined the FCC Contributors Gitter.

4 Likes

This is a great idea, and I think diving right into projects is a great way to learn and also helps you retain the knowledge better!

Will you be keeping the challenges available as well, as a sort of ‘side resource’? Although I’ve definitely learnt quicker with the projects, it’s been really helpful to read the explanations of certain concepts in the challenges. Perhaps something like a freeCodeCamp library with the current explanations in would be helpful for reference.

I’m still fairly early on in my learning journey, but will be keeping my eyes out for what I could contribute to with this project! :grin::woman_technologist:

5 Likes

Thank you very much Quincy for moving forward and continuing to improve.

I raised this issue once and as yet I haven’t been able to continue the course. I stopped at one point due to some situations beyond my control, and just can’t get back to restart afresh and get to where I left off - despite your suggestion to go back to the start learning page.

So my suggestion at this point would be to remove this obstacle of not being able to log in at anytime, restart as and when necessary. There will always be slow learnerd.
I also ask you again to help me get back to restart my courses once more.

Please call on me to assist at anytime as you see fit for me to do so. I am a beginner, but would love to be a part of the new development. Cheers, and all the best!

3 Likes

What a great concept! It is more fun, and easier to learn, by building a project as we go.
I’m happy to help where I can.

3 Likes