https://lawsofsoftwareengineering.com/ Устройство систем ✨ Закон Хайрама. Если продуктом пользуется много людей, кто-то обязательно начнет полагаться на любую его особенность, даже случайную. Например, на то, что отчет всегда приходит ровно в девять. Поэтому любое изменение у кого-то что-то ломает. Закон Галла. Работающая сложная система всегда вырастает из простой, которая уже работала. Сложная система, придуманная сразу целиком, не заработает, и заплатками ее не спасти. Закон дырявых абстракций. Любое упрощение, которое прячет сложность, иногда дает сбой, и тогда приходится разбираться в том, что под ним. Машина избавляет от знания устройства двигателя ровно до первой поломки. Закон Теслера. У любой задачи есть сложность, которую нельзя убрать, ее можно только переложить. Либо ее возьмут на себя создатели продукта, либо с ней будет мучиться пользователь. Теорема CAP. Когда части одной системы, стоящие в разных местах, теряют связь, приходится выбирать между точностью и доступностью. Два отделения банка без связи либо продолжают выдавать деньги, рискуя, что клиент уже снял их в другом отделении, либо прекращают выдачу. Эффект второй системы. После небольшого успешного продукта автор вкладывает во второй все идеи, которые раньше откладывал. Второй продукт выходит раздутым и неудачным. Заблуждения распределенных вычислений. Восемь ложных допущений тех, кто строит системы, работающие через сеть. Будто связь никогда не рвется, передает данные мгновенно и в любом объеме, защищена от взлома, не меняет своего устройства, управляется кем-то одним, ничего не стоит и везде одинакова. Закон непреднамеренных последствий. Вмешательство в сложную систему дает эффекты, которых никто не ждал, потому что представление о системе в голове проще ее самой. Классический пример — «эффект кобры»: награда за убитых кобр привела к тому, что кобр начали разводить. Закон Завински. «Каждая программа разрастается, пока не научится читать почту». Функции общения удерживают пользователей, поэтому продукты обрастают почтой и чатами. Те, кто этого не сделал, проигрывают тем, кто сделал. Дальше (много)