What is the point of 'Learn Functional Programming by Building a Spreadsheet'? Seriousy?

Hi everyone,

I’ve loved FCC so far. The HTML and CSS course was great and so far my experience in the Javascript course has been awesome, up until today. I just finished the JS ‘Learn Functional Programming by Building a Spreadsheet’… what is the point of this course? It jumps levels ahead in complexity previous to what is taught before, introduces multiple new topics, and doesn’t explain any of the reasoning/logic behind the programming. Is this intentional? Are we supposed to kinda suffer through this course and look back on it later when we are more advanced? Did anybody understand what they wrote the first go-around? Please let me know.

5 Likes

I didn’t understand a lot of what I was doing when I first learning either. Understanding the big picture is pretty hard to learn.

I didn’t write that course though, so I can’t speak to design intent, but being “mean” wasn’t part of it, I’m sure.

4 Likes

Haha I don’t think anyone at FCC intends on a course being “mean”. Just the difference between this course and all the courses before it is drastic.

1 Like

I did not do this course. Can you refer to any particular step(s) that was particularly hard?

edit: I thought i did but i didn’t

There weren’t any specific steps that were particularly more difficult than another. The entire project seems overly difficult, and from my experience FCC steps are pretty good about explaining the logic behind the code. Not here. It was more monkey see monkey do.

One of the only online resources I found to help me on the backend(second half) of the project is here: https://www.youtube.com/watch?v=im4SKNbagaA&t=78s
His commentary and the comments sum of a lot of my own frustration and some of the potential problems with this course.

1 Like

The JS course isn’t really “backend”, btw. Its frontend JS stuff.

I’d be careful using YouTube, as video walkthroughs do the thinking through the problem for you, and learning to puzzle through the problem and built to solutions is the hardest part of programming to learn so its pretty important to practice.

Right. I didn’t literally mean ‘backend’ as in server side software development, I just meant the second half of the course (Video is steps 79-105).

As for the someone “thinking through the problem” for me, there isn’t much thinking being done. I’d recommend reading through the comments and maybe listening to the commentary a bit to see where I am coming from.

I’m confused? So you did already understand what you needed to do and watched a video because…?

Watching a video walkthrough when you understand the steps is pretty uncommon.

Oh no, I didn’t understand almost any of the steps around the half-way point :laughing: :laughing:, The kicker here is that neither does the commentator :rofl:

Again, maybe watch some of the video and read the comments to see where I am coming from.

1 Like

Ok, so watching a video when you don’t understand is exactly what I’m recommending against doing.

If you give specifics about what’s hard and why, we can turn that into improvements to the curriculum.

i gotta play a bit of devil’s advocate here. I really try to open issues when I see something weird/off/wrong in the curriculum but sometimes there’s an overwhelming amount of these following each other that you just can’t sit there and open an issue for each one. Frankly, sometimes you just wanna get thru something, and stopping to open an issue at every step is extremely disruptive. If the OP’s point turns out to be true (I’ll have to judge for myself one day when I get to this project), then it is hard to expect the OP to give constructive criticism when they’re trying to stay afloat.

Not saying that it wouldn’t be great if people opened issues, just saying that I’ve personally seen what it’s like to see -so many- that it turned me off from reporting.

If nobody opens an issue, the problem won’t get fixed.

2 Likes

I’ll be more specific here:

  • Many steps don’t explain any of the logic or reasoning behind why code is being written. This is true of almost all the steps from 30 onward and is unlike previous FCC courses.
  • Introduction of new concepts that haven’t been brought up before:
    - Advanced regex variables
    - Currying functions
    - New Object Methods (some not introduced at all - there is an assumption that we know what they are and how they work)

At a highlevel I think a great way of demonstrating the jump in complexity is looking at the final product for this project compared to previous projects in the JS course.

I’ve included some comments from the YT video to help illustrate my points:

1 Like

Ok, that’s not specific enough to generate changes, but thanks for the feedback

1 Like

yes 100%.
I gotta say though, in my experience, a product should be tested before being released to the public. (I have no clue if this applies to open-source as I haven’t ever worked in this type of environment) I just know that I can’t expect a “customer” to give me more than general feedback (which I think we’ve heard here a few times already from different people) when there’s an overarching issue (I call that issue for the js beta curriculum the “no why, no background” issue to reflect that I think many steps don’t say why something is done and/or give enough background info).

I find myself being quite turned-off from the whole topic honestly because it seems self-evident to me that there wasn’t enough time taken to get these projects ‘camera-ready’ or whatever you would call it. I tried to express in the canary channel on discord how the rpg game (back in its canary-test edition) needed to go into the whys more. To allow more time to repeat and relearn. Somehow my thoughts never made it beyond that channel (or at least, not to other projects maybe) It’s disheartening. Anyway, speaking for myself, I will keep opening issues when I see them.

2 Likes

There was a lot of effort put into getting these projects ready. But it’s still in Beta specially to get more feedback. Coding, learning, and learning coding are all very difficult. The old curriculum has the benefit of many years of testing with hundreds of thousands of users slowing improving it. The new curriculum isn’t there yet.

I’m not sold that this project based approach is a good idea, but I do think lots of people are putting in lots of work to try to deliver the best thing they can to students.

5 Likes

I think with some of the steps, you cant explain everything without confusing or overloading the learner.

It’d be nice if documentation and references were occasionally linked to, with encouragement to search for definitions when breaking up things like a regex.

It seems obvious to look things up for me now, but I remember when I started, I felt I was cheating when using the search engine :confused:
It was only through reading posts on the forum that lead me to incorporate the browser into my workflow without the feeling of having failed.

1 Like

I personally disagree with that.
Since this post was made, I have gone through the spreadsheet project and I have noted the same issues reported here.

Some of things that the spreadsheet project assumes for eg is that the camper has used a spreadsheet before. For eg they talk about parsing a formula like =sum(a1,a6) but this type of thing is not common knowledge to our campers.

So why don’t they add links to other sources to explain stuff like this? Well it seems it is not part of the “design” for the fCC projects to include external links. (That is why none of the steps ever have any)

An important part of making learning software is identifying the audience and being hyper focused on them to give them a good experience. If that focus is lost or was never there (maybe no effort was made to identify the base knowledge that campers have and work with it) then the learning outcomes will not be good.

Having said that, of course the learner may need to consult other sources to complete their knowledge but it shouldn’t be required to understand the entire lesson!

1 Like

I don’t think I can explain how I felt about the old version of the JavaScript course.
JavaScript still frightens me.
But since the course changed, I plan to try it after the Python course.

I remember doing a lesson on Microsoft Excel in secondary school, but they never used formulas, and now I don’t even think its taught in schools at all in my country. So I agree theres a problem with assuming people will already have experience with this.
But I wouldn’t go as far as to say they made no effort to identify the base knowledge of their campers.

I think making any course is hard, and a course like this, open to everyone despite their age, background and culture, is even harder.

I didn’t have a great education, so have many knowledge gaps. I dont think fCC could teach me everything I need to know :confused:
Its just so hard :cry:

1 Like

It seems to me, and keep in mind that I’m no expert and I haven’t done that project yet, that we all reach these moments where we’re stumped and frustrated on many of fCC’s projects - not just this one. Sure, some projects are harder than others, depending on the concepts we’re trying to learn and also the mood we’re in. Also, everybody has a different brain - some concepts that are logical to some may be absolutely mind-bending for others. Perspective is key.

I know I have gotten stuck on fairly simple and well-explained steps in a project, only to think my way out of it little by little and end up learning that concept really well, in a way that I’ll never forget it. As with learning anything, you have to turn weaknesses into strengths. It’s not easy - absolutely isn’t - but if it was would that make you feel any better? The fact that this is hard is what gives us hope that we’re learning something worthwhile, that we’re not wasting our time, that we’re mastering a skill not many other people had the will to master. No, if it was easy we should be more frightened.

Really, one can learn anything with a combination of time, some liking for it and some persistence. We have the necessary intelligence - we just need to be patient and keep pushing forward with what we can do. As long as you’re progressing, even if it’s baby steps, there is no need to worry. When you were in first grade you could’ve never dreamed you could do quadratic equations, right? But you kept learning, little by little, 1 + 3 and 9 - 4, step by step until, one day all the knowledge synchronized and you find yourself solving previously unthinkable problems. So it is with programming.

I’m sure the curriculum needs improvement, and posts like these are the engines of that progress, so thank you for that. At the same time, there is and will never be a perfect curriculum with smooth steps, no confusion and an ideal progression rate. Adapting to these bumps on the road are what will make you a good programmer. On the job countless problems and annoying bugs constantly show up, and it’s up to the innovation of us, the builders of the software world, to persistently work on those until they’re fixed and keep this world of data running.

Try researching the general concept of the problem when it shows up rather than going for a video that exactly deals with that lesson. Taking general knowledge and applying to a detailed step is the best thing you can do for your coding career. So good luck with the next projects and don’t worry about getting stuck - use these faults in the curriculum to your advantage!

This message was also for you, @Guided. Knowledge gaps are not permanent. Practical knowledge is everything.

Happy coding to all!

Nicolas

1 Like