Чем закрыть огромную дыру между теоретическими знаниями и их практическим применением в веб-программировании?
===============================================================================================================

 Давно хочется задать вопрос,но никак не могу его толком сформулировать.  

Мною прочитано определенное количество книг,касающихся веб-разработки,но все же,я вижу,что разница между моим кодом и кодом людей,так сказать,занимающихся этим профессионально колоссальна.Как можно придти к более-менее хорошо написанному коду,к написанию защищенного и хорошо работающего веб-приложения, если возможности работать джуниором и иметь наставника пока-что нет?Надеюсь,я понятно изложил суть проблемы. 

 Единственный способ прийти к написанию хорошего кода - писать код. При чем не абы как, а по одному из двух сценариев:  

1. Вы должны писать что-то достаточно большое, чем будете пользоваться непосредственно вы. Тогда вы поймете *Самую Главную Вещь* в работе программиста - **код нужно поддерживать**. И сразу станет ясно зачем нужны всякие паттерны, фреймворки, тесты и в чем смысл рефакторинга.  

2. Вы должны найти кого-то, у кото такой опыт уже есть и тянуть из него знания. 

 Вас спасет тестирование. Начните писать тесты для своего кода, и не успеете оглянуться, как ваш код станет на порядок более высокого качества. 

 Только опытом. 

 Учиться нужно не только осваивая теорию, но и применяя все это на практике. После изучения теории - много-примного практики. Притом стараться выбирать и делать разнопрофильные и разнонаправленные задачи, сложные, искать себе трудности. На ошибках учатся. Каждую проблему пытаться решить, запоминать способы решения. Общаться с компетентными специалистами по сложностям в своих задачах (соц.сети, форумы, сайты, жизнь). Не раз и не два постоянно открывать теорию и вспоминать что было когда-то изучено, повторять, повторять, и вновь применять на практике уже все знания с большим профессионализмом и классностью. Только со временем вы сможете прокачаться, с приобретением опыта, потратив много трудодней обретете высокопрофессионализм, который может быть оценен в дальнейшем солидно и справедливо. Это ваша цель! 

 правильно пишут, что практикой, вниманием к мелочам, опытом других людей. а бывает еще такое: у человека просто нет способностей писать такой код. вот просто нет - и все тут. а он мучается (басня про лягушку и вола что ли, как та лопнула, желая походить на вола). небольшая деталь к другим ответам. 

 Еще поможет копание в чужих исходниках. Только это копание всетаки должно иметь прикладную цель. Нужно писать приложения на фреймворках с глубоким изучением механики взаимодействия элементов приложения с функционалом фреймворка.