Мой блог

Об архитектуре и балансе

Когда-то давно, когда я занимался преимущественно веб-интерфейсами, один из программистов задал мне вопрос:

- Если ты такой хороший разработчик, то почему занимаешься пользовательским интерфейсом?

Для меня вопрос звучал настолько абсурдно, что я не знал что на него ответить.
Это все равно, что спросить: "Какая конечность в твоем организме лишняя?"

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

Вообразите дорогое, роскошное, удобное авто. Оно собрано максимально качественно. Но у него стоит слабый двигатель, маломощный генератор и маленький бензобак.

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

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

В IT – проектах такие ситуации встречаются регулярно.

Мы разработали очень дорогую систему способную работать под большими нагрузками. Но у нас нет пользовательского интерфейса, поэтому мы пока не можем вам ее показать. Это всего лишь пользовательский интерфейс, там даже архитектуры нормальной не нужно.

Если вы когда-нибудь увидите такой программный продукт - вы, скорее всего, не сможете или не захотите его использовать.

В нашем проекте все идеально. Отлично подобраны шрифты и вылизаны все отступы. Навигация продумана до мелочей. Вы сможете работать с сайтом с клавиатуры, с планшета, с пульта от телевизора, а на первой странице у нас видео с улыбающимися людьми. Как хранить и обрабатывать данные? Есть же уже куча готовых облачных сервисов. Тут не может быть ничего сложного.

Вы увидите очень красивый программный продукт. И вы ничего с ним толком не сможете сделать, кроме как полюбоваться его главной страницей.

Все дело в архитектуре и балансе. Все компоненты разрабатываемой системы должны быть обозначены, продуманы и быть сопоставимыми по уровню.

У любого разрабатываемого продукта есть свой архитектор. Даже если в вашем штатном расписании нет архитектора, руководство считает, что архитектор не нужен, кто-то в вашей компании делает эту работу. Кто он? Разработчик? Менеджер по продажам? Приходящий администратор? А хороший ли он архитектор? А как это сочетается с его функциональными обязанностями? А есть ли у него хоть малейший шанс или желание сделать архитектуру продукта такой, какой она должна быть, чтобы продукт выстрелил?

Иногда везет, но в большинстве случаев - нет.

14 авг.2018