Как лучше построить изучение программирования?
================================================

 На протяжении нескольких лет регулярно сталкиваюсь в работе с задачами написания тех или иных программ/скриптов, пробыл даже 2 года джуниуром на фронтенде(и совсем не много бэкенд). Чаще всего использую либо python, либо js, иногда С, ну разметки - html, css/less.  
  

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

Посоветуйте как дальше развиваться, может как то процесс организовать или/и что читать или что изучать?  

 (Сейчас в голове ходит мысль перейти на более строгие языки, вроде java или с++, чтобы уловить суть. Но не знаю насколько усилия будут оправданы, кажется что все так и останется на том же уровне.)  
  

Спасибо. 

 Нужна обратная связь от опытных людей. Получить ее можно, как я вижу, двумя способами:  
1. Можно устроиться в команду с толковыми программистами и выстроенным процессом кодревью.
2. Подключиться к open source проекту. Брать несложные баги, править и отправлять патчи.

  

В обоих случаях очень быстро качество кода вырастет.  
  

Книги - это долгий процесс. И не факт, что получится вообще хоть как-то улучшить свой код. 

 Читайте фундаментальные труды по разработке кода и архитектуре приложений... ООП, MVC, DRY и им подобные. Почитайте Марк Саммерфилд - "Python на практике". Многие вопросы отпадут сами... 

 "К сожалению качество моего кода оказывается отвратным"  

Каким образом ты это определяешь?  

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

А вот если ты прямо сейчас пишешь скрипт и тут же видишь в нем говнокод, то это уже проблема... 

 поработайте в команде с конвеншенами по коду, один месяц не получите зп, втлрой , а там есть захотите и будете хорошо писать. 

 Нужны хорошие наставники, ну или хотя бы группа профессионалов-коллег, которые постоянно подсказывают и указывают на ошибки. Вместе работать над рядом проектов. Также для познания читать чужие коды с гитхаба и блогов различных программистов, читать форумы (хотя бы стековерфлоу и т.п., англоязычные лучше). Изучать стандарты программирования, стили программирования, стараться правильно писать комментарии, вести правильно ветку проекта.  

Ну и много опыта и практики, плюс работа над ошибками - будет результат. Ведь можно сказать, что кто не совершает ошибок - тот либо суперкрут (это пока что не к вам), либо ничего не делает.  

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

 Если вы хотите добиться простоты повторного использования кода - нужно смотреть в сторону разбития задачи на части. Потом оформляйте части в процедуры, создавайте для них удобный для повторного использования интерфейс. Отдельное внимание уделите поиску общих мест в разных задачах, они - первые кандидаты на вынесение в функции. 

 Организация кода в среднем не зависит от языка, это навык общего характера. Возможно, ваш мозг просто не привык к архитектурным задачам, это надо тренировать. Рекомендую опенсорс и читать исходники. 

 Присоединяюсь, если Вы недовольны качеством своего кода и думаете над тем, как его улучшать, то он будет улучшаться. Он уже улучшается.  
  

Согласен и с тем, что на Вашем этапе, похоже, стоит много читать хороших исходных кодов и смотреть как у них сделано и для чего. Плюс набивать глаз на то, как должен в общем выглядеть хороший код на Вашем языке. Развивать эстетическое чувство. 

 если ты с киева и хоч писаьт нормальный код, то иди в [devclub.com](http://devclub.com)  

там будет крутая основа на с и с++  

потом js будет не проблема 

 Лично я предпочитаю практический подход к изучению языка программирования. Я Разработал собственную методику прокачивания навыков программирования, на языке C# Си Шарп. В ней мало теории, но зато очень очень много практики: консольных задач с автоматической проверкой и видео уроков по созданию законченных игровых программ. Для начинающих самое то, Хотя этот способ, конечно же, не исключает необходимость теоретического изучения материала. По моим наблюдениям изучения теории, при наличии некоторого практического опыта, происходит на порядок эффективнее. Кому интересно, адрес проекта VideoSharp.info