Team Lead
0,0
рейтинг
22 февраля 2013 в 18:12

Управление → О великих велосипедах, или почему иногда нужно писать с нуля

Not invented here — источник инноваций и причина успеха?


Я не могу дать тебе рецепт успеха, но рецепт провала могу дать точно: каждый день и каждую минуту делай все так, как делают окружающие.
Неизвестный автор.


Очень часто в компаниях выступают против синдрома «not invented here». Я, как менеджер проектов, прекрасно понимаю соображения такого толка. Велосипеды — это лишние затраты, удлинение сроков разработки, сложность и дороговизна поддержки продукта в будущем, зависимость от разработчиков велосипеда и все такое прочее.

Но как программист, понимаю однозначно — без велосипедов не будет инноваций. А без инноваций не будет прорывных технологических решений, новых проектов. Будут только одинаковые, похожие друг на друга, собранные из одного набора кубиков проекты и приложения, никак не могущие конкурировать между собой (разве что кто кого засудит и «отожмет» рынок).

Не случайно поэтому Гугл выделяет 20% на свободное творчество, и это рождает такие великолепные переосмысления старых вещей, как почтовый клиент Gmail.

Но обо все по порядку. В этой статье я хочу коротко рассказать о трех «велосипедах», которые произвели революцию в своей области.


Велосипеды и инновации часто ходят рядом — иногда в буквальном смысле

Ford Model T


Если бы я слушал своих клиентов, мне бы пришлось дать им более быструю лошадь
Генри Форд, выдающийся предприниматель и изобретатель.


В начале 20го века производство автомобилей было ручным. Каждую операцию производили индивидуально. Также автомобили были очень дорогими, потому что было много разных настроек в «конфиге» сборки, и это приводило к издержкам.

Форд изменил ситуацию в корне, пойдя против сложившихся представлений, и изобрел велосипед. Во-первых, он выбросил все дополнительные опции, сказав известную фраза «любой клиент может получить автомобиль выкрашенный в тот цвет, в который он хочет — до тех пор пока этот цвет — чёрный».

Но что еще более важно, он первым запатентовал и стал использовать промышленный конвейер для сборки, в сотни раз повысив эффективность производства. О чем рассказал в известной книге "«Моя жизнь, мои достижения».".

Изобретательность Форда сделала автомобиль из предмета роскоши обычным, доступным для американского среднего класса средством передвижения.

Впрочем, не все попытки бывают удачными и могут просто ехать, не говоря уже о взлете.

Google


Компания Google является примером фантастически удачной корпорации, сочетающей инновационность своих продуктов с коммерческим успехом.

Однако в начале 2000х, когда они только начинали, ситуация на рынке поисковых систем была совершенно иной. Сегодня Google — лидер и монополия. А тогда царили Yahoo, Altavista, Hotbot, Lycos и ряд других поисковиков, о которых помнят теперь только зубры интернета (хотелось сказать, древнее только фидо, но это было бы ложью)

Казалось бы, стоит ли изобретать велосипед, когда на рынке столько успешных корпораций. Однако Сергей Брин так не думал, напротив, он активно интересовался тематикой, сделал ее сначала объектом своих научных исследований. А затем и вместе с будущим партнером Ларри Пейджем написал прототип поисковой системы в рамках университета, из которого затем и выросла сверхуспешная компания, пережившая крах доткомов и победившая всех своих конкурентов.

Google набирал и набирает только лучших, и поддерживает дух энтузиазма и творчества, что несовместимо с запретом на создание своих велосипедов. 20% времени выделяется сотрудникам на создание своих проектов, и это дало свои плоды неоднократно.



nginx



Осенью 2001 года у меня появилась идея написать более легкий и производительный веб-сервер, чем Apache. На тот момент были уже другие похожие серверы, но все они не умели проксировать, они отдавали только статику. Был у них еще один общий недостаток – они работали в одном процессе, и, соответственно, отмасштабировать их, допустим, на двухпроцессорной машине было нереально.
На тот момент у меня уже был достаточно неплохой опыт работы с Apache — и как у системного администратора, и как у программиста. Два написанных модуля прибавили мне знаний: приходилось смотреть исходники Apache и понимать, как там все устроено. Поэтому очень многие вещи в nginx перекочевали из Apache идеологически. Не код, а именно идеология, весь код nginx был написан с нуля.

Из интервью выдающегося разработчика Игоря Сысоева


Каких только вариаций веб-сервера на Хабре не было — и на PHP, и на bash, и чуть ли не на Brainfuck (хм, а может не было? надо проверить! :) ).

Но по-настоящему серьезных разработок крайне мало. Ведь в сфере веб-серверов, казалось бы, все давно решено — есть проверенный годами Apache, есть всякие Томкаты для Джавы, для MS есть свой IIS, в общем, выбирай — не хочу. И взяться разработать веб-сервер, который в будущем не просто обойдет apache, а даже местами вытеснит его (многие ставят nginx +php-fpm без апача) — это не просто дерзко, это просто неслыханно!

Но, тем не менее, велосипед был написан, и достиг впечатляющих результатов (100 тысяч соединений, Фря, nginx, масло, 2007).


Слова выдающегося инноватора актуальны и поныне.

%имя Вашего проекта%


К чему все эти истории? Вам может казаться, что написать велосипед — это лишнее.
Начальство может успешно промывать мозги, что писать свои компоненты не нужно, нужно все брать готовое.
Друзья говорить, что уже написано 10 фреймворков (серверов, шифраторов, поисковых систем, архиваторов, собрано марсоходов и тд), и что ваша затея не имеет смысла.

Это все не имеет никакого значения, если вы действительно Изобретатель. Не обязательно каждый день, но раз в неделю посвящайте творчеству. Пусть это будет выходной, или вечер каждого дня.

Найдите то, что Вам по душе. И создайте нечто свое, новое, что можно показать миру. Ведь если все будут собирать продукты из кубиков лего и копировать друг у друга, кто будет двигать мир, как не изобретатели велосипедов?

Invent it all again!

upd: в комментариях увидел жалобы на отсутствие определения «велосипеду». Общего определения однозначного, как известно, не существует. Дам свое.

Итак — под велосипедом я в статье подразумеваю написание с нуля своего решения для определенного круга задач, когда уже имеются готовые чужие решения, которые эти задачи решили. И никаких связей с качеством не делаю — велосипед может быть как суперудачным, так и просто таким, что хочется плакать, глядя на него (вторых больше).

Никаких сомнений, что nginx является велосипедом в таком понимании, нет — это веб-сервер, пусть и отличный по архитектуре и содержающий новые идеи. Но уже __были__ веб-сервера, и все-же Сысоев написал nginx с нуля, за что ему огромное спасибо и низкий поклон. И поисковики уже были до Гугла, и машины тоже делали до Форда.
@Cord
карма
403,5
рейтинг 0,0
Team Lead
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Управление

Комментарии (90)

  • +31
    Пульман, когда изобретал свой пассажирский вагон, даже не знал что у Ж/Д есть стандарты на габариты (кроме колеи, конечно)… Он делал первый прототип вагона 15 лет (кажется) и когда завершил постройку оказалось, что его творение «не подходит» под некоторые платформы и «не пролазит» в пролет некоторых мостов… Тем не менее он убедил одну из железнодорожных компаний взять вагон на испытание и успех был такой, что уже через 20 лет практически все платформы и мосты восточного побережья были переделаны под пульмановский вагон!
    • +7
      Продукт Пульмана имел конкурентные преимущества по сравнению с тем, что уже было на рынке. Поэтому он выстрелил.
      Он также имел и недостатки! Нестандартные габариты — недостаток. Просто преимущества перевесили.
      Если бы Пульман все таки начал разработку, зная о стандартах габаритов, возможно не пришлось бы выкидывать на ветер кучу денег.
      • +6
        Если бы Пульман все таки начал разработку, зная о стандартах габаритов, возможно не пришлось бы выкидывать на ветер кучу денег.

        А может быть тогда его преимущества тогда были бы не так очевидны или тогда под него не стали бы менять стандарты и эти сдерживающие и не оптимальные стандарты продолжали бы сдерживать других.

        Однозначно судить, имхо, сложно.
        • 0
          Sergei_Erjemin упомянул, что Пульман именно не знал о стандартах.
          Если бы Пульман знал о них и увидел, что они мешают реализации его идей — он бы сознательно их подкорректировал.
          А уж если бы не пришлось менять стандарты под Пульмана, то точно никто бы не пострадал.
          • +3
            Если бы Пульман знал о них и увидел, что они мешают реализации его идей — он бы сознательно их подкорректировал.

            Или сознательно же не стал бы этого делать, подозревая, что ради его идей никто ничего менять не станет.
            Люди, которые не знают об ограничениях часто не заморачиваются на счет всяких там «нельзя» или «не принято» или «не положено». Чистый полет фантазии. А потом уже эти фантазии дорабатываются под стандарты и ограничения или стандарты под фантазии, тут уже по месту. А вот вероятность отсеять даже очень хорошую идею на раннем этапе из-за того, что это «невозможно» или «так никто не делает» — очень велика.
            • +2
              Если идея действительно очень хорошая, то она будет реализована. Если у Пульмана не хватило бы воли — хватило бы у кого-то другого. Да и сам он смог бы оценить, да, стандарты придется поменять, но оно того стоит.
              Нужно сознательно оценивать, где преимущества от новых качеств перевесят издержки от изменения стандартов, а где нет. Так и происходит обычно: люди оценивают «за» и «против» и принимают решение, стоит ли. Почти никогда инновации не бывают без побочных эффектов, это давно известно, описано и исследовано, но, никого не пугает.
              Я не верю, что недостаток информации (как в случае с Пульманом) может пойти на пользу в долгосрочной перспективе. Чем качественнее ты можешь оценить эффект от своих инноваций — тем больше шансов, что они будут внедрены. Как раз наоборот, многие интересные идеи теряются из-за того, что не прорабатываются в деталях и контексте. Пульману повезло.
              В реальности люди давно знают про неизбежность побочных эффектов при инновациях, нормальных людей это не пугает.
              «Так никто не делает» тут ни при чем. Как раз наоборот, часто стандарты принимаются необдуманно и позже становится очевидно, что их лучше изменить. У любой системы есть ограничения и проблемы, со временем это становится очевидно — «назрела проблема, надо что-то менять». Вопрос встает о том, изменить на что. И вот тут появляются инновации. Люди взвешивают, обдумывают и делают лучше. Так произошло с гуглом, nginx и прочими. Никто из них не изобретал велосипед.
              • +1
                Нужно сознательно оценивать, где преимущества от новых качеств перевесят издержки от изменения стандартов, а где нет.

                Слова красивые. Но к сожалению полноценная и всесторонняя оценка, объективная оценка это крайне сложно, дорого и в итоге все равно имеет посредственную точность. Ну нельзя вот просто взять и со сто процентной вероятностью высчитать какая идея выстрелит, а какая нет. Если бы это было так просто, то никто бы не прогорал и никто бы не начинал заведомо невыполнимого и невозможного. Шли бы в бюро к холодному решателю и тот бы выносил однозначный вердикт — начинать или не начинать.

                люди оценивают «за» и «против» и принимают решение, стоит ли

                Люди оценивают, рисуют списки, проводят исследования, вкладывают деньги и все равно ошибаются. Причем ошибаются достаточно часто, увы.

                Пульману повезло.

                Многим повезло. Очень многим не повезло, конечно, но многим повезло. Переменных слишком много. Можно, конечно, попытаться построить модель мира и изобрести тот самый холодный решатель, неплохая идея, кстати. К сожалению я, например, думаю что это невозможно и не стану об этом даже думать. Смогу я таким образом что-то сделать?
                • 0
                  безусловно, оценить не всегда легко. Но это же не значит, что если оценка показывает, что «лучше не надо» — нужно продолжать?
                  • 0
                    Оценка ведь может быть ошибочной. И в этом проблема. Помимо собственно работы над идеей начинается еще обдумывание соответствия оценки действительности, сомнения и так далее.
                    Повторюсь — все не так однозначно. И некоторым просто везет.
                  • 0
                    Если это интересно, любопытно и весело — то почему нет? Вон сколько всего наизобретали во вред человечеству. Тот же порох. Он него погибло людей только во время второй мировой больше чем подстрелено дродью куропаток за все существование огнестрельного оружия…
                    • 0
                      люди погибли не от пороха, а от политических, экономических и социальных перекосов — кризиса. Поэтому началась война. Не было бы пороха — нашли бы другие способы убивать людей.
                      Зато тоннели с его помощью и другие вещи стало возможным делать гораздо дешевле.
          • 0
            Все правильно. В то время были только сидячие вагоны. А Пульман придумал с диванчиками-постельками-полочками и прочими удобствами (он вообще мебель делал до этого)… Для Америки это было актуально т.к. расстояния большие и сидя трое суток откуда-нить из Майами в Филадельфию ехать просто пытка… Но штука в том, что в стандартные, для того времени, габариты вагонов не получилось-бы впихнуть все эти диванчики, столики, туалет и пр. удобства (ну уж точно не в таком количестве). Так что если бы Пульман и знал про габариты, он бы их все равно нарушил (он может и знал, кто ж теперь проверит).
      • 0
        Он вообще не знал стандартов. Он думал об удобстве клиента, а не о выгодах жд-магнатов.
  • +51
    Я может быть выскажу какой-то моветон и отгребу, но статья ни о чем.

    Можно сколько угодно писать восторженных провокационных фраз, но по _моему_ мнению все вещи, которые вы описали — они выстрелили не потому, что кто-то что-то написал с нуля.

    Кто-то взял, проанализировал, продумал, запланировал. «Давайте напишем велосипед. А давайте!» — вот так не работает. И почему-то в этой статье вы об этом не написали.

    Создавать выдающиеся вещи — это труд, талант и опыт. А писать велосипед — это заниматься бессмысленным делом.
    • +4
      Поддержу. Автор привели три случая когда что-то выстрелило, и я уверен что есть еще 100 случаев когда новое выстрелило. Только не забывайте, что есть еще 10 тысяч случаев когда новое не выстрелило и изобретатели сгинули в нищите и неизвестности.

      • +3
        Автор же не предлагает все силы бросать на изобретение велосипеда, что в случае провала приведет к нищете, а выделять для этого определенное количество времени. Как по мне даже если твой велосипед не станет лучше уже существующего, все равно это не время потраченное впустую, это ценный опыт, это интересно. В одной из статей про iOS разработку писалось что 85% приложений не окупают себя. Если рассуждать с этой точки зрения, то можно сказать себе: в AppStore и так много приложений, зачем что-то изобретать, скорее всего это не принесет мне ничего.
        • –3
          Если бы автор написал хорошую, годную статью, то дал бы определение тому, что же такое «велосипед», какие «полезные», а какие «не очень».
          Тема интересная, но не в такой форме.
          • +6
            напишите хорошую, годную статью, десу.
            • 0
              :) спасибо, что аргумент не «сначала добейся!» :)
              • +3
                свое определение «велосипеду» дал.

                «полезные», «не очень» — это решает общество и история, кто я такой, чтобы судить Титанов?
            • 0
              никто Вас не заставляет писать. если уж написали, то будьте готовы встретиться с критикой. таков мир. как мне показалось, я был достаточно конструктивен. мне кажется, что Вы это понимаете, раз все-же добавили определение.
              • +3
                да я ваще пушистая фея:)
      • +3
        Вы правы… Но ведь велосипед изобретают не для того чтобы стрелнуло, а потому что это лобопытно, нтересно, увлекательно…

        Из вышеприведенных «проектов» только Форд «ни в кассу»… Во-первых, Форд имел свои экономические взгляды (так называемый фордизм). Во-вторых, он не придумывал конвейер. Ему его сделали специалисты по забою скота и переработки курятины. Там конвейер же был. Я уж не говорю что автомобили были только черными, т.к. черный лак сох на три часа быстрее, а это значительно сокращало цикл производства…
      • 0
        ну давайте ничего не делать, не вопрос
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      >это не значит, что можно свои твореньица юзать по своему лишь желанию для решения задач самой компании Google.
      Уверен, что вообще-то именно это и значит
      Разве что не «лишь по своему желанию», но подозреваю что там никто не возражает против того что бы заменить существующую технологию велосипедом, если он хотя бы не хуже
  • НЛО прилетело и опубликовало эту надпись здесь
  • +11
    Автор, ты не прав. Появление конвейера — это не велосипед. Это революция, это качественный переход. И даже nginx — не велосипед, так как обладает качеством, отсутствующим у других существующих решений — он «более легкий и производительный веб-сервер».

    Велосипед — это когда свою собственную реализацию «класс CMyString» пишут.
    • +2
      boost, stl — чем не CMyString своего времени?
      • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          если так посмотреть и перегнуть, а зачем вообще изобрели C++?

          Я придумал термин «объектно-ориентированный», и вот что я вам скажу, я не имел ввиду С++. (OOPSLA '97)

          Мой знакомый, крутой сисадмин, уверен, что ООП в большинстве случаев нафиг не уперлось и можно написать на нативных сях, без всякого ООП. Руки прямые, принципы и мышление — и вперед.

          Так что речь не о крайних случаях, когда пишут CMyString. В статье я имел в виду, что нужно пробовать что-то свое, не терять дух творчества. Не забывать, что можно изобретать, пробовать создать новое. Несмотря даже на общее сопротивление всех вокруг.
          • +4
            >… ООП в большинстве случаев нафиг не уперлось и можно написать на нативных сях, без всякого ООП...

            А яблоки желтее, чем карандаши.

            Я вас удивлю, но «ООП» и «си» не являются взаимоисключающими вещами, точно так же как «ООП» и «си-плюс-плюс» не являются жёстко связанными друг с другом.
            Можно писать на C++ без всякого ООП (хотя бы из-за одного только STL), а можно писать на нативных сях с ООП (пример — Glib).
            • –2
              Согласен, но в общем, тапками тоже можно гвозди забивать, как и без ООП писать там, где оно нужно — только зачем?

              Каждый инструмент под свои задачи, есть и плюсы и минусы у всего, иначе бы на идеальное все давно перешли. Если взять С++ и Джаву — Джава, как правило, тормознее в силу многих причин (виртуальная машина, сброс мусора — 30 секунд тормозящее IDE-ГУЙ-известная-прога, когда супер «сборщик мусора» работает — это вполне норм), больше железа требует, зато в ней нет такой «клевой» темы, как в плюсах из-за прямой работы с памятью (читай мемори лики и все другие прелести) — когда можно искать утечку inf времени. IMHO!!!

              Везде есть и плюсы, и минусы, а если решения схожи — выбирают на вкус. Мне не нравится политика закрытых вещей и привязки к одной платформе, и я юзаю open-source. А многим плевать и они юзают какой-нибудь Дотнет.
              • +2
                Ничего не мешает делать утечки памяти в управляемом коде и не делать их с прямой работой с памятью.
      • +5
        мне кажется, что термин «велосипед» используется вами слишком широко.

        Для меня «велосипед» означает, что человек не знает о существующих решениях и начинает делать своё, при этом зачастую глючное и малофункциональное. Минусом также является то, что на создание своего «решения» тратится время и другие ресурсы.

        Если же существующие решения не устраивают (не подходят для задачи) и создаётся новое, без тех недостатков, которые присущи прошлым решениям — это не называется «велосипед». Это называется «прогресс».
        • +4
          Это если получилось — прогресс. А если не получилось — то велосипедом обзывают…
        • 0
          Зачастую о других решениях известно, но они отбрасываются как привносящие ненужный (субьективно!) оверхид (разный — от ресурсоемкости стороннего решения до лени его изучать).
      • 0
        Плохой пример. Вот QString — велосипед. Но они объясняют, зачем он нужен — например, он поддерживает концепцию «родительского объекта», при уничтожении которого автоматически убивались все дочерние — такая вот защита от утечек памяти. Но, ещё раз, QString — куда боьше велосипед, чем stl.
  • +3
    друг мой, Вы путаете очень важные вещи — цели и методы достижения.

    Если Вы пишите Новый магазин — используйте готовую цмс. Пишите новую цмс? — используйте готовый фреймворк. Пишете новый фреймворк? — используйте проверенные решения и рабочий язык программирования.

    Форд — не придумывал новый способ добычи и обработки метала. И даже ДВС не Форд придумал.

    гугл — не изобретал свой интернет.

    Сысоев — не придумал своего языка программирования.
    • +9
      Создатель автомобиля не использовал свое колесо. Создатель интернета не открывал свое электричество. Создатель любого языка программирования не изобретал интегральную схему. Значит все это не инновации?
      • 0
        Инновации. Но они базируются на других изобретениях, которые были проверенны временем.

        Проблема же программистов как раз в том, что делая автомобиль, они заодно, изобретают колесо, методы добычи стали и правила дорожного движения.
        • 0
          >Но они базируются на других изобретениях, которые были проверенны временем.

          Все иновацци базируются на изобретении добычи огня :) Даже Гугл :)
  • +3
    Соглашусь с автором. Писать «велосипеды» в разумных пределах надо. Это доставляет удовольствие, а иногда еще и развивает. Я работаю сисадмином, и в свободное время пишу свои велосипеды. При этом я преследую несколько целей, от изучения синтаксиса языков до изучения архитектурных вопросов. Иногда получается внедрить свой велосипед на работе. Да да да, уже слышу как меня начали освистывать и упрекать фразами «Вот перейдете на другую работу. Вот придет кто-то на ваше место и хрен разберется в вашей фигне». На это я могу привести несколько примеров продажи неработоспособного ПО, а служба поддержки открещивалась и настоятельно рекомендовала приобрести новую версию. Разве это лучше?! В конечном счете не нравиться не пользуетесь.
    P.S. К стати nginx+php-fpm мой выбор, он мне нравиться больше чем громоздкий apache.
  • 0
    Мне кажется, все указанные личности создавали свои «велосипеды» сознательно, осознанно и очень аргументированно. Например Брин точно понимал в чем недостаток существующих поисковиков и как именно он собирается их избежать.
    • +1
      Брин точно понимал, что ни один поисковик не сможет выгрузить все картинки с сайта playboy, и написал свой велосипед.
      Так появился гугл!
      • +1
        Он не писал велосипед. Он увидел проблему: нет готового решения, позволяющего выгрузить картинки с «плейбоя», выражаясь вашими словами. И он создал инновационный продукт. Никаких велосипедов.
        Как говорят его сокурсники, это была первая на их памяти программа, которая находила информацию в Интернете в автоматическом режиме
  • +1
    Гугл свои деньги заработал не поиском и почтой, а контекстной рекламой, так же как некогда yahoo на баннерах.

    Nginx безусловно классный продукт, но параллельно существуют другие легковестные сервера, лайти даже более известен за пределами рунета. даже апач ставят над апачем и получают необходимую производительность для 99% проектов.

    Да и про 20% известный миф, ребята из гугла говорят что не так уж легко получить эти проценты и уж точно не под очередной велосипед, а пот нужный и уникальный продукт.

    С понятием велосипед у вас тоже каша.
    • 0
      Ок, помогите, пожалуйста, с переформулированием определений.
      Ваше мнение
      • +1
        Всё описаное вами это как раз НЕ написание велосипедов, а ДОРАБОТКА существующих решений. Конвееры были до форда, контекстная реклама до гугла, легкие серверы до nginx.
        • +1
          nginx с нуля, Форд построил производства с нуля,
          и Гугл с нуля движок написан.

          ЗЫ: дописал определение, как я понимаю Велосипед
    • +3
      > лайти даже более известен за пределами рунета

      лайти БЫЛ более известен за пределами рунета

      я использовал лайти довольно долго, но потом ушел на nginx. у лайти текла память и это не исправляли годами. да и конфиг у nginx оказался удобней местами(хоть и есть специфика не очевидная у всяких конструкций типа if)

      на и более новые велосипеды есть чероки тот же:)
  • +3
    "… это рождает такие великолепные переосмысления старых вещей, как почтовый клиент Gmail..."
    По-моему нет более плохого и нелогичного интерфейса чем gmail WebUI. Совершенно непонятно кто и кому ответил, когда было написано письмо, интерфейс сам решает что мне показать, а что нет.

    Несколько обычных пользователей (не имеющих отношения к АйТи) жаловались на этот клиент, приходилось настраивать POP/IMAP клиент на компьютере.
  • +3
    Далеко не все революционные идеи приживаются в реальной жизни

  • +7
    Велосипед и инновация — разные вещи. Велосипед не предполагает никаких конкурентных преимуществ по сравнению с готовыми решениями. Велосипед отличается от имеющихся решений только в незначительных деталях. Это никому не нужно, возможно только в образовательных целях или «а что бы враг не догадался»(с).
    Инновация — это когда реализуется решение, имеющее функциональность или качества отличные от того, что уже есть (конкурентное преимущество). Это очевидно для всех описанных примеров.
    Конкурентным преимуществом могут быть как новые функции так и улучшение качества старых функций: выше производительность, например.
    Называйте вещи своими именами.
  • +2
    Приведённые примеры отличаются тем, что их создатели не только захотели, но и смогли сделать свой велосипед. Большинство же самописных изобретений (если говорить о коде) заставляют плакать кровавыми слезами.
  • +5
    под велосипедом я в статье подразумеваю написание с нуля своего решения для определенного круга задач, когда уже имеются готовые чужие решения, которые эти задачи решили

    Проблема в том, что все приведенные вами примеры — это написание своего решения, когда готовое чужое не удовлетворяет по каким-то параметрам.

    В то время как велосипед обычно пишется от незнания, а NIH — исключительно из принципа (который в название и вынесен).
    • +2
      Ясно, спасибо, что разъяснили.

      Как-то слабо разделял эти вещи. Потому что
      1. Чужое обычно всегда не устраивает и приходится допиливать
      2. Незнание часто бывает — во многих сферах решения слабо пиарены, ты три дня гуглил, потом полгода писал — и вот вдруг решение вылезло на Гитхабе и стало популярным
      3. Иногда из принципа — я не буду юзать какие-то библиотеки, если мне не нравится их подход к ООП, к организации процесса. Некоторые из принципа не юзают целые фреймворки, и пишут свои (единичные — успешно пишут).

      Так что для меня это как-то всегда шло вместе в практике.
      • +1
        Чужое обычно всегда не устраивает и приходится допиливать

        Не обязательно для этого писать свое с нуля.

        Незнание часто бывает — во многих сферах решения слабо пиарены, ты три дня гуглил, потом полгода писал — и вот вдруг решение вылезло на Гитхабе и стало популярным

        Типичный велосипед.

        Иногда из принципа — я не буду юзать какие-то библиотеки, если мне не нравится их подход к ООП, к организации процесса. Некоторые из принципа не юзают целые фреймворки, и пишут свои (единичные — успешно пишут).

        Типичный NIH.
        • +1
          >Не обязательно для этого писать свое с нуля.
          Как показывает практика -в 90% форк будет несовместим, а изначальные косяки архитектуры потом вылезут боком.

          >Типичный велосипед.
          Мы написали баннерокрутилку свою. Во-первых она умеет много такого, что не умеет Adriver (и несколько таких вариантов приносят свои плоды в виде больших сумм). Во-вторых, она окупила себя (бешеные деньги, которые пришлось бы платить с текущим трафиком, в месяц превосходят в разы затраченное на разработку и сервера).

          Также что-то в принципе невозможно. У нас есть свой счетчик и уникальная инфа по предпочтениям посетителя, когда он ходит по нашим порталам. Никакой счетчик ни за какие деньги не будет делать такую кастомизацию для сбора и обработки такой инфы, одновременно вы никогда не сможете сделать хорошо (индивидуально) таргетированную рекламу без этих предпочтений

          >Типичный NIH.
          А иногда это доставляет удовольствие. Не без этого :)
          • –1
            Как показывает практика -в 90% форк будет несовместим, а изначальные косяки архитектуры потом вылезут боком.

            Типа, все существующие чужие решения обязательно имеют косяки архитектуры? Тяжело с таким подходом жить.
            • +1
              Нет, это два несвязанных утверждения.
              1. первое «в 90% форк будет несовместим»
              потому что в процессе допилки форк уйдет очень далеко. ничто не мешает это сделать, но свое ближе)))

              2. «изначальные косяки архитектуры потом вылезут боком»
              если взять решение потому, что нужно тупо простое и быстро, и забить на архитектурные кривые моменты, которые МОГУТ ОКАЗАТЬСЯ (а могут ине оказаться), то потом это выходит боком.

              чисто выводы из практики
              • –1
                Повторюсь еще раз: любовь к «там кривая архитектура, напишем сами» — это типичный NIH, основанный на ощущении собственного превосходства. И очень часто, в итоге, это ничем не оправдывается.
  • +9
    Меня печалит следующая ситуация: Есть, например, какое то стандартное решение (библиотека, cms, framеwork… не важно). Оно общепринятое, оно работает, считается правильным. Но со временем я начинаю понимать, что оно меня не устраивает. Слишком громоздкое. Многие вещи можно сделать намного проще, компактнее и удобнее. Часть функций можно реализовать только мучительно дописывая это решение, доставляя «костыли» и бешено «махая напильником».

    И вот, учтя все недостатки стандартного решения, и выписав все то, чего мне не хватало в нем я сажусь, и начинаю делать свой «велосипед». И тут же раздаются презрительные крики. «Фу, еще один велосипед!!!», «Не умничай, и жри то что дают стандартные решения!!!»
    • +11
      Типа того. Называется эффект Даннинга-Крюгера.



      [irony]Ведь известно, самые великие программисты — это критики в комментариях, самые великие писатели — рецензенты книг, самые великие режиссеры — кинокритики, и так далее. А сами авторы программ, текстов, постов, книг, фильмов — это так, начинающие вроде Боба Мартина, Кэмерона, Достоевского, куда им до Васи Пупкина![/irony]
    • +1
      А как это сложно при написании этой самой cmf/cms?
      Напишешь код, а потом на полпути думаешь, «а может лучше было бы zodb вместо mongodb?»
      Код уже написан и больше чем на половину работает…
  • –1
    Главная проблема велосипедов, что пишут их обычно не лучше уже существующих аналогов. Вот NGINX был лучше аналогов как Apache или lightHTTPD потому и взлетел. И все велосипеды так взлетают, если они несут в себе хорошую реализацию инновационных идей.
    А писать сотый шаблонизатор на PHP причем ничем не лучше чем уже существующие аналоги.
    • 0
      [irony]да ладно, вон, blitz получился крутым[/irony]
    • +1
      Главная проблема оценки «велосипед»\«инновация» — субъективность и ситуативность критериев «лучше»\«хуже».
      • 0
        Субъективность есть во всем в любом случае, но субъективность можно подкреплять умением использовать адекватные инструменты оценки. Так с задачей сравнения Apache VS NGINX легко справляется хороший benchmark инструмент, после чего видно, кто больше вам подходит, под вашу личную задачу.
  • +1
    Я тоже, как и многие комментаторы, не согласен с примерами в статье. Ну или с определением велосипеда.
    На мой взгляд «изобретение велосипеда» — это когда делают свое решение либо из-за незнания того что уже существуют готовые решения, либо из-за нежелания их изучать. Когда существует известное решение, но оно имеет свои недостатки — и человек хочет сделать своё решение, которое решает конкретные известные ему проблемы / недостатки готовых решений — это не изобретение велосипеда, это скорее прогресс.
    • 0
      Не все считают это прогрессом. Особенно когда отличия субъективны / могут существовать несколько вариантов решения проблемы
    • НЛО прилетело и опубликовало эту надпись здесь
  • +5
    Ваша статья занимательна, но главный тезис в ней в корне извращён. Все успешные примеры не имеют ничего общего с велосипедами. Велосипед — это написать свой код для сортировки массива. Велосипед — это придумать свой язык разметки (например, потому что ничего не знаешь про ХМЛ) или свой крутой стандарт для сохранения объектов (вместо JSON).

    Придумать конвейр для сборки машин — это не велосипед. Это инновация, скачек на 1 левел вверх.
    Google Search — это не велосипед!!! Это вход на уже высоко-конкурентный захваченный рынок.

    Ваша статья может даже вполне хороша сама по себе, но все упоминания слова «велосипед» из нее стоило бы вычеркнуть.
    • 0
      это написать свой код для сортировки массива

      Вы так говорите как будто существует только один алгоритм сортировки массива, если бы не было велосипедов в алгоритмах сортировки, то все бы сидели на пузырьковой сортировке.
      Google Search — это не велосипед!!! Это вход на уже высоко-конкурентный захваченный рынок.

      Ага если бы Google это делал сейчас, то вы бы первый кричали зачем этот велосипед, уже есть куча поисковиков. И Google не выходил сразу на рынок как завоеватель, какое-то время он вообще был убыточным. Это был именно, что велосипед, со временем доказавший, что он удачный велосипед.
      • +3
        Вы уверены, что все начиналось с пузырьковой сортировки? :) Мне кажется, она просто в обучении первой дается. А по сути да, это был бы хороший пример своего велосипеда.

        Я бы никогда не кричал, что это велосипед. Не надо за меня предполагать :)
        • +1
          Началось, наверное, с сортировки вставками с бинарным поиском (еще за много веков до изобретения компьютера). В любом случае, quicksort — вряд ли первый алгоритм. И не во всех случаях он самый быстрый, и не во всех случаях пригоден (вдруг вам нужна устойчивая сортировка in place — чем воспользуетесь?) Разные бывают ситуации.
        • 0
          Не уверен, но это пример одной из очевидных сортировок, которую я сам делал в школе, еще даже не зная, как она называется.
      • 0
        Что за бред про сортировку.
        Вы думаете, что новые алгоритмы появляются как-то так: «о! а давайте придумаем новый алгоритм сортировки, который делает все то же самое, но подругому!»? Каждый алгоритм, что сортировки, что любой другой, обладает определенными свойствами по потреблению времени и памяти, при этом какие-то лучше применять при частично отсортированных данных, итд. То, что все в основном используют квиксорт, а в школе учат про пузырька, не значит, что остальные все «велосипед».
  • +4
    > Итак — под велосипедом я в статье подразумеваю написание с нуля своего решения для определенного круга задач, когда уже имеются готовые чужие решения, которые эти задачи решили. И никаких связей с качеством не делаю — велосипед может быть как суперудачным, так и просто таким, что хочется плакать, глядя на него (вторых больше).

    «Переизобретать велосипед» подразумевает, что вы _могли_ взять чужое решение, но _решили_ взять своё. Переписали с нуля. Скажите, что могли взят готового в Google? Что, Yahoo в 1995 уже был opensource?

    Похожая ситуация с Фордом. У Форда не было возможности взять и бесплатно сделать ручную трудоемкую сборку, этот процесс тоже готовый не лежал. Он просто сделал процесс по-новому.
  • –6
    «любой клиент может получить автомобиль выкрашенный в тот цвет, в который он хочет — до тех пор пока этот цвет — чёрный».

    Форда капиталисты боготворят. Это при том, что далеко не каждый гражданин может купить автомобиль производства фабрики Форда.

    Однако, когда промышленность СССР производит много более разнообразные, но при этом доступные каждому жителю страны вещи, её ругают.

    Ох уж эти двойные стандарты…
    • +4
      Ну да двойные стандарты они такие, сравнить одну компанию со всей промышленностью СССР :)
      Это типа не каждый американец мог позволить себе форд, зато каждый советский гражданин мог позволить себе носки созданные советской промышленностью.
    • +1
      Форд потом за эту свою упертость расплатился потерей большой части рынка. Конкуренты смогли предложить больше опций. Форд был новатором, но и у него есть косяки, которые учли конкуренты и выбор у американцев был больше, чем у нас при советах.
    • +1
      Форда боготворят производственники, а не «капиалисты». Банкиров например Форд вообще презирал. Он осуждал рынок высоких цен, основанный на пафосе, и ставил во главу угла стратегическое сокращение производственных издержек, а не получение быстрой прибыли. Он говорил, если наладить процесс рационально, то и прибыль появится.

      Форд вырос в семье фермеров, он видел адский труд на земле и мечтал подарить фермерам трактор, именно так он увлекся техникой. Сначала помогал чинить паровые машины. Потом увлекся ДВС. Оттачивая двигатель и пытаясь сэкономить своё время, он сделал самодвижущуюся тележку. Сейчас мало кто об этом говорит, но через десяток лет, когда он отладил технологии на легковых авто (в том числе знаменитый «конвейер»), он-таки вернулся к своей юношеской мечте: буквально завалил тракторами весь мир. Даже в СССР работали тракторы Форд (кстати, в Союзе Форда очень почитали, именно как производственника).

      Серийные авто взвинтили деловой темп. А компактные и мощные трактора создали пищевое изобилие. В Пендосии, а затем в мире произошел промышленный бум (а следом две мировые войны). Обо всём этом и многом другом Форд писал в своей книге "Моя жизнь, мои достижения" — очень рекомендую.
  • +2
    Со временем понял, что если нужно сделать хороший быстрый сайт, нужно велосипедить. CMS это хорошо, но допиливать их нужно сильно, если захочется необычного и не штампового.
  • 0
    Изобретение велосипеда, безусловно, зло. Вот только не нужно путать велосипед с инновацией (ну или хотя бы просто улучшением). Nginx и тому подобнее не были велосипедами — они были инновациями. Основная проблема в том, где лежит грань между инновацией и велосипедом. Понимать объективные достоинства и недостатки решений — это признак высокого профессионализма. Для тех, кто такими навыками не обладает, кто использует то, что модно, знакомо, а не эффективно и так далее, любые инновации будут казаться велосипедами.

    И да, еще раз, я против того, что бы инновации называть велосипедами. У всего свое имя, зачем вносить путаницу? Выражение «изобретать велосипед» имеет вполне определенный смысл с негативным оттенком.

    Кстати, вот замечательная статья про NIH: www.joelonsoftware.com/articles/fog0000000007.html
  • +1
    Совершенно дурацкая статья.

    Где в этих примерах велосипеды? Люди сидели думали как улучшить текущее положение дел, вот и все. И им это удалось. Форд не проснулся однажды и не решил делать свой автомобиль с нуля, потому что все остальные автомобили отстой. Игорь Сысоев, как у вас же и написано в статье, изучал исходники Apache и размышлял как справиться с его ограничениями. А Google так вообще был изначально дипломной работой, и уважение ребятам, что они (в отличие от того же Yahoo) поняли как использовать свое детище.

    О чем эта статья? О том, что нужно не бояться поступать, как люди в примерах? Отлично. Но они не «изобретали велосипед».

    Изобретать велосипед или колесо, обычно так говорят о чем-то, что выполняет такую же функцию, как что-то уже давно написанное и работающее. Его пишут чаще всего именно из-за того, что «not invented here», что означает в 90% случаев, что человек просто не понял как этим пользоваться, в 5%, что нехватает какой-то мелкой функциональности, плюс еще какие-то непонятные отговорки.

    Написать свой проприетарный формат данных, когда уже есть куча библиотек для работы с json и xml — вот велосипед. Потратить месяц на написание с нуля своей библиотеки, вместо того, чтобы взять уже написанную и дописать что не хватает — вот велосипед. Речь идет о бесполезной работе по увеличению энтропии, которая плодит никому не нужный код, дублирующий давно существующую функциональность.

    Вот, что имеют в виду величайшие умы, когда речь заходит о велосипеде. А то, что написали вы в своей статье, к этому относится чуть менее, чем никак.
    Уж простите.
    • +1
      К великим людям, уж простите, вы и себя решили причислить?
  • +1
    А главное, кто все эти люди, которые понаставили плюсов?
    Я в шоке, куда катится это комьюнити.
    • 0
      habrahabr.ru/post/170379/#comment_5911673

      Просто вовсе не обязательно считать «не велосипедом» тот новый велосипед, который удался.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.