I tend to disagree with most of the stuff. If you write crappy code you won’t have an easy time finding and fixing bugs. Imagine a newbie developer who just found out about async and callbacks creating all sorts of race condition bugs in a monolithic codebase. Have fun!
A lot of new developers will probably also skip testing, whereas a boilerplate at least gives you the basic layout for your tests which means it’s one less step between you and TDD.
How many years of diligent learning will it take for you to optimize your website (considering it’s not just static HTML) vs. tried and tested libraries? I certainly don’t see myself implementing a virtual DOM, memoization for my yet-to-be-reinvented-store or more efficient data structures.
Sure, in a perfect world you spend an entire year on just vanilla JS and then another 6 months on CSS & HTML5 and then you hear the word “react” for the first time. And because you have a lot of time, you try to recreate every cool piece of software to understand the problem it’s trying to solve and how it does that. But in the real world, especially when it comes to self-taught devs (like myself), it’s, in my opinion, better to be forced to use best-practices early on even if it means using libraries and/or frameworks. It’s not like reselect, immutableJS and sagas take care of all the developing for you. And you can always look at e.g., redux’s source to understand how it works on a general level without having to first come up with & write something like that yourself.
So yeah, sure, learn the absolute basics without training wheels but then don’t spend an entire year working in isolation because using boilerplate or frameworks that enfore certain best practices can be a great shortcut to becoming a better developer, in my humble opinion of course.