Мысли по главе
После методологии прямо чувствуется, что этот курс еще не переписан.
В целом в первой главе очень много повторений из предыдущих курсов. А именно:
- инженерия это про изменение мира “к лучшему”
- конечно лучшее это довольно субъективный момент
- поэтому этика очень важна, при внедрении систем влияние идет на весь стек и далеко за “очевидные” границы проекта
- системный подход безмасштабен и применяется на многих слоях и должен эту многослойность учитывать
- оптимизации так же многоуровневы т.к. из-за СММ-АК-2024. toward a theory of evolution as multilevel learning|неустроености/frustration возможность одноуровневых оптимизаций сомнительна и скорее всего малоэффективна
- непрерывность изменений. С началом эксплуатации ничего не заканчивается
- инженерия - часть умной эволюции и/или ее ускоритель, создает новые, направленные мутации
- правда при этом жертвуем разнообразием: Open-endedness: The last grand challenge you’ve never heard of – O’Reilly
- но поскольку еще не совсем понятно как этим разнообразием не жертвовать то приемлимо
Современные проекты слишком сложны для одного человека
Все больше и больше пропитываюсь важностью и первичностью коммуникаций в создании и развитии систем. Это так же подтверждается и практикой, когда ну не хватает у меня мозга все что нужно спроектировать, бесполезно пытаться это все сделать в одного: долго, ненадежно, узко. А при этом если я все же пытаюсь все важное сам сделать - это бьет по мотивации остальных людей и от этого еще хуже получается.
Про недостаток творчества в инженерном образовании: Инженеров учат анализировать и критиковать, но не создавать
По какой-то причине мое образование было очень теоретическим. Куча всяких теорий, которые были абстрактны и непонятно как применимы к реальной жизни. Из-за этого мне было их тяжело учить. Скорее не тяжело, а не было мотивации, выглядело как просто копошение в формулах ради копошения. Нужен хороший баланс между теорией и практикой. При чем ладно бы я был каким-нибудь химиком/строителем или еще что-то в этом роде, где практика дорогая - так нет же, в создании программных систем для получения практики не нужно очень много ресурсов затрачивать.
не пытайтесь сделать всю систему целиком одним куском, обеспечивайте в ней фичу за фичей постепенно, подстраиваясь под меняющееся окружение и используя всё новое и новое знание, появляющееся в ходе длинного проекта
для меня прям замечание. Меня все постоянно тянет все просчитать, все спроектировать. Analysis-paralysis, оттягиваю от непосредственного внедрения все дальше и дальше, я это связываю со страхом, что не получится провалится, а пока анализируешь - провалится не выйдет, ничего же не делаешь.
Общие инженерные тренды, которые нужно учитывать:
- малый инкремент
- ну тут понятно - меньше инкремент - быстрее сделал - быстрее получил данные - быстрее понял что так/не так - быстрее попробовал еще
- моделеориентированность против документоориентированности
- переход к структурированным и машинообрабатываемым данным
- численное моделирование
- сейчас численного моделирования очень много и везде, пророчат существенное улучшение жизни за счет ускорения/удешевления разработки продуктов
- цифровые двойники
- модель важна не только во время разработки но и во время эксплуатации
- но это разные модели!
- стандартизация интерфейсов и открытая архитектура
- в разработке софта применяется повсеместно
- велосипедостроение, конечно никто не отменял, но чем дальше тем меньше - уже есть огромное количество готовых компонент, которые(скорее всего) подойдут лучше/дешевле
- платформизация
- тоже много обсуждали в предыдущих курсах: частично это та же стандартизация
- универсальные компоненты/решения => удешевление конечного изделия
- платформы постоянно развиваются/эволюционируют. В них столько ресурсов вкладывается, что небольшим коллективом и уж тем более в одиночку просто невозможно что-то подобное и приемлимое по цене вытянуть
- готовые системы вместо сделанных на заказ
- коробочное решение/ lowcode/nocode
- платформы туда же
- вариабельность продуктов
- сочетание массового выпуска и платформизации но с возможностью кастомизации, которую не нужно слишком отдельно делать/заказывать
- система с открытыми исходниками
- конечно это в основном софт
- но есть куча инициатив и в других областях:
- порождающее проектирование
- в индустрии, наверное, применяется, но я пока такое массовое применение видел только в играх: генерация пространств/карт/сюжетов под конкретные условия
- видел робкие попытки дизайна всяких несущих изделий
- утверждается что прочностные характеристики аналогичны. Поверим. Но меня, конечно, смущает момент с производством(но тут ладно, 3D принтер напечатает) и обслуживанием(вот как эти все загогулины обрабатывать/красить, хотя, наверное, это не везде критично)
- в каком-то роде это не совсем проектирование, это направленная эволюция. Интересно, что детали созданные таким способом гораздо менее угловатые/прямые, в них гораздо больше видна “жизнь”