Ждём в гости космических дятлов
Что было бы, если бы программисты строили дома? Не буду говорить за всех, но расскажу, как их строила бы наша команда из двух фрилансеров, программиста, время от времени ковыряющегося с паяльником, и аппаратчика, который не прочь написать пару строчек кода, а потом ещё пару сотен.
Дом построен из самых обычных на вид железобетонных плит. Впрочем, при просветке интравизором становится ясно, что если материал и имел что-то общее с железобетоном и плитами, то разве что на стадии выбора материала.
Все отверстия и каналы строго типизированы и документированы, а их геометрия выдерживается с точностью не менее шести знаков после запятой. Для целых чисел.
В Доме всегда есть обширный запас резервных блоков, плит и универсальной субстанции, принимающей любую форму и содержание. Да, он самовосстанавливается, а что?
Дом связан с другими Домами и обновляет список разрешённых к созданию предметов интерьера динамически вместе с чёрными списками. Доступно также клонирование жильцов при несчастном случае внутри Дома.
Дом обменивается служебной информацией с другими Домами.
Аварийный переход к полной автономии — штатный режим функционирования Дома, как и защита от неблагоприятных внешних факторов, не говоря уже об индивидуальном климат-контроле с воспроизведением, например, грозы.
99,5% времени наши Дома не тратят впустую энергию, а просто спят.
Первый же залетевший дятел, говорите, уничтожит цивилизацию? Нашу — только если это будет космический дятел, желающий санировать «шарик» полностью. Если успеет. У наших Домов очень силён защитный инстинкт — на сбор «ядерного кулака» из ничего уйдёт минут пятнадцать.
А все почему? Сразу были выкинуты напрочь все «современные» среды и технологии. Нам не хайвмайнд собирать, а работать надо. Был выбран компилятор с неплохой библиотекой, отвечающей нашим целям, генерирующий стабильный логичный код — разумеется, Си с «плюсами» в следовых количествах. Мы никогда не писали тест-кейсов — это пустая трата времени, если код написан очевидно. Вы же не пишете тест-кейсы для while(1)? Никогда не менялись работой — каждый должен сделать то, что умеет лучше, и суметь объяснить, как этим пользоваться. У нас никогда не было менеджера: нет бригады дармоедов — нет и работы для дармоед-контролёра.
Самое главное: мы не просто знаем, что надо сделать, а ещё и динамически меняем это знание в соответствии с изменением условий. При этом ни разу за полтора года разработки и поддержки этого проекта не потребовалось менять архитектуру — это было бы наше время, а оно нам дорого.
Да, кстати, работает это добро (отказоустойчивая база данных, обмен данными между изолированными оконечными устройствами, восстановление после отказов любой степени критичности) на ATmega128 на 16 МГц. А прежние европейские цивилизованные разработчики, с менеджером, аджайлом и тест-кейсами, собирались переходить с PIC сразу на mini-ITX от VIA, не реализовав и четверти нашей функциональности.