Pretty much sums up my Monday.
For an 8 hour class I spent about 7 hours not working on my instant messaging app. The remaining hour was my lunch break.
We've been having some issues for the past few days with regards to authentication not working properly. So I'd resigned myself to believe that there was nothing more I could really do with my app until we made a breakthrough with getting the authentication to work. So I spent most of the entire class either looking for other projects to work on or going over old assignments. Of course in the final few minutes of class I realized that I could have been building and styling my other chat rooms, setting up routes and components for them and adding a few other options that don't depend on authentication at all. And that is why I'm up late harnessing that last-minute brainstorm and doing homework.
But I suppose this is just a natural struggle at this point in my learning adventure. I'm smart enough to know some things that cannot be done, but not yet smart enough to know the things that CAN be done.
One project I am looking to redesign is my memory game. Rebuilding it in react should give it much better performance and allow for much cleaner code. As I looked around the internet for inspiration I found that the piece of code I used to randomize and shuffle my cards (the famous Fisher-Yates shuffle) can be replaced by a shuffler package. Which got me thinking about how many different functions and functionalities can just be replaced by packages these days. The Fisher-Yates shuffle is not a particularly difficult piece of JavaScript but seeing the code and seeing it in action is nice for a beginner and helps with understanding a few core concepts of JS and programming in general. I wonder how many self-taught programmers or lazy coders will never see it because they just choose to install packages for EVERYTHING?
I consider myself lucky that I am suffering through class by not taking the easy route when it comes to building things. What I mean is that the vast majority of our projects are built in class without specialized packages. It is a difficult road but I'm learning a lot because of it. And that will be to my benefit in the long run. Its a lot better to start a job and see that your coworkers are able to find ways to make your coding career easier than it is to tell your boss that you can't do a particular assignment because NPM doesn't have a package for it.
Hopefully I'll make more efficient use of my Tuesday. And if I'm not working on the messaging app I'll hopefully be working on something else just as important.