Есть базовые принципы программирования, следование которым поможет сделать ваш код более качественным и читаемым. К этим простейшим принципам можно отнести следующие:
Суть принципа: Реализуйте только поставленные задачи! Не делайте то, что не нужно.
Избегайте сложных шаблонов, пакетов, фреймворков, которые не будут использоваться или не имеют отношения к работе.
Допустим вам поступила задача на разработку функционала загрузки структурированных данных по сотрудникам из какого-либо источника. Данные формализованы и описаны.
После реализации основной задачи вы решили добавить к функциям загрузчикам модель машинного обучения, которая позволит заполнять пропущенные значения данных, если таковые имеются, предиктивными. Эта задача не предполагалась в начальной постановке от заказчика и вы фактически придумали себе ее сами, что привело к увеличению длительности и затрат на выполнение задачи в целом, увеличило нагрузку на тестировщиков и увеличило риски наличия багов. В действиях явно видно нарушения принципа YAGNI. Делайте то, что нужно!
Суть принципа: Люди (включая пользователей продуктов и услуг), как правило, хотят простых вещей, то есть простых в освоении и использовании. Избегайте чрезмерного проектирования и усложнения!
Можно рассмотреть в качестве примера следующий кейс: заказчик обратился к вам с просьбой сделать функционал регистрации пользователей на своем сайте, которая дает доступ к новому дополнительному разделу. Подтверждение регистрации должно осуществляться через email.
Вы решили помимо стандартной реализации системы авторизации, подключить всевозможные регистрации от facebook, vk, google, telegram, instgram, и помимо всего этого добавить шаг по заполнению значительного количества полей с анкетными данными пользователя (пол, дата рождения, адрес, город, интересы и т.п.), чтобы отобразить их на его личной странице.
Вы явно усложняете! Может быть просто стоит сделать обычную регистрацию с указанием email и пароля? Это и будет применение принципа KISS.
Суть принципа: нужно избегать повторений одного и того же кода. Лучше использовать универсальные свойства и функции.
Например, каждую неделю руководство попросило вас создавать отчёт о показателях KPI отдела. Вы, как junior-разработчик, ни о какой автоматизации процесса даже и не думаете.
Сколько вы будете тратить времени, если каждый раз будете заново писать одну и ту же форму отчёта, и добавляя данные в него?
В какой-то момент вам это надоест и захочется автоматизировать эту работу. И тут вы разработаете один шаблон, в котором нужно заменить всего лишь пару значений и подгрузить необходимые данные из различных источников. Работа, которая могла занимать час, теперь требует 10 минут.
Вы применили DRY и больше не будете повторять одно и то же каждый раз!