Как достичь вершин программирования? Ответ прост - много практики. Сложный ответ - следовать нескольким советам в процессе изучения языка:
1. Прочитать книгу "для чайников" по языку программирования, который вы хотите изучить.
В мире блогов, больших онлайн документаций по языкам программирования и сайтов вроде CodeAcademy кто будет читать книгу? Любой, кто серьезно намерен изучить язык. Не все книги одинаковы, поэтому стоит предварительно выбрать хорошие книги по теме.
2. Вести заметки по всем концептам и особенностям языка.
Ведение записей - это отличный способ понять и запомнить вещи, которые вы только что прочли. Человек, написавший книгу, обладает другим мышлением (мышлением человека, кто уже хорош в программировании), поэтому переписывая содержимое в собственном стиле, вы учите самих себя вместо пассивного чтения текста. Этот подход называется активным чтением - вы становитесь активной частью знания, написанного в книге.
3.Попрактиковаться на "теоретических" задачах
Не просто читайте код из книги, перепишите его, даже если не понимаете. Выполните все задачи, указанные в конце главы. Процесс решения задач подтолкнет вас к небольшому онлайн-исследованию вопросов, которые вы не поняли. В интернете вы сможете узнать новые вещи, которых, возможно, нет в книге. Старайтесь не переходить к следующей главе, пока не выполните все задания предыдущей, пока вы не поймёте их.
4. Читайте чужой код
Успешные программисты тратят огромное количество времени, читая код на Github. Чтение кода, написанного другими, решающего даже относительно простые проблемы, может дать вам новый взгляд на подходы к программированию, это то - чего не даст вам книга.
5. Решайте соревновательные задачи или начните pet project
Не все хорошо относятся к соревновательному или олимпиадному программированию в процессе обучения. Я же считаю, что это отличный способ выйти из зоны комфорта, понять свои слабые места. Обычно этот вид задач требует сильного знания алгоритмов, не то, чтобы это было плохо, но большая часть реального программирования не настолько связана с алгоритмами. Решение таких задач требует от программиста особого набора навыков, который не всегда пригодится в индустрии. А теперь добавьте сюда платформы, где программисты соревнуются друг с другом за место в топе.