В вопросе наглядный пример моего утверждения, что "учить" - это плохое слово. В нашем мозгу оно ассоциируется с зазубриванием чего-либо. Вот только зазубривая что-либо освоить это не получится. Но тем не менее слово "учить" встречается крайне часто: люди пытаются учить программирование, учить языки (неважно C# или английский), а учить таблицу умножения нас подсаживают еще с младших классов. Не надо учить. Это бесполезно. Стихи еще можно учить, понимание мыслей автора это не даст, но память натренирует. А вот программирование, языки и таблицу умножения учить не нужно, нужно понять. Правда вот учителя начальных классов многие сами таблицу умножения не понимают, а тупо заучили наизусть, и так и продолжают передавать ученикам, с XIX века ничего не поменялось.
Вы можете выучить синтаксис языка, но это лишь шелуха, абстракция, набор правил как преобразовывать этот язык в другой. Без понимания знание абсолютно бесполезное. Ну знаете Вы, что существуют в некотором условном языке if, for, while. Но сможете ли Вы из этого составить некоторую программу без понимания что это и зачем. А заучивание Вам этого понимания не даст.
Вы можете выучить функции стандартной библиотеки, но это опять шелуха. Эти функции кто-то написал, часто на том же самом языке, на котором Вы их используете. Но без понимания, что они делают Вы и с ними программы не составите.
А как Вы собираетесь учить составление алгоритмов? Да у многих сейчас есть мнение, что этот навык не нужен, что все алгоритмы уже составлены, но это иллюзия.
А навык решения проблем, как заучить его?
Ну и все же отвечу на вопрос, что же по моему мнению умение программировать.
Во-первых, это умение решать проблемы людей или организаций посредством вычислительной техники (компьютеров, смартфонов, микроконтроллеров и т.д.), автоматизируя некоторую деятельность.
Во-вторых, это умение составить алгоритм приводящий к решению некоторой проблемы, то есть к автоматизации некоторой деятельности.
И только в третьих - записать этот алгоритм с помощью различных инструментариев, вроде языков программирования, библиотек, фреймворков и т.д.
То есть все, что Вы собрались учить - это лишь инструменты. Скажите, сделает ли Вас плотником, то что Вы зазубрили как выглядит молоток, а как рубанок? Зато плотник может не знать, как работать с каким-то конкретным станком, но достаточно быстро начнет с ним работать, если дать ему документацию к этому станку. С программистами все так же.