«Винаходити велосипед» — це спроба відтворити (найімовірніше, з гіршим результатом) метод, який уже був створений або вдосконалений кимось іншим. Оскільки велосипед вже винайдений й не має суттєвих недоліків, спроба винайти його заново не принесе жодної користі й стане марною тратою часу, відволікаючи ресурси дослідника від, можливо, більш вартісних цілей.
Використання Цей вислів іноді вживають без іронії, коли чиїсь дії можуть здатися простим «винаходом велосипеда», хоча насправді вони мають додаткову цінність. Наприклад, «винахід велосипеда» є важливим інструментом у викладанні складних концепцій. Замість того щоб просто надавати студентам перелік відомих фактів і методів і очікувати, що вони бездоганно й швидко їх засвоять, викладач будує матеріал заново, дозволяючи студентам самостійно пройти ті ключові етапи, що відображають логіку міркувань, притаманну цій галузі.
Хоча вислів «винаходити велосипед» (буквально — «винаходити колесо») може здаватися іронічним кліше, насправді достеменно невідомо, коли саме винайшли саме колесо. Сучасний «винахід» колеса цілком може виявитися «повторним винаходом» давньої технології. До того ж, постійно розробляються та виводяться на ринок численні вдосконалені варіанти коліс (наприклад, різноманітні типи шин). Ця метафора наголошує на важливості розуміння вже наявних рішень, але не закликає обов’язково обмежуватися ними.
Фразеологізм «винаходити велосипед» означає марну трату часу та зусиль на розробку чи пошук рішень, які вже давно створені й успішно використовуються іншими людми, наприклад: «Хочеш заново винайти велосипед? Це все кустарщина і самодіяльність!». Походження цього виразу пов'язане з історією самого транспорту, перші прототипи якого з'явилися ще у 1817–1818 роках завдяки Карлу фон Дрезу, а згодом доповнилися педалями та металевою рамою. Оскільки базовий вигляд і механізм велосипеда вже є досконалими та загальновідомими, спроби створити його з нуля стали у багатьох мовах світу символом зайвого ускладнення та некорисного повторення пройденого шляху. Дослівний переклад з англійської "винайти колесо" (Англ. reinvent the wheel).
У розробці програмного забезпечення У розробці програмного забезпечення «винаходження велосипеда» часто стає необхідним, щоб обійти проблеми несумісності ліцензій або технічні й політичні обмеження, властиві компонентам чи модулям від сторонніх розробників. Прикладом може слугувати реалізація алгоритму швидкого сортування (quicksort) для скрипта на JavaScript, призначеного для вбудовування у вебсторінку. Хоча цей алгоритм добре відомий і легкодоступний у бібліотеках для розробників, які створюють універсальні програми на C++ чи Java, деякі середовища виконання JavaScript його не надають. Тому, якщо розробник хоче надійно використовувати швидке сортування на своїй вебсторінці, йому доводиться «винаходити велосипед», тобто реалізовувати алгоритм власноруч. Звісно, можна було б скопіювати його з іншої вебсторінки, але це загрожує проблемами з авторським правом і ліцензуванням програмного забезпечення. У цьому випадку «винаходження велосипеда» забезпечує потрібну функціональність і водночас дозволяє уникнути юридичних проблем, пов’язаних із авторським правом.
Крім того, ті, хто лише починає вивчати мову (а особливо — новичків у програмуванні), часто намагаються власноруч написати чимало функцій, для яких у стандартній чи інших загальнодоступних бібліотеках уже існують надійніші й оптимізовані аналоги. Хоча це може бути корисним навчальним вправою, виконання таких дій через необізнаність часто призводить до появи програмного забезпечення, яке є менш читабельним, надійним та оптимізованим, а також гірше протестованим; до того ж, його розробка, тестування, супровід і налагодження потребують більше часу.
Програмні проекти, що є перевинайденими велосипедами
FreeDOS, репліка MS-DOS FreeWin95, репліка Windows 95 ReactOS, репліка Windows NT Apache Harmony, репліка Java SE 5 та Java SE 6 рюш, репліка Flash Player LAME, назва якого є скороченням від « LAME — це не MP3-кодер », незважаючи на те, що він ним є.
Пов'язані фрази «Винайдення квадратного колеса» — це практика створення (шляхом інженерної розробки) таких рішень, які дублюють функціональність уже наявних стандартних аналогів, але при цьому виявляються гіршими за них (звідси й метафора «квадратного колеса»). Цей антипатерн виникає, коли інженер не знає про стандартне рішення або зневажає його, чи ж недостатньо розуміє саму проблему або суть стандарту, щоб уникнути тих труднощів, які стандарт успішно вирішує. Найчастіше ця проблема притаманна недосвідченим інженерам або пов’язана з так званим «ефектом другої системи».
Багато технічних завдань містять нюанси, вирішені ще на ранніх етапах розвитку відповідної галузі (наприклад, важливість гладкої поверхні обода колеса). Той, хто починає роботу «з нуля», ігноруючи вже наявні напрацювання, неминуче стикається з цими проблемами знову й змушений витрачати час на пошук рішень (найімовірніше, тих самих, що вже давно відомі). Однак, коли «винайдення велосипеда» стає лише частиною масштабнішого інженерного проєкту, а не самостійною спробою створити досконаліший виріб, інженер часто не передбачає значних витрат часу на це завдання. У результаті використовується недосконала версія велосипеда з низькими експлуатаційними характеристиками, тоді як застосування стандартного велосипеда було б швидшим, простішим і забезпечило б кращий результат.
Термін «попередній винахід велосипеда» (preinventing the wheel) означає відкладання виконання завдання, якщо очікується, що за нього візьмуться пізніше. Прикладом може слугувати фраза «Ми не хочемо винаходити велосипед заздалегідь», яку вживають під час обговорення вирішення проблеми, коли відомо, що це рішення вже розробляється в іншому місці. Це поняття не обов’язково має негативне забарвлення.
«Винаходження колеса наново» — це практика вигадування нових і часто хитромудрих способів опису речей тоді, коли наявний спосіб був цілком прийнятним.
Див. також
Анти-шаблон Найкраща практика Дизайн навколо : альтернативний винахід, створений для того, щоб уникнути порушення патентних прав Не вигадано тут Стоячи на плечах велетнів, вираз, що стосується повторного використання існуючих ідей Трагедія антикоммонії
Посилання