Слабкі складні системи

Давно вже відзначив раз за разом знаходжу підтвердження того, що складні системи нежиттєздатні.

Зробив складну програму? Будь готовий до того, що через деякий час ти її забросишь, бо ліниво буде розбиратися в своєму ж коді через деякий час.

Зробив складний процес? Перестанеш його виконувати через деякий час, знову ж тому, що буде ліниво.

Зробив складний бізнес? Ну, ви зрозуміли…

У мене якийсь прогрес з’явився тільки тоді, коли я став ділити програми, процеси і бізнес-дії на максимально прості незалежні одна від одної частини. Замість однієї громіздкою програми – набір інструментів, замість складного процесу – окремі незалежні один від одного дії.

Причому складність виникає саме на “зв’язках” різних сутностей. Якщо одна програма залежить від іншої – це вже ОДНА складна програма. Краще не робити загальні модулі і бібліотеки, а тупо копіювати в кожен проект саме те, що буде в ньому використовуватися. Бо як згодом лінь на підтримку всього цього “багатства” призводить до бардаку і смерті проекту в цілому. Перевірено не раз.

Те ж саме, до речі, стосується й структурі сайтів. Я давно вже не “ліплю” на одному домені все, що можна, а намагаюся розбивати окремі скрипти на різні домени. Партнерка, сайт, апі, адмінка та інше – на окремих піддоменів. Різні продукти, в ідеалі, теж повинні бути якщо не на окремих домени, то хоча б на окремих піддоменів. Дуже зручно: завжди знаєш, що ти не “зламаєш” що, якщо почнеш де-то що-то міняти. Дуже зручно також при бекапах, переїздах, глобальні зміни.

У цьому відношенні я реально полюбив Amazon. Вони не намагаються “завантажити” тебе складними сутностями. Хостинг файлів? Окремо. Бази? Окремо. І т.д. Легко розбиратися, легко налаштовувати, легко працювати.

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

Добавить комментарий

Ваш адрес email не будет опубликован.

* Copy This Password *

* Type Or Paste Password Here *