Не решайте воображаемые проблемы

Igor Kamyshev
Breadhead Stories
Published in
2 min readNov 7, 2018

Перевод заметки Don’t Solve Imaginary Problems

Одна из наиболее распространенных причин раздувания продукта — воображаемые проблемы. Они начинаются с фразы «что, если кто-то захочет …» и, как правило, заставляют творческий мозг программистов планировать все варианты. Однако это плохой путь.

Воображаемые проблемы не решаемы, потому что вы не сможете удостовериться, что они решены. Устранить возможно только ту проблему, с которой встречаются люди. Если никто не сталкивался с проблемой, но она уже решена, то кажется, что решение «достаточно хорошее», хоть в нем и не было необходимости. В такой ситуации раздувание продукта не принесет никакой отдачи, потраченное время и деньги не принесут пользы.

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

Программное обеспечение всегда строится на будущее, почему бы нам не попытаться представить, как оно будет использоваться?

Да, мы должны думать о будущем. В этом и заключается архитектура.

Правильная программная архитектура дает пространство для маневра. В идеале вы пишете небольшие кусочки приложения, которые решают очень специфические проблемы. Затем эти фрагменты вставляются в архитектуру вместе с другими мелкими элементами и формируют приложение.

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

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

--

--

Igor Kamyshev
Breadhead Stories

Software Engineer. Disciplined thinker with battle-tested focus.