Поскольку люди обычно очень быстро указывают на это, одним из преимуществ программного обеспечения является то, что его легко и относительно дешево менять по сравнению с аппаратным обеспечением. Это особенно важно, когда вы поздно понимаете, что у вас что-то в корне неправильно. Сделайте то же самое с аппаратным обеспечением, и вы потеряете миллион долларов, так что, как вы сказали, вы используете свои симуляторы и т. Д., И вы тестируете базинг из этого. Я думаю, что именно здесь парадигма терпит неудачу, когда вы переходите на программное обеспечение.
Получить в голову среднего разработчика программного обеспечения, и что у вас есть очень занятой человек с невероятно сжатым сроком. Его менеджер говорит, что можно оставить несколько ошибок, потому что вы всегда можете исправить это позже. Тесты часто являются запоздалой мыслью, но даже в сценарии, основанном на тестах, тесты сохраняются минимальными, а код записывается в минимум тестов, и часто используются короткие пути, так что многие из граничных случаев могут быть пропущены. Система может быть тщательно протестирована на единицу, но редко подвергается тщательному испытанию в целом и столь же редко подвергается стресс-тестированию в любой степени. Добавьте к этому то, что вы пишете программное обеспечение с нуля, и у вас мало возможностей для симуляции программного обеспечения, прежде чем приступить к его написанию, в первую очередь потому, что мы редко пишем программное обеспечение из того же рода детализированных строительных блоков, которые вы найдете в аппаратном обеспечении.
Вернуться к вопросу ОП. Не могли бы вы определить систему строительных блоков, из которых можно извлечь все ваше программное обеспечение? Возможно. Будет ли это очень экономически эффективным? Вероятно, нет, потому что к тому времени, когда вы приступите к разработке достаточно надежной системы компонентов, тестов и других принадлежностей, чтобы поддержать этот идеалСистема программирования, вы обнаружите, что ваши конкуренты уже опередили бы вас на рынке, и, что еще хуже, с точки зрения среднего программиста, вы, вероятно, нашли бы, что стиль программирования в стиле "резака печенья" очень ограничивающий и, скорее всего, очень скучно. Я лично работаю над API, где основная часть кода модуля была настолько доработана и стандартизирована, что все, что я сейчас делаю, - это генерирую шаблон кода и заполняю пробелы. Большую часть моего времени я могу потратить на написание простого кода соединителя и максимально быстрое извлечение модулей. Это серьезно ошеломляет. Существует очень мало возможностей делать больше, чем просто кодировать одни и те же вещи снова и снова, поэтому, когда появляется другая возможность проекта, я не упускаю шанс сделать НИЧЕГО еще.
Так как же получить качественное и хорошо продуманное программное обеспечение, и в то же время получать удовольствие от этого? Я считаю, что это зависит от вашего выбора инструментов и методологии. Для меня ответом было использование хорошего BDD API, потому что он позволил мне создать очень легкий для чтения, но очень детализированный код. Я могу построить набор тестов из минимального количества повторно используемых методов и описать свои тесты на языке спецификаций. Таким образом, я приближаюсь к более компонентному подходу к разработке, за исключением того факта, что я отвечаю за проектирование и проверку строительных блоков. Кроме того, выходные данные теста точно определяют ту часть теста, где происходит сбой, так что мне не нужно гадать, есть ли сбой в настройке или утверждении.
Настройка вашей методологии также помогает. Я большой сторонник применения принципов бережливого развития и объединения их со многими другими приемами и принципами, которыми на протяжении многих лет боролось движение Agile. Устранение большинства расточительных методов, которые я использовал, чтобы найти такие разочарования, очень помогло сделать разработку более приятным занятием. Я все еще остаюсь с проблемой, что иногда - но, надеюсь, не слишком часто - ошибки будут появляться в моем коде, однако теперь у меня больше времени и стимулов тратить больше времени на написание более надежных тестов и стремление к 100 % теста покрытия. Более того, очень приятно видеть, что все эти зеленые огни появляются в конце моего дня,