Повторное использование кода как проблема
Я думал об этом вопросе о поставке программного обеспечения, и я продолжал возвращаться к вопросу повторяемости и / или воспроизводимости . Они имеют значение, потому что, если вы не повторяете проект, то становится труднее улучшить процесс, который вы использовали для создания проекта. Инжиниринг включает в себя постоянное совершенствование процессов, связанных с проектированием и строительством, для создания проектов более высокого качества.
Программное обеспечение может в значительной степени полагаться на повторное использование из-за своей цифровой формы. Вместо того, чтобы переписывать модуль, мы просто вызываем его снова или копируем в другую систему. Некоторые примеры - аутентификация / вход в систему или, возможно, функция регистрации. Есть много хорошо известных примеров для этих категорий, и общепринятым является повторное использование того, что существует, вместо того, чтобы бросать свои собственные.
Некоторые сравнения с другими дисциплинами
строительство
Напротив, строительство физических систем (зданий, мостов) далеко не так многоразово. Это правда, что проект дома может многократно использоваться для создания одной и той же копии дома, но строительство должно выполняться каждый раз. Cut & paste не работает так в аналоговом мире. Чертежи мостов менее пригодны для повторного использования, чем дома, потому что условия на месте будут отличаться.
Мастера-строители - это эксперты, признанные за то, что спроектировали и / или построили десятки, сотни или тысячи вещей в своей области. Например, Фрэнк Ллойд Райт , всемирно известный архитектор и дизайнер designed more than 1,000 structures and completed 532 works
. Сравните это с Андерсом Хейлсбергом, который разработал «всего» пять языков (Turbo Pascal; Delphi; J ++; C #; Typescript). Во многих отношениях это несправедливое сравнение, потому что домены разные. Но на широком уровне измеряемая продукция двух очень умных людей сильно отличается.
Боевые искусства
Мастера боевых искусств скажут, что овладение ходом происходит только из тысяч повторений. После того, как значительная часть этих повторений была введена, многие мастера боевых искусств удивляются тому, как ранее воспринимаемое как сложное ката или форма стало простым. Преподаватели этих студентов также заметят, как движение становится более плавным и целенаправленным, а также экономия движения. Аналогичным образом, опытные мастера боевых искусств способны быстрее подбирать более сложные каты, чем менее опытные студенты. Опыт повторения дал им основу или процесс, который позволяет им учиться быстрее.
деревообрабатывающий
Работники по дереву испытывают аналогичные преобразования. Работники-любители всегда вспоминают свой первый проект, который потребовал много ящиков. Если они завершают проект, они получают новую оценку эффективности, которую производят сборочные линии. Есть и другие преимущества, такие как лучшее понимание того, как выложить части ящиков на листовой заготовке, чтобы максимально использовать древесину. По сравнению с любителями, профессиональные плотники могут быстрее проектировать, запускать и конструировать изделия, которые они делали много раз раньше. Они также получают способность видеть присущие им проблемы в дизайне других людей, допустив эту ошибку в своей работе.
Итак, мешает ли повторное использование программного обеспечения разработчикам программного обеспечения стать более опытными?
Во многих отношениях дизайн и конструкция программного обеспечения всегда новы. Мы не повторяем прошлые работы, потому что, если мы можем повторно использовать модуль, библиотеку или систему, мы делаем это. Мы преимущественно расширим существующую систему перед тем, как переписать все с нуля. Но повторение - это то, что позволяет нам находить эффективность в дизайне и строительстве. Любой, кто занимался спортом или физической активностью, скажет вам, что повторение - это ключ к тому, чтобы стать хорошим практикующим.
Мой вопрос: предотвращает ли возможность повторного использования программного обеспечения необходимое улучшение процесса и эффективность, возникающую при повторении проекта?