Основа для любого хорошего программиста — знание типовых решений. Если вы новичок — не думайте. Вообще не думайте. У вас ещё не может быть своего мнения и своих мыслей. Просто разбейте задачу на мелкие подзадачи и решайте их типовыми методами, даже если это будет пресловутое «выливаем воду, выключаем газ, и задача сводится к предыдущей». Плевать. Пусть к предыдущей.
Пройдёт лет пять, и вы, обладая обширным арсеналом типовых решений, сможете выбирать из них лучшие. Отдайте предпочтение простейшему решению, если оно не слишком ресурсоёмко, и комментируйте, комментируйте, комментируйте!
У вас десять лет опыта. Вы с удивлением смотрите на студентов, рассуждающих о графах и математическом аппарате, и пытаетесь припомнить хоть раз, когда этот бред вам понадобился. Вы уже знаете как типовые решения для мелочей, так и типовые стратегии. Ваш стиль и код гибки, могут подстраиваться под конкретную задачу и конкретные требования. Вы научились работать в команде. Пора становиться ведущим специалистом.
Пройдёт ещё пять лет. Вы познаете бездну человеческой тупости, возненавидите как тех, кто пытается забивать гвозди микроскопом, так и тех, кто пытается построить паровой молот с наведением из космоса ради забивания одного-единственного гвоздя. Вы будете жестоко карать за отступление от корпоративного стиля оформления и пытаться вбить в головы недоумков под вашим началом, что неплохо бы читать документацию по проекту хотя бы для того, чтобы одна сущность не имела пять названий. Тренированный мозг позволит вам держать в голове сотни деталей проекта, помнить всё, знать обо всём.
И вот тогда вы осознаете, что вы есть, к чему пришли и чего стоите. А студенты и лица их интеллектуального уровня пусть и дальше ковыряются в своих песочницах.