А если допустить мысль, что то, что я сейчас делаю ("напишите программу сортировки массива"), и есть программирование - вообще хочется все бросить.
Все задачи сводятся в итоге к таким "кирпичикам". Конечно, сортировку самому реализовывать уже не придется (уровень абстракции будет повыше, алгоритм уже реализован, лишь надо указать критерий сравнения), но на реальных проектах всё оказывается весьма прозаично - забор данных из бд и возврат их в нужном формате (это если бэкенд) или получение данных, отображение их в нужном виде и реакция на действия пользователя (если фронтенд)
А с какой целью? Если чистый ES6 освоили, изучите что-то из этой троицы: Angular, React, Vue. Крайне желательно разобраться с TypeScript, особенно если возьмётесь за ангуляр. Ну и что-нибудь из библиотек-утилит для упрощения жизни, lodash, например. Ещё бы я посоветовал moment.js, если придется много с датой/временем работать.
Главное - не забывать о практике, прочитанное/просмотренное без нее быстро улетучится из головы. А вообще, в видеокурсах много воды, лучше читать. Но не все подряд, от корки до корки.
У вас прекрасный уровень английского (если это реально подтвержденный результат, не обычный тестик из интернета), так что не ленитесь искать задачи на английском.
А вообще, не пора ли пет проектом заняться? В процессе гугления, как решить возникшие проблемы, сами почувствуете, как скилл будет расти.
Я для себя понял, что организовывать время, типа с такого-то до такого-то часа обучаюсь, а потом с такого-то до такого-то часа отдыхаю - бесполезно. Просто садишься и начинаешь что-то делать, если затянет - значит тебе реально это интересно, и тогда будет уже все равно, что ты там себе напланировал.
Пожалуйста, убери public и protected-поля. Все поля должны быть private. У их сеттеров и геттеров делай области видимости, какие нужно. А в остальном тебе уже ответили.
Ну смотри, здесь надо знать, какой версии опенгл вас там учат. Если старее третьей, то смотри по первой своей ссылке. Если же новее - то по второй. Просто в ранних версиях все было завязано на принципах конечного автомата, тогда как в новых - на шейдерах. Поэтому эти два руководства так сильно различаются.