Speedrun progress — entry three

My June speedrun is over — ok maybe not

Image from: https://emojiisland.com/products/poop-emoji-icon

I gave input on the new freeCodeCamp “test suites” that automatically test project submissions back when they were first implemented. None of what I felt were reasonable concerns put forth by myself and others were addressed at all. Well, I take that back. Now the projects have this disclaimer tacked to the top of them:

You can use HTML, JavaScript, and CSS to complete this project. Plain CSS is recommended because that is what the lessons have covered so far and you should get some practice with plain CSS. You can use Bootstrap or SASS if you choose. Additional technologies (just for example jQuery, React, Angular, or Vue) are not recommended for this project, and using them is at your own risk. Other projects will give you a chance to work with different technology stacks like React. We will accept and try to fix all issue reports that use the suggested technology stack for this project. Happy coding!

Let me translate that for you — what it really means is “our brittle as shit testing suite can’t handle anything but plain html”.

Additional technologies (just for example jQuery, React, Angular, or Vue) are not recommended for this project, and using them is at your own risk.

At my own risk? Isn’t that sort of warning typically reserved for dangerous stuff? I expect that type of disclaimer for things like skiing, deep sea diving, jumping out of airplanes , running with bulls, juggling chainsaws— but “use Angular at your own risk” — wtf? What dire consequence will befall me if I throw caution to the wind and decide “screw it, I’m using Angular, I accept the risks” — well, the FCC test suite breaks because it’s brittle as ****.

What this means, in practical terms, is that my awesome Angular speedrun application in which I implement every one of the FCC projects won’t pass the FCC test suites because I *gasp* use material design components.

In order to pass the test suites and still have my comprehensive app, my only option is to make my app how I want — then reimplement stand-alone crappier versions of all the projects to pass FCC’s test suites.

While I’m on my soap-box, let’s talk user stories. At the top of each of the project descriptions there’s a link to Wikipedia’s description of user stories. I actually went and read everything at that link to ensure that my understanding of user stories (I’ve been using them to describe applications for, well, decades) wasn’t outdated — I mean, hell, tech changes so fast in the web world that maybe there was some fancy new-fangled concept of the user story that somehow made it ok for the bulk of your stories (or even one of them, for that matter) to be things like “as a user I can see a div with the id ‘bullshit’”. User stories didn’t change — FCC just has zero understanding of the concept, even though they link to a Wikipedia article that explains it in depth.

Midway through typing this I decided to proceed with the “do the projects correctly in my app then give FCC a crappy other version that passes their test suite”.

You can view the results of my tribute page here:

It passes the entire FCC test suite and links to my actual project — Problem solved, I guess.

For anyone curious — my suggestions back when I first saw the “automated tests” freeCodeCamp intended to introduce with the new curriculum were:

  • Allow a user to opt out of FCC’s automated tests by linking to their own test suite which implements an equivalent or more robust set of tests, or
  • Instead of automated tests which test only that some elements are present in the DOM, engineer a process whereby once you have completed a particular project, your project isn’t vetted until you review 5 submissions for others, and at least two people review your project — for reasonable user stories and to check for plagiarism. FCC crowd sources everything else, why not let the users check each others projects. Popup a form that gives a link to a project and asks very specific questions — do you suspect plagiarism, can you see a tribute page at that link, does it have some sort of heading that explains what the page is about, does it have an image, is there some text you can read to learn about the topic, is there a link where you can go to learn more? Make the questions specific and actual user stories — no checking “does it have a div with a particular id” — no “do you like the design” — just does it do what it should do.