На протяжении нескольких лет регулярно сталкиваюсь в работе с задачами написания тех или иных программ/скриптов, пробыл даже 2 года джуниуром на фронтенде(и совсем не много бэкенд). Чаще всего использую либо python, либо js, иногда С, ну разметки - html, css/less.
Уже почти год, пытаюсь делать скрипты такими чтобы кроме меня ими кто-то еще мог пользоваться, а так же улучшать их(не делать одноразовыми т.к. все задачи - одно да потому, а тратить время на улучшение имеющихся). К сожалению качество моего кода оказывается отвратным, пробовал читать книги именно о организации кода - Лутца по программированию на питоне, что-то о орагнизации gui, итп, по js - уже не помню что. Но каждый раз писать хорошо не получалось. Поддерживать кем-то организованный код - могу, создать свое адекватное, не получается. Это вызывает проблемы в развитии того, что делаю.
Посоветуйте как дальше развиваться, может как то процесс организовать или/и что читать или что изучать?
(Сейчас в голове ходит мысль перейти на более строгие языки, вроде java или с++, чтобы уловить суть. Но не знаю насколько усилия будут оправданы, кажется что все так и останется на том же уровне.)
Антон Ф.: Я бы не фуллтайм, конечно многое узнал и многому научился, особенно по верстке, но по-моему год-два не много не тот диапазон времени для сеньора.
Антон Ф.: где-то так и было. 3-6 часов в день, в среднем. Вообще не суть, там была верстка в основном, не много js и django, это написано скорее для описания того кто задал вопрос и какого уровня ответы могут быть полезными.
Да, такие мнения я слышал, что надо в живом проекте обучаться, но мне не совсем понятно на кой черт кому то читать мой код(говорю про опенсорс), если человек и сам может все сделать быстро. Хотя конечно это моя особенность с джуниора еще - весь однотипный шлак на меня, а что-то более менее сложно быстро скидывали без объяснений, хотя такая работа самая продуктивная для команды.
В оперсорс хотя бы прочитают твой код что бы понять, ересь написана или нет. Если идея стоящая, то дадут рекомендации как улучшить код (хотя это зависит от проекта).
При работе в команде твой код будут читать в любом случае, если есть code-review. Хоть однотипный шлак, хоть супер сложную и интересную задачу. И будут давать обратную связь обязательно (а иначе нет на самом деле в команде ревью).
Читайте фундаментальные труды по разработке кода и архитектуре приложений... ООП, MVC, DRY и им подобные. Почитайте Марк Саммерфилд - "Python на практике". Многие вопросы отпадут сами...
В итоге совет >>Почитайте Марк Саммерфилд - "Python на практике".
оказался самым правильным. Однако я им не воспользовался, но пришел к Саммерфилду итерациями. Многие вопросы отпали и качество заметно растет со временем прочтения книги.
"К сожалению качество моего кода оказывается отвратным"
Каким образом ты это определяешь?
Если ты смотришь свои старые скрипты, и видишь там говнокод, это означает что ты вырос как специалист, и видишь ошибки в своих старых работах. То есть все идет путем - продолжай в том же духе, расти дальше.
А вот если ты прямо сейчас пишешь скрипт и тут же видишь в нем говнокод, то это уже проблема...
"Нормальный" код я довольно много читал и более менее могу определить что написано ужасно. А вот как написать чтобы было хорошо - не знаю. Рост конечно есть, да вижу что качество выше и что ранее было совсем ужасно, но это очень медленно, жизни не хватит чтобы такими темпами начать писать что-то читаемое.
Александр: Почитайте статьи на том же хабре по красивому коду, соглашения имен и названия функций и стилистике. Учитывая что вы уже что-то читали, вы должны понимать зачем это нужно.
А чтобы быстрее писать что-то красивое, посмотрите готовые чужие работы в опенсорсе, например.
Собственно самое главное - это понимание что это и зачем, а опыт приходит со временем.
Нужны хорошие наставники, ну или хотя бы группа профессионалов-коллег, которые постоянно подсказывают и указывают на ошибки. Вместе работать над рядом проектов. Также для познания читать чужие коды с гитхаба и блогов различных программистов, читать форумы (хотя бы стековерфлоу и т.п., англоязычные лучше). Изучать стандарты программирования, стили программирования, стараться правильно писать комментарии, вести правильно ветку проекта.
Ну и много опыта и практики, плюс работа над ошибками - будет результат. Ведь можно сказать, что кто не совершает ошибок - тот либо суперкрут (это пока что не к вам), либо ничего не делает.
Так что учиться, стараться, ошибаться, понимать где ошибаешься, учиться еще раз, практиковаться и постоянно самосовершенствоваться. Очень плюсом будет участие в различных хакатонах, конференциях, дискуссиях, мероприятиях кодо-хаккеров и людей из ит-индустрии
Если вы хотите добиться простоты повторного использования кода - нужно смотреть в сторону разбития задачи на части. Потом оформляйте части в процедуры, создавайте для них удобный для повторного использования интерфейс. Отдельное внимание уделите поиску общих мест в разных задачах, они - первые кандидаты на вынесение в функции.
Примерно о схожих советах я читал. Возникает множество вопросов сразу - насколько глубоко смотреть на повторное использование, как его реализовать. Первый пункт оказался самым сложным. Вот если делать по ООП то опять знаний не хватает, хотя вроде бы все описано на 7 рядов, но часто вижу ситуации которые не соотносятся с тем что я читал ранее. Если делать модульно, то получаю кошмарное спагетти.
Александр: ООП нужно там, где от него есть толк, да и можно обойтись без него в большинстве случаев. Сложно сказать как избавиться от спагетти в общем случае...
Организация кода в среднем не зависит от языка, это навык общего характера. Возможно, ваш мозг просто не привык к архитектурным задачам, это надо тренировать. Рекомендую опенсорс и читать исходники.
да, согласен что не зависит от языка, потому и указал что нужен совет как учиться этому и вопрос по поводу иных языков, может где-то это логичнее будет.
Присоединяюсь, если Вы недовольны качеством своего кода и думаете над тем, как его улучшать, то он будет улучшаться. Он уже улучшается.
Согласен и с тем, что на Вашем этапе, похоже, стоит много читать хороших исходных кодов и смотреть как у них сделано и для чего. Плюс набивать глаз на то, как должен в общем выглядеть хороший код на Вашем языке. Развивать эстетическое чувство.
Лично я предпочитаю практический подход к изучению языка программирования. Я Разработал собственную методику прокачивания навыков программирования, на языке C# Си Шарп. В ней мало теории, но зато очень очень много практики: консольных задач с автоматической проверкой и видео уроков по созданию законченных игровых программ. Для начинающих самое то, Хотя этот способ, конечно же, не исключает необходимость теоретического изучения материала. По моим наблюдениям изучения теории, при наличии некоторого практического опыта, происходит на порядок эффективнее. Кому интересно, адрес проекта VideoSharp.info