Я сторонник непрерывного обучения. Поэтому, если это возможно, я хожу на встречи, конференции, семинары и встречи в открытом пространстве, чтобы слушать и узнавать мнение коллег в цифровом пространстве. Итак, я отправился вечером в сентябре 2019 года на разговор о принципах SOLID-программирования. С хорошо организованного этим вечером митапа компанией Рабочий дух я уехал с трудными вопросами и наблюдениями.

Несколько наблюдений, которые меня поразили:

  • Многие программисты до сих пор борются со значением принципов программирования. Да, разговор был уравновешенным, что принципам не следует следовать вслепую, а контекст всегда имеет значение. Но борьба заполнила комнату.
  • До сих пор существует (по крайней мере, в Нидерландах) большое количество программистов на Java, C# или .NET, которые создают много кода, написанного вручную. Таким образом, несмотря на рост (а иногда и падение) 4GL и современных генераторов «низкого кода», в программировании все еще наблюдается искусство создания большого количества строк кода вручную.
  • Принципы программирования SOLID до сих пор преподаются в школах, и на собеседованиях новых сотрудников просят рассказать о своих знаниях этих принципов.
  • Инновации и действительно новые парадигмы в отношении создания программных решений в мире программирования на Java все еще трудно найти. Hybernate для ORM и программ, полностью зависящих от фреймворка Spring, по-прежнему широко распространена.
  • Некоторые программисты на самом деле считают свою профессию черной магией, требующей многолетней практики и опыта, прежде чем вы сможете достичь какого-то высшего уровня. К любому, кто не писал код вручную в течение многих лет ежедневно, не следует относиться слишком серьезно.

Таким образом, эти наблюдения были использованы для ответа на следующие важные вопросы, касающиеся принципов SOLID в 2019 году:

  • В настоящее время предприятиям требуются более требовательные программные продукты. Использование старых принципов программирования и фреймворков построения не упростит доступ к более быстрым, дешевым и инновационным современным решениям. Как возможно, что многие программисты продолжают придерживаться старых парадигм программного обеспечения, когда дело доходит до создания программных продуктов?
  • Принципы SOLID были созданы более 20 лет назад. В те дни объектно-ориентированное программирование все еще считалось доминирующим способом решения проблем программного обеспечения в целом. Однако в настоящее время мы знаем, что ООП лучше подходит для одних проблемных областей, чем для других. Объяснение SOLID без объяснения некоторых противоречий вокруг использования ООП — большое упущение. Но как возможно, что многие программисты в мире Java до сих пор не имеют сбалансированного взгляда на использование ООП на практике?
  • Использование принципов SOLID может сделать программное обеспечение медленным, процесс создания программного обеспечения медленнее, и это порождает серьезные вопросы по ремонтопригодности. Так почему же к принципам SOLID до сих пор относятся так серьезно?
  • Мир ИТ-архитектуры и архитектуры программного обеспечения слишком полон принципов. Боль в том, что в плохих принципах всегда есть что-то хорошее. Однако хорошие принципы, используемые для создания программного обеспечения, должны быть сформулированы как ДОЛЖНЫ, а не как СЛЕДУЕТ. Почему хорошие принципы проектирования программного обеспечения до сих пор не сформулированы с использованием RFC 2119, чтобы более четко указать, как использовать принципы.

Принципы SOLID — это хорошо. 20 лет назад. Или когда вы все еще ежедневно создаете ООП-код в Java EE. Однако гораздо важнее выбрать правильную архитектуру для решения бизнес-задач, выбрать правильные технологии и зависимости. Сколько программного обеспечения необходимо для решения бизнес-задач? Какие приличия вы будете использовать? Выбираете ли вы зависимость от дойной коровы, чтобы вас и вашу компанию-разработчика программного обеспечения просили вернуть каждую новую функцию, которая нужна бизнесу? Или вы создаете открытую архитектуру с открытыми информационными потоками, где каждый может легко дополнить новую функциональность?

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