I remember doing this workshop almost a year ago in the previous Curriculum and now I reached it again in the current Full Stack Curriculum, I was much more prepared doing it again.
Naomi made a survey about how the JS certification is effective and I decided to point out this workshop separatley here.
As an experience for me:
On the first try (almost a year ago) was the worst for me, because it had a bunch of new things for me, like it was the first time with addEventListener for example or like I wasn´t good at all with objects too, but the current Curriculum prepared me much better for it, so it´s much much better now if a student follow the learning path correctly.
I even felt that time to giving up learning to code altogheter and I´m happy you folks made a new cucciculum. Can´t thank you enaugh!
During the current cetification, as a second try it felt great that I know what am I doing, but around step 20, I kinda lost focusing on what I´m doing and I feel, the objects are hard to track (for me at least) during later steps and I think how objects used in this workshop is a bit much if a student want to learn audio manipulation.
Examples:
A:
audio.currentTime = userData.songCurrentTime;
I know, it´s simple at first, but it would be more logical that userData and audio share the same attribute name, so .songCurrentTime should be simply .currentTime, so it´s easier to track the value changing on later steps.
So when I have to update the “current time”, I have to track this value all the way back to make sure I accessing it correctly, while I supposed to consume the logic I recently learned for making an Audio player.
Doing a step should be like: “Okay, so this how it works, I get it.”
instead of
“It should work… okay I made false association probably again, let´s try this… Completed? Well okay, let´s go the next step than. Maybe it´s makes more sense there.”
B:
The key: value pair: songs: allSongs, inside userData seems useless for me, because why not simply access allSongs directly? It´s a direct association to it, wich never changes.
C:
Do we need the userData object at all?
Why not make two variables for the currentSong and for songCurrentTime?
I guess the idea was to get used to object handling, but I think it´s makes the workshop unnecessarily more complicated. The main goal in my opinion is to learn to build a music player, but most of the time I have to make sure I using userData correctly, instead of focusing the audio player manipulation logic part of the script.
Step 8 says I have to use object, but doesn´t explaining why.
C2:
I made some google search for why do the workshop uses the id: key inside allSongs and the userData object for such and it seems it was implemented as best practices for data handling, but it´s never explained during the steps
Like I have red somewhere that keeping a “Source of Truth” in an object for React is a best practice too, but student´s probably didn´t even heard about React before at this point of the certification.
I understand, that repetion helps to learn Object handling better, but I felt before and feeling now, it´s a bit much extra challenge to tracking data during making this audio player.
It´s already complicated enaugh for me at least.
I know: “When you face it in real life…”, but I want to learn the basics of a new concept first. There is a following Lab already to test me out later.
I constatly have to check where are values stored, than have to make an association, while I feel I may can write an easier code for it and those small “fail” moments builds up to stress.
I made this post, because I don´t know if I´m alone with this and it seems JS certification is under review. It´s just, I don´t remember any other workshop before -even from Responsive Web Design- to be frustating that much, only this audio player one.
Maybe there is an other reason(s) that I feel this way, but this post is what I was able to come up with and I wanted to talk about it.
I hope I wasn´t wasting your time with nonsense, so Thank you for reading this long post!