Не изобретайте велосипед: значение идиомы, примеры использования. Бесполезная трата времени на повторное создание уже существующего решения. Эффективность и инновации.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Идиоматическое выражение, означающее напрасно тратить усилия на то, что уже достигнуто.
Idiomatic expression, meaning to waste effort on something that has already been achieved
"Переизобретать колесо" – это попытка воссоздать – скорее всего, с худшим результатом – базовый метод, который уже был создан или оптимизирован другими. Вдохновение для этой идиоматической метафоры заключается в том, что колесо является древнейшим архетипом человеческой изобретательности (настолько фундаментальным, что оно продолжает лежать в основе многих современных технологий). Поскольку оно уже изобретено и не имеет существенных недостатков, попытка его переизобрести не принесет никакой пользы и будет пустой тратой времени, отвлекая ресурсы от, возможно, более значимых задач.
To reinvent the wheel is to attempt to duplicate—most likely with inferior results—a basic method that has already previously been created or optimized by others. The inspiration for this idiomatic metaphor is that the wheel is an ancient archetype of human ingenuity (one so profound that it continues to underlie much of modern technology). As it has already been invented and is not considered to have any inherent flaws, an attempt to reinvent it would add no value to it and be a waste of time, diverting the investigator's resources from possibly more worthy goals.
Использование
Фраза иногда используется без иронии, когда чья-то деятельность может показаться просто повторным изобретением колеса, хотя на самом деле она имеет дополнительную ценность. Например, "изобретение колеса заново" – полезный инструмент при обучении сложным концепциям. Вместо того чтобы просто предоставлять студентам список известных фактов и техник и ожидать, что они мгновенно и безупречно их усвоят, преподаватель выстраивает материал с нуля, позволяя студентам самостоятельно прийти к ключевым этапам, отражающим логику, свойственную данной области знаний. "Изобретение колеса заново" может быть ироничным клише – неясно, когда колесо было изобретено впервые. Современное "изобретение" колеса вполне может оказаться "переизобретением" очень древнего изобретения. Более того, постоянно разрабатываются и выводятся на рынок различные модификации колеса, улучшающие существующие конструкции (например, множество типов шин). Эта метафора подчеркивает важность понимания существующих решений, но не обязательно соглашаться с ними или останавливаться на них.
The phrase is sometimes used without derision when a person's activities might be perceived as merely reinventing the wheel when they actually possess additional value. For example, "reinventing the wheel" is an important tool in the instruction of complex ideas. Rather than providing students simply with a list of known facts and techniques and expecting them to incorporate these ideas perfectly and rapidly, the instructor instead will build up the material anew, leaving the student to work out those key steps which embody the reasoning characteristic of the field. "Reinventing the wheel" may be an ironic cliche – it is not clear when the wheel itself was actually invented. The modern "invention" of the wheel might actually be a "re invention" of an age old invention. Additionally, many different wheels featuring enhancements on existing wheels (such as the many types of available tires) are regularly developed and marketed. The metaphor emphasizes understanding existing solutions, but not necessarily settling for them.
В разработке программного обеспечения
В разработке программного обеспечения часто бывает необходимо изобретать велосипед, чтобы обойти несовместимость лицензий или технические и политические ограничения, присутствующие в компонентах или модулях, предоставляемых сторонними разработчиками. Например, может потребоваться реализовать быструю сортировку для скрипта на JavaScript, предназначенного для встраивания в веб-страницу. Алгоритм быстрой сортировки хорошо известен и легко доступен в библиотеках для разработчиков, пишущих приложения общего назначения на C++ или Java, но некоторые реализации JavaScript не содержат этого конкретного алгоритма. Следовательно, если разработчик хочет надежно использовать быструю сортировку на своей веб-странице, ему придется "изобрести велосипед", повторно реализовав алгоритм. Он мог бы скопировать его с другой веб-страницы, но тогда может столкнуться с проблемами авторского права и лицензирования. В этом случае изобретение велосипеда обеспечивает необходимую функциональность и позволяет избежать проблем с авторскими правами. Кроме того, новички в языке программирования (и особенно в программировании вообще) часто пытаются самостоятельно написать множество функций, для которых уже существуют более надежные и оптимизированные аналоги в стандартной библиотеке или других легкодоступных библиотеках. Хотя это может быть полезно в качестве учебного упражнения, если это делается неосознанно, результат часто представляет собой менее читаемый, менее надежный, менее протестированный и менее оптимизированный код, на написание, тестирование, поддержку и отладку которого требуется больше времени.
In software development, reinventing the wheel is often necessary in order to work around software licensing incompatibilities or around technical and policy limitations present in parts or modules provided by third parties. An example would be to implement a quicksort for a script written in JavaScript and destined to be embedded in a web page. The quicksort algorithm is well known and readily available from libraries for software developers writing general purpose applications in C++ or Java, but some JavaScript implementations do not provide this specific algorithm. Hence, if a developer wants to reliably use quicksort on their web page, they must "reinvent the wheel" by reimplementing the algorithm. They could conceivably copy it from another web page, but then they could run into copyright and software licensing issues. Reinventing the wheel in this case provides the missing functionality and also avoids copyright issues. Additionally, those new to a language (and especially those new to programming) will often attempt to manually write many functions for which a more robust and optimized equivalent already exists in the standard library or other easily available libraries. While this can be useful as a learning exercise, when done unknowingly the result is often less readable, less reliable, less tested and less optimized software which takes longer to write, test, maintain, and debug.
Связанные фразы
Переизобретение квадратного колеса — это практика ненужной разработки артефактов, которые предоставляют функциональность, уже обеспечиваемую существующими стандартными артефактами (переизобретение колеса), и в итоге приводят к худшему результату, чем стандартный (квадратное колесо). Это антипаттерн, возникающий, когда инженер не знаком или пренебрегает стандартным решением, либо недостаточно понимает проблему или стандартное решение, чтобы избежать проблем, которые уже были решены стандартом. Чаще всего это свойственно неопытным инженерам или является проявлением эффекта второй системы. Многие проблемы содержат нюансы, которые были разрешены давно в общепринятой инженерной практике (например, важность гладкости обода колеса). Любой, кто начинает с нуля, игнорируя существующие наработки, неизбежно столкнется с этими проблемами заново и для достижения удовлетворительного результата ему придется потратить время на разработку решений (вероятнее всего, тех же самых, которые уже хорошо известны). Однако, когда переизобретение колеса предпринимается как подзадача более крупного инженерного проекта, а не как самостоятельный проект с целью создания лучшего колеса, инженер часто не предполагает, что это потребует значительных затрат времени. В результате используется недоработанная, плохо функционирующая версия, в то время как использование стандартного колеса было бы быстрее, проще и дало бы лучшие результаты. Предупредительное изобретение колеса подразумевает отсрочку задачи, если ожидается, что она будет выполнена позже. Например, можно сказать: «Мы не хотим изобретать велосипед», обсуждая решение проблемы, когда известно, что решение разрабатывается в другом месте. Это не всегда имеет негативный оттенок. Переопределение колеса — это практика придумывания новых и часто запутанных способов описания вещей, когда существующий способ описания был вполне достаточным.
Reinventing the square wheel is the practice of unnecessarily engineering artifacts that provide functionality already provided by existing standard artifacts (reinventing the wheel) and ending up with a worse result than the standard (a square wheel). This is an anti pattern which occurs when the engineer is unaware or contemptuous of the standard solution or does not understand the problem or the standard solution sufficiently to avoid problems overcome by the standard. It is mostly an affliction of inexperienced engineers, or the second system effect. Many problems contain subtleties that were resolved long ago in mainstream engineering (such as the importance of a wheel's rim being smooth). Anyone starting from scratch, ignoring the prior art, will naturally face these problems afresh, and to produce a satisfactory result they will have to spend time developing solutions for them (most likely the same solutions that are already well known). However, when reinventing the wheel is undertaken as a subtask of a bigger engineering project, rather than as a project in its own right hoping to produce a better wheel, the engineer often does not anticipate spending much time on it. The result is that an underdeveloped, poorly performing version of the wheel is used, when using a standard wheel would have been quicker and easier, and would have given better results. Preinventing the wheel involves delaying a task if it is expected to be undertaken later. An example would be, "We don't want to preinvent the wheel" when discussing a solution to a problem when it is known that the solution is being developed elsewhere. It is not necessarily pejorative. Redefining the wheel is the practice of coming up with new and often abstruse ways of describing things when the existing way of describing them was perfectly adequate.