Хорошее не бывает дешёвым. Но может быть бесплатным.

Статья о том почему для того, чтобы научиться программированию, одних случайных ресурсов, найденных в интернете, недостаточно.

1. Нужно определиться что учить. Что сегодня важно и востребовано. И что будет важно и востребовано завтра. Где находится та ниша, в которой ты сможешь проявить свои способности.

2. Что и за чем учить. В каком порядке усваивать материал и насколько глубоко в него вникать. Что важное, что второстепенное. На чём сосредоточить внимание, а что достаточно просто просмотреть.

3. Учить современный материал, а не устаревший. С современным темпом развития технологий, когда устаревшими могут оказаться знания трёх-четырёхлетней давности, это не так просто. Статья 2009 года может оказаться актуальной, а написанная на несколько лет позже - безнадёжно устаревшей. Это если автор вообще как-нибудь обозначил дату написания статьи. Личность самого автора тоже важна: один отслеживает современные тенденции, другой живёт вчерашним днём. И да, это я ещё не говорю о неучах и невеждах, которые пытаются учить тому, чего толком не знают сами. Для чего им это? Кто знает. Но их много и встречаются они гораздо чаще, чем хотелось бы.

4. Учиться хорошим практикам и правильным подходам. Учиться сразу, потому что переучиваться будет намного дольше и сложнее. У кого учиться и как отличить хорошую практику от плохой вопрос открытый. Достаточно сказать о том, что в знаменитом курсе cs50 за 2014 год ещё писали косые слэши в конце одиночных тегов (по новой спецификации они не нужны) и использовали стилизацию по id (плохая практика).

5. Теория должна подкрепляться и закрепляться практикой. Практики должно быть не меньше, чем теории. В идеале - больше. Курс с идеальным сочетанием теории и практики, на мой взгляд, это HTML Академия. Но и у них есть недостаток - курсы получились достаточно поверхностные. Хоть, если сравнивать со знаменитой CodeAcademy, глубина изложения материала на порядок выше. У Javascript.ru, который прохожу сейчас, преобладает теория. Практические задания есть, но их меньше, чем хотелось бы, а сложность повышается очень быстро. Простых заданий, чтобы потренироваться, мало, если не сказать нет вообще.