Jego powszechna wiedza w programowaniu, które wymyśla na nowo koło, jest złe lub złe .
Ale dlaczego tak jest?
Nie sugeruję, że to dobrze. Uważam, że to źle. Jednak kiedyś przeczytałem artykuł, w którym napisano, że jeśli ktoś robi coś złego (mądre programowanie), wyjaśnij mu, dlaczego to źle, jeśli nie możesz, to może powinieneś zadać sobie pytanie, czy to naprawdę źle.
To prowadzi mnie do pytania:
Jeśli widzę, że ktoś wyraźnie wymyśla koło, budując własną metodę czegoś, co jest już wbudowane w język / framework. Po pierwsze, dla samej argumentacji, załóżmy, że ich metoda jest tak samo wydajna jak metoda wbudowana. Również programista, świadomy wbudowanej metody, woli własną metodę.
Dlaczego miałby używać wbudowanego w swoim własnym?
reinventing-the-wheel
JD Isaacks
źródło
źródło
The good thing about reinventing the wheel is that you can get a round one.
Odpowiedzi:
Jak już pisałem na StackOverflow, odkrycie koła jest często bardzo dobrym wyborem , wbrew powszechnemu przekonaniu. Główną zaletą jest to, że masz pełną kontrolę nad oprogramowaniem, co często jest niezbędne. Aby uzyskać pełną dyskusję, zobacz mój oryginalny post .
źródło
Zależy..
Jak w przypadku wszystkiego, chodzi o kontekst:
Dobrze, gdy:
Jest źle, gdy:
źródło
Myślę, że przypadek dewelopera świadomie wymyślającego na nowo koło „ponieważ woli swoją własną metodę” jest dość rzadki. Przeważnie dzieje się tak z niewiedzy, a czasem z uporu.
Czy to wszystko takie złe? Tak. Dlaczego? Ponieważ istniejące koło zostało najprawdopodobniej wykonane z biegiem czasu i zostało już przetestowane w wielu okolicznościach i pod kątem wielu różnych rodzajów danych. Deweloperzy istniejącego koła napotkali już przypadki skrajne i trudności, których nowy wynalazca nawet sobie nie wyobraża.
źródło
Kwadratowe koła muszą zostać wynalezione na nowo. Wysiłki, które są do bani, muszą być powielone. Może brakuje dokumentacji dla tej metody, a drugi programista uważa, że łatwiej jest po prostu napisać własną, niż próbować ją rozgryźć. Być może sposób wywoływania metody jest niewygodny i nie pasuje do idiomu języka programowania.
Zapytaj go, co to za niedobór.
źródło
Ogólnie rzecz biorąc, unikam ponownego wynalezienia koła, jeśli pożądana funkcjonalność lub coś zbliżonego istnieje w standardowej bibliotece używanego przeze mnie języka.
Jeśli jednak muszę włączyć biblioteki stron trzecich, jest to wezwanie do oceny w zależności od tego, jak szeroko używana i ceniona jest biblioteka. Chodzi mi o to, czy mówimy o Boost czy Boba Kick-ass String-Parsing Tools 1.0?
Nawet jeśli biblioteka jest ogólnie znana i ceniona w branży, nadal jest zależna od strony trzeciej . Programiści zasadniczo kładą duży nacisk na zalety ponownego użycia kodu, często jednak rozmyślając nad niebezpieczeństwem zależności. Projekt ze zbyt wieloma zależnościami stron trzecich prawdopodobnie rozpadnie się na dłuższą metę, ponieważ powoli przekształca się w koszmar utrzymania.
Zatem wykorzystanie istniejącego kodu jest dobre - ale zależności są złe . Niestety, te dwa stwierdzenia są ze sobą sprzeczne, więc sztuczka polega na znalezieniu właściwej równowagi. Dlatego musisz zidentyfikować akceptowalne zależności. Jak powiedziałem, wszystko w Bibliotece standardowej języka jest najprawdopodobniej akceptowalną zależnością. Przechodząc stamtąd, biblioteki, które są wysoko cenione w całej branży są także ogólnie do zaakceptowania (jak Boost C ++ lub jQuery dla JavaScript) - ale nadal są mniej pożądane niż biblioteki standardowej, ponieważ nie wydają się być mniej stabilna niż standardowych bibliotek .
Jeśli chodzi o biblioteki, które są stosunkowo nieznane, (np. Najnowsze przesyłanie do SourceForge), są to bardzo ryzykowne zależności, i generalnie zalecałbym unikanie ich w kodzie produkcyjnym, chyba że znasz kod źródłowy, aby samemu je zachować.
Więc to naprawdę wszystko jest równoważeniem. Ale chodzi o to, że po prostu ślepo powiedzą: „Kod ponownie dobrze wykorzystuje! Nowe odkrycie koła źle!” to niebezpieczne podejście. Korzyści wynikające z wykorzystania kodu innej firmy należy porównać z wadami związanymi z wprowadzaniem zależności.
źródło
Gdyby ludzie nie wymyślili na nowo kół, świat byłby wypełniony tymi ...
Oto dialog z mojego miejsca pracy:
Istnieją dwie opcje: albo wymyśl na nowo koło LUB użyj Colorama. Oto, do czego doprowadziłaby każda opcja:
Korzystanie z Colorama
Nowe podejście do koła
Jak widać, wszystko zależy od kontekstu. Odkrywanie koła jest czymś, co robię bardzo często, ponieważ chcę być w stanie i myśleć samodzielnie, a nie polegać na innych, którzy myślą za mnie. Jeśli jednak biegniesz w terminie lub to, co próbujesz wdrożyć, jest ogromne i już istnieje, lepiej skorzystaj z tego, co tam jest.
źródło
Jednym z użytecznych powodów, aby wymyślić koło na nowo, jest nauka - ale polecam to zrobić w swoim własnym czasie. W miarę pojawiania się większej liczby gotowych rozwiązań i zapewniania większej liczby poziomów abstrakcji, stajemy się o wiele bardziej produktywni. Możemy skupić się na problemie biznesowym, a nie na ogólnych rzeczach, które były wielokrotnie ulepszane. ALE z tego powodu możesz wyostrzyć swoje umiejętności i wiele się nauczyć, próbując samodzielnie wdrożyć rozwiązanie. Po prostu niekoniecznie do użytku produkcyjnego.
Jeszcze jedno - jeśli problemem jest zależność od biblioteki strony trzeciej od firmy, która może zniknąć, upewnij się, że istnieje opcja uzyskania kodu źródłowego lub przynajmniej kilka innych opcji, na których można polegać.
Nawiasem mówiąc, jeśli zdecydujesz się na wdrożenie własnego, unikaj robienia tego w przypadku kryptografii lub innych funkcji związanych z bezpieczeństwem. Dostępne są do tego sprawdzone narzędzia (w pełni przetestowane), aw dzisiejszych czasach zbyt ryzykowne jest tworzenie własnych. To nigdy nie jest tego warte i przerażające jest to, że wciąż słyszę o zespołach, które to robią.
źródło
Istnieją dwa rodzaje wydajności - przetwarzanie / szybkość (czyli jak szybko się wykonuje), które mogą się zgadzać i szybkość programowania, której prawie na pewno nie będzie. To pierwszy powód - dla każdego problemu o rozsądnej złożoności, w którym dostępne są istniejące rozwiązania, prawie na pewno szybsze będzie zbadanie i wdrożenie istniejącej biblioteki niż kodowanie własnej .
Drugi powód jest taki, że istniejąca biblioteka (zakładając, że jest dojrzała) została przetestowana i udowodniono, że działa - prawdopodobnie w znacznie szerszym zakresie scenariuszy niż programista i zespół testowy będzie w stanie wprowadzić nowo napisaną procedurę i tak się dzieje zero wysiłku.
Po trzecie, jest o wiele łatwiejsze do obsługi. Nie tylko ktoś go obsługuje i ulepsza (ktokolwiek napisał bibliotekę / komponent), ale znacznie bardziej prawdopodobne jest, że inni programiści się z nim zapoznają i będą w stanie zrozumieć i utrzymać kod do przodu , co minimalizuje ciągłe zmiany koszty
A wszystko to zakłada funkcjonalną równoważność, co zwykle nie jest prawdą. Biblioteki często oferują funkcjonalność, która byłaby dla ciebie przydatna, ale nigdy nie uzasadniałaby wbudowania się w nią, z których wszystkie nagle stały się darmowe.
Istnieją powody, aby rzucić własne - głównie tam, gdzie chcesz zrobić coś, czego wbudowana funkcja nie może zrobić i gdzie można uzyskać prawdziwą przewagę, lub gdy łatwo dostępne opcje nie są dojrzałe - ale są są mniej popularne niż wielu deweloperów byś uwierzył.
Poza tym, dlaczego miałbyś chcieć spędzać czas na rozwiązywaniu problemów, które już zostały rozwiązane? Tak, to świetny sposób na naukę, ale nie powinieneś robić tego kosztem odpowiedniego rozwiązania dla kodu produkcyjnego, o którym, jak zakładam, mówimy.
źródło
Oczywiście wynalezienie koła na kaprys, z powodu ignorancji i arogancji może być złą rzeczą, ale IMHO wahadło za bardzo się skręciło. Koło, które robi dokładnie to , co chcesz i nic więcej , ma ogromną zaletę .
Często, gdy patrzę na istniejące koło, albo robi o wiele więcej, niż jest to potrzebne, cierpi na efekt wewnętrznej platformy, a zatem jest niepotrzebnie skomplikowany, lub brakuje mu jakiejś kluczowej cechy, której potrzebuję i którą trudno byłoby wdrożyć na tym, co już tam jest.
Ponadto używanie istniejących kół często powoduje ograniczenia w moim projekcie, których nie chcę. Na przykład:
źródło
Często używam własnego, ponieważ zbudowałem go, zanim odkryłem wcześniej istniejący, i jestem zbyt leniwy, aby znaleźć i zastąpić każdą instancję. Ponadto w pełni rozumiem własną metodę, chociaż może nie rozumiem wcześniej istniejącej. I wreszcie, ponieważ nie do końca rozumiem wcześniejszy, nie mogę zweryfikować, czy robi absolutnie wszystko, co robi mój obecny.
Jest dużo do kodowania i nie mam dużo czasu, aby wrócić i ponownie kodować coś, chyba że ma to wpływ na produkcję.
W rzeczywistości jedna aplikacja internetowa asp, która jest nadal używana, ma w pełni funkcjonalny wykres, który wyświetla dane w formacie tabelarycznym i umożliwia sortowanie / edycję, jednak nie jest to siatka danych. Został zbudowany kilka lat temu, kiedy uczyłem się asp.net i nie wiedziałem o datagridach. Boję się trochę kodu, ponieważ nie mam pojęcia, co wtedy robiłem, ale działa, jest dokładny, łatwy do modyfikacji, nie ulega awarii, a użytkownicy go uwielbiają
źródło
Ponowne wynalezienie koła to świetny sposób, aby dowiedzieć się, jak działa koło, ale nie jest to dobry sposób na zbudowanie samochodu.
źródło
Obecnie pracuję dla kilku tanich łyżew.
Kiedy podejmowana jest decyzja „zbuduj lub kup”, zamiast podejmować racjonalną decyzję opartą na ekonomii, menedżerowie zdecydowali się „budować”. Oznacza to, że zamiast płacić kilka tysięcy dolarów za komponent lub narzędzie, spędzamy osobo-miesiące budując własne. Zakup koła od innej firmy kosztuje pieniądze, które wychodzą z budżetu - co wlicza się do złych premii na koniec roku. Czas programistów jest darmowy i dlatego nie wlicza się do premii na koniec roku (z dodatkową korzyścią polegającą na tym, że programiści nie wykonają wszystkiego „na czas”), dlatego wymyślone koło jest kołem wolnym .
W racjonalnej firmie koszt w porównaniu do korzyści związanych z zakupem kół wyprodukowanych przez innych kontra wymyślenie własnych kół opierałby się na krótkoterminowych i długoterminowych kosztach, a także utraconych kosztach alternatywnych, ponieważ nie można tworzyć nowych widżetów wynalezienie kół. Każdy dzień, w którym spędzasz odkrywanie koła, to kolejny dzień, w którym nie możesz napisać czegoś nowego.
Prezentacja na temat kompilacji vs zakupu .
Artykuł na temat kompilacji vs zakupu .
Wbudowana wersja sprawi, że więcej osób będzie się na niej dudniło - w ten sposób znajdując i naprawiając więcej błędów niż Twój domowy kod kiedykolwiek może mieć.
Wreszcie, kiedy twój lokalny programista odejdzie, a ktoś inny będzie musiał zachować kod, który napisał, zostanie on całkowicie przebudowany i zastąpiony tym, co jest w ramach. Wiem, że tak się stanie, ponieważ mój obecny pracodawca ma kod, który przez lata był migrowany do nowszych wersji VB (najstarszy produkt istnieje na rynku od około 20 lat) i tak właśnie się stało. Deweloper z najdłuższym zatrudnieniem w moim biurze jest tutaj od 17 lat.
źródło
Rzecz w ponownym wynalezieniu koła polega na tym, że czasami nie ma standardowego, gotowego koła, które zrobi to, czego potrzebujesz. Istnieje wiele dobrych kół, w wielu rozmiarach, kolorach, materiałach i trybach budowy. Ale w niektóre dni musisz po prostu mieć naprawdę lekkie koło, które jest anodowane na zielono aluminium, i nikt go nie produkuje. W takim przypadku musisz stworzyć własny.
Nie oznacza to, że powinieneś tworzyć własne koła do każdego projektu - większość rzeczy może korzystać ze standardowych części i być lepsza. Ale od czasu do czasu okazuje się, że standardowe części po prostu nie działają, więc tworzysz własne.
Najważniejszą rzeczą jest wiedza KIEDY stworzyć własną. Musisz mieć dobre pojęcie o tym, co mogą zrobić standardowe części, a czego nie, zanim zaczniesz projektować własne.
źródło
To, czy ponowne wynalezienie koła jest opłacalne, czy nie. Koszty są dość oczywiste ...
Ostatnia jest ważna - gdzieś jest wpis na blogu ostrzegający o tendencji do „wyrzucania starego kodu i rozpoczynania od zera” na podstawie tego, że wiele starych cruft, których nie rozumiesz, jest w rzeczywistości niezbędnymi poprawkami błędów. Jest opowieść ostrzegawcza o Netscape, IIRC.
Korzyści mogą być ...
Jedno - użycie biblioteki innej firmy może być liczone jako wynalezienie koła. Jeśli masz już swoją starożytną, dobrze używaną, dobrze przetestowaną bibliotekę, zastanów się, zanim ją odrzucisz, zamiast tego użyj biblioteki innej firmy. Na dłuższą metę może to być dobry pomysł - ale zanim tam dotrzesz, może być dużo pracy i wiele nieprzyjemnych niespodzianek (z subtelnych różnic semantycznych między bibliotekami). Rozważmy na przykład efekt przejścia z własnych kontenerów na standardowe biblioteki. Naiwne tłumaczenie kodu wywołującego nie pozwoliłoby na fakt, że standardowe kontenery bibliotek nie utrzymują swoich iteratorów. Przypadki, w których zapisuję iterator na później jako „zakładkę”, nie mogły zostać zaimplementowane przy użyciu prostego tłumaczenia - ja ”
źródło
Jeśli istnieje działający komponent, który robi to, czego potrzebujesz, to po co tracić czas na pisanie i debugowanie własnej wersji? Podobnie, jeśli już napisałeś kod w celu spełnienia podobnej funkcji, po co go ponownie pisać?
Joel napisał artykuł o Nie-wymyślonym tutaj, który mówi wiele o tym, kiedy przepisywanie kodu i oprogramowania nie jest i nie jest przydatne.
źródło
Ponowne wynalezienie koła może być świetnym sposobem, aby dowiedzieć się, jak coś działa - i zalecam ponowne wymyślenie tylko w tym celu w swoim własnym czasie - ale pisząc aplikację, po co wymyślać, jeśli istnieją dobrze ugruntowane rozwiązania, które już robią to samo?
Na przykład nigdy nie pisałbym kodu JavaScript od zera; zamiast tego zacznę od jQuery i zbuduję aplikacje na tym frameworku.
źródło
Moja osobista zasada:
Nowe odkrywanie koła jest dobre, gdy dopiero się uczysz. Jeśli masz termin, możesz użyć istniejących kół.
źródło
Bycie „złym” lub nawet „złym” to raczej mocne słowa.
Jak zawsze istnieją powody, dla których warto wybrać implementację osobistą zamiast wbudowanej. W dawnych czasach program C mógł napotykać błędy w bibliotece wykonawczej i dlatego musiał po prostu zapewnić własną implementację.
Nie dotyczy to programów Java, ponieważ JVM jest bardzo ściśle zdefiniowane, ale niektóre algorytmy są nadal bardzo trudne do uzyskania. Na przykład Joshua Bloch opisuje, w jaki sposób zwodniczo prosty algorytm wyszukiwania binarnego w bibliotece wykonawczej Java zawiera błąd, którego ujawnienie zajęło dziewięć lat:
http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
Został znaleziony, naprawiony i rozpowszechniony w przyszłych dystrybucjach Java.
Jeśli korzystasz z wbudowanego wyszukiwania binarnego, właśnie zaoszczędziłeś czas i pieniądze, ponieważ Sun wykonał ciężką pracę w znalezieniu, naprawieniu i rozpowszechnieniu tej poprawki. Możesz wykorzystać ich pracę, mówiąc „potrzebujesz co najmniej aktualizacji Java 6 10”.
Jeśli używasz własnej implementacji - która najprawdopodobniej zawierałaby również ten błąd - najpierw musisz ujawnić błąd. Biorąc pod uwagę, że ten konkretny pojawia się tylko w LARGE zestawach danych, na pewno nastąpi gdzieś w produkcji, co oznacza, że wpłynie to na co najmniej jednego z Twoich klientów i najprawdopodobniej straci prawdziwe pieniądze podczas wyszukiwania, naprawiania i rozpowszechniania poprawki.
Dlatego preferowanie własnej implementacji jest całkowicie słuszne, ale powód powinien być naprawdę dobry, ponieważ musi być droższy niż wykorzystywanie pracy innych.
źródło
Niedawno napisałem na blogu swoje przemyślenia na ten temat. Podsumowując:
To prawie zawsze zło zbudować własną rękę, zwłaszcza jeśli jest to ów funkcyjne wbudowane w język. Ale jeśli oceniasz niedojrzałe / wątpliwie utrzymane / źle udokumentowane ramy, które znalazłeś w Internecie pod kątem możliwości pisania własnych, może to być oczywiste.
Myślę, że wynalezienie koła jest dość okropną analogią do programowego anty-wzoru. Oznacza to, że oryginalnego rozwiązania nigdy nie można ulepszyć. To nonsens. Tak zwane koło może stać się z dnia na dzień przestarzałe lub jego właściciele mogą przestać go utrzymywać. Koło ma inną wartość w każdym systemie, w którym jest używany. Tak więc często jest całkowicie możliwe wynalezienie lepszego koła.
Jedną z głównych zalet tworzenia własnego frameworka jest to, że nie będziesz musiał brać odpowiedzialności za błędy innych osób. (To jest filozofia Amazon .) Pomyśl o tym w ten sposób: który z nich lepiej powiedzieć klientowi? -
źródło
Może jest tak samo wydajny, ale czy tak solidny? Myślę, że najbardziej przekonującym powodem do korzystania z biblioteki przy rozwijaniu własnej jest to, że framework ma tak wielu ludzi, którzy go używają, że mogą szybko znaleźć i naprawić błędy. Własnie opracowana biblioteka, choć może zapewniać tyle samo (lub więcej) funkcji, nie może konkurować z biblioteką z milionami użytkowników, aby zapewnić testowanie w prawie każdym przypadku użycia. Po prostu nie można pokonać tego rodzaju testów we własnym zakresie.
źródło
Cóż, jego własna metoda jest tak skuteczna jak framework, byłaby dość rzadka, ponieważ większość frameworków wciąż ma błędy i żadna framework nie może dać ci rozwiązania od razu po wyjęciu z pudełka. Większość programistów, którzy nie mogą myśleć, nigdy nie spróbują napisać niczego na poziomie frameworka; będą po prostu wyszukiwać w Google gotowe rozwiązanie. Każdy mądry programista najpierw zobaczy, czy istnieje wolna platforma, która ma funkcjonalność, której potrzebuje, a następnie sam napisze rozwiązanie, jeśli nie ma. Czasami jest zbyt trudno wyjaśnić obecną sytuację projektu, a deweloper jest najlepszym sędzią.
Ponowne wynalezienie koła nie jest złe, jest to oświadczenie leniwych ludzi, aby uniknąć ciężkiej pracy. Nawet autorzy frameworków wymyślają na nowo; cała platforma .Net została wymyślona na nowo, aby robić to, co oferowała COM.
źródło
Choć dla niektórych może to być obraźliwe, zawsze uważałem ten termin za nieprecyzyjny, gdy używał go jakikolwiek inżynier lub w odniesieniu do tematu tworzenia lub projektowania rzeczy. W rzeczywistości nie mogę powstrzymać się od postrzegania tego jako nieuczciwego, biorąc pod uwagę presję na innowacje w dzisiejszym szybkim świecie. Powtarzanie siebie (lub ignorowanie odpowiednich, wcześniej istniejących rozwiązań) nigdy nie jest mądre, ale tak naprawdę istnieje powód, dla którego nie wszyscy wciąż patrzymy na czarne ekrany pełne zielonych liter.
Rozumiem „Jeśli to nie jest zepsute, nie naprawiaj tego”, ale myślę, że takie zdanie może brzmieć dla niektórych nieświadomie. Jednak przy obecnych wysiłkach zmierzających do ponownego wynalezienia koła na potrzeby podróży kosmicznych, wyścigów, żeglugi itp. „Nie wymyślaj ponownie koła” jest również dość ignoranckie i nie jest tak mądre, jak się wydaje.
Moje doświadczenie polega na prowadzeniu wielu projektów i musiałem współpracować z wieloma stażystami i innymi formami zielonych deweloperów, musiałem też stawić czoła wielu naiwnym pytaniom, które niektórzy nazwaliby „głupimi”, a także musiałem odwodzić ludzi od ścigania królika całości poza zakresem ich zadań. Jednak nigdy nie zniechęcałbym się do innowacji ani kreatywności i widziałem, że wspaniałe rzeczy wynikają z „ponownego wynalezienia koła”.
Moja faktyczna odpowiedź na pytanie: są tylko dwie sytuacje, w których ponowne wynalezienie koła jest czymś złym:
Edycja: Widzę po głosowaniu za odrzuceniem, że musiałem trochę urazić. Jedno, co chciałbym dodać, to to, że to zdanie zawsze było moim głównym wkurzeniem. Rozumiem, że moje dwa centy mogą brzmieć raczej trollicznie, ale nie mam zamiaru trollować, powodować pożarów ani obrażać.
źródło
Argumenty o „ponownym odkryciu koła” są często używane w niewłaściwym kontekście wyboru biblioteki, ale nie jest to bardzo podobne.
Załóżmy, że oceniam bibliotekę „form-plus”, która niedawno stała się popularna i pomaga radzić sobie z formularzami. Ma ładną stronę docelową, nowoczesną fajną grafikę i otaczającą ją kulturę (ups, mam na myśli społeczność), która przysięga, że sprawia, że tworzenie form jest znów świetne. Ale „form-plus” to abstrakcja na „formach”. „formy” były możliwe, ale kłopotliwe w obsłudze, więc abstrakcja, która ułatwia, staje się popularna.
Ciągle pojawiają się nowe abstrakcje. Trudno je porównać do kół. To bardziej jak nowe urządzenie sterujące i nowa instrukcja dla każdego, już bardzo skomplikowanego, urządzenia, które musisz uruchomić.
Wycena tego nowego urządzenia „form-plus” będzie wyglądać inaczej w zależności od osobistych doświadczeń. Jeśli nigdy wcześniej nie budowałem formularzy, wówczas „form-plus” będzie bardzo przekonujący, ponieważ łatwiej jest zacząć. Minusem jest to, że jeśli „form-plus” okaże się nieszczelną abstrakcją, i tak będę musiał nauczyć się „form”. Jeśli budowałem formularze bez „form-plus”, będę musiał wziąć pod uwagę czas potrzebny na nauczenie się nowego narzędzia. Plusem jest to, że już znam „formy”, więc nie boję się abstrakcji. Krótkoterminowe korzyści często będą większe dla początkujących, ponieważ prawdopodobnie nie byłoby nowej biblioteki, gdyby coś się nie poprawiło. Korzyści długoterminowe będą się znacznie różnić w zależności od jakości abstrakcji, wskaźnika adopcji,
Po dokładnej ocenie korzyści i negatywów wynikających z zastosowania nowej formy „formy plus” w porównaniu z użyciem formy „gołą kość” podejmuję decyzję. Decyzja w dużej mierze opiera się na moich osobistych doświadczeniach, a różni ludzie podejmują inną decyzję. Mógłbym użyć „form” z gołej kości. Może później formy plus zyskały większy ruch i stały się standardem defacto. I może moja własna implementacja z czasem stała się owłosiona i zaczęła dużo opowiadać o tym, co robi teraz formularze plus. Ludzie, którzy przyjadą w tym czasie, zostaną skłaniani do krytykowania tego, że chętnie wymyślam na nowo koło i powinienem był skorzystać z istniejącej biblioteki. Ale możliwe jest również, że w czasie, gdy musiałem podjąć decyzję o „formach plus”, istniało również wiele innych alternatyw dla „formularzy plus”,
Ostatecznie wybór odpowiednich narzędzi jest skomplikowaną decyzją, a „wynalezienie koła” nie jest bardzo pomocną perspektywą.
źródło
Napisałem o tym mały artykuł - http://samueldelesque.tumblr.com/post/77811984752/what-re-inventing-the-wheel-can-teach-you
Z mojego doświadczenia wynika, że odkrycie na nowo było naprawdę świetne - choć bardzo długie i żmudne. Powiedziałbym, że jeśli nie znasz dokładnie modeli programowania, których zamierzasz użyć, napisz je sam (jeśli masz czas i energię). To nauczy Cię, co dokładnie oznaczają te modele programowania i ostatecznie staniesz się lepszym programistą. Oczywiście, jeśli pracujesz dla klienta i po prostu potrzebujesz szybko coś zrobić, prawdopodobnie po prostu zechcesz przeprowadzić badania i znaleźć odpowiednie oprogramowanie dla siebie.
źródło