26 февраля 2013 в 12:44

Почему иногда не стоит изобретать велосипед из песочницы

В продолжение темы, почему иногда нужно делать свой велосипед, хочу дополнить и расширить эти мысли причинами, по которым этого делать не стоит.



Причина 1. Вы не знаете, как такие велосипеды устроены


Посмотрите внимательно на предыдущий топик. Генри Форд — с детства изучал технику. Его сестра как-то сказала, что в детстве любую игрушку старались спрятать от него, потому что он ее тотчас разберет на винтики. Работал инженером в «Электрической компании Эдисона», был совладельцем «Детройтской автомобильной компании». Он точно знал, что это такое — автомобиль. Он точно знал технические нюансы. Он точно знал, что черная краска сохнет два дня, а любая другая — две недели! Ну не из-за прихоти же он однажды сказал, что автомобиль будет только черным.

Игорь Сысоев, прежде чем делать свой nginx, уже имел «достаточно неплохой опыт работы с Apache — и как у системного администратора, и как у программиста».

Знаете ли вы, что вам предстоит на пути создания своего велосипеда? Или просто готовы окунуться с головой, не проверив глубину водоема?

Мы как-то по просьбе своего заказчика сделали реализацию почтовой рассылки, которая делала рассылку новостей зарегистрированным пользователям. И каково было удивление нашего заказчика, когда после первой такой рассылки его заблокировали как спаммера. Пришлось копать дальше, но в итоге оказалось, что гораздо проще интегрироваться с каким-нибудь MailChimp или UniSender и не изобретать велосипеда. Там не только все продумано, но есть еще и отчеты — сколько прочитало, сколько кликало по ссылкам, сколько нажали «отписаться от рассылки» и другие очень важные моменты, которые заказчик, попросивший «сделайте нам возможность разослать новости нашим пользователям», может захотеть сделать сразу же после реализации базового функционала.

Причина 2. Ваших денег хватит только на покупку готового велосипеда





Да, иногда очень тяжело рассказывать людям, что есть большая разница между покупкой готового GT Avalanche и наладкой конвейера, на котором этот Avalanche будет производиться. Плюс дизайн, технологии, маркетинг.

Обычно мы используем пример с BMW X6, но раз уж тема про велосипеды, пускай будет GT.

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

Здесь в дело вступает следующий, более основополагающий вопрос.

Причина 3. Вы работаете над созданием совершенно другого продукта


А над чем вы вообще работаете? Какой у вас план, какая стратегия? Действительно ли этот велосипед будет одной из ключевых особенностей вашего продукта? Или только небольшой фичей?

Делаете удобный сервис для поиска вакансий? Так сосредоточьтесь над инновациями именно в этом направлении! И если все, что вам приходит в голову — сделать еще одну почтовую рассылку, то, может быть, стоит вообще отложить создание такого стартапа? Отвлечься, изучить конкурентов. Подумать, в конце концов, над основными вопросами — мотивации к покупке и способности применять продукт, способности продукта прижиться в реальной среде, составить наглядные графики сравнения создаваемого продукта с конкурентами. Или прекратите обманывать себя — скажите, что вы делаете вовсе не сервис поиска вакансий, а новую службу рассылки.

Чем больше усилий будет вложено в достижение основных целей проекта, тем больше вероятность на успех. Ведь Гугл тратит не 80%, а лишь до 20% времени на эксперименты. Не больше. И не 20% на один велосипед, а 20% на все велосипеды. Оставшиеся «более 80%» тратится на достижение основных целей Гугла.

Как думаете, делал ли Форд свое колесо? А лампочку?

В качестве заключения


Наши заказчики иногда с удивлением смотрят на нас, когда мы задаем им подобные вопросы перед началом работы. И кажется, что таким образом мы уменьшаем объем работы, и что мы заинтересованы как раз таки в обратном. Но это не так. Есть общая карма. И нужно работать на общий результат. Если после выполнения вашей работы в мире поубавилось хаоса, или хотя бы наметился путь создания более эффективного окружения для жизни в этом мире — это и есть успех. Глубокое понимание целей и стратегии продукта, принятие их и участие в планировании — единственный способ добиться совместного успеха, когда вам доверяют гораздо больше, чем просто «кодить».
Алексей Волков @AIVolkov
карма
16,0
рейтинг 0,0
Веб-разработчик

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

  • 0
    блин, всегда думал. что слоган «Автомобиль может быть любого цвета, если этот цвет – черный» это у Rolls-Royce. как я ошибался.
    • 0
      Это не только Форд, но еще и производственная необходимость во имя достижения главной цели — дешевый автомобиль.
      • 0
        Форд все таки очень много сделал для достижения этой цели.
        ну и RR как не попадает имхо в категорию «дешевые автомобиль»
        в любом случае спасибо за информацию, которая ведет к штудированию в поисковых системах.
      • 0
        Ну и еще потому что в то время достаточно качественную автомобильную краску смогли сделать только черную :)
        • 0
          именно так
    • +3
      Форд говорил в другом контексте, у Генри получалось примерно следующее:
      — Наши покупатели могут перекрасить автомобиль в любой цвет, потому что мы их выпускаем чёрными.

      Т.е. он не настаивал, на том, что автомобиль может быть только чёрного цвета, как якобы его любят цитировать фанаты черных автомобилей.
  • 0
    Как думаете, делал ли Форд свое колесо? А лампочку?

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

    К тому же, то что у вас не получился велосипед, совсем не говорит о том, что у других тоже не получится. Тут скорее зависит о того как делать велосипед, если делать как вы, типа «заказчик попросил, нужно по быстрому что-то более менее рабочее склепать и содрать бабла с него» — то естественно это на 99% будет кривой никому не нужный велосипед. Другое дело когда в велосипед вкладываете душу и можно сказать живете им, когда чуть ли не во сне о нем размышляете. Тогда да может получиться, что-то толковое.

    Никто же не утверждает, что любой велосипед становится успешным — нет, успешными становятся лишь небольшой процент. Но если прекратить изобретать велосипеды — то и этого небольшого процента не будет.
    • 0
      Так, я не понял, где тут написано про «содрать бабала»?
      Есть же Agile/Scrum/etc, все по честному.
      • 0
        Ну это я так образно, основной момент в том, что вам не особо интересно было этим заниматься.
        • 0
          А в этом вопросе я полностью согласен.
          Ну, кроме «нам». Продуктовой команде. Она ведь задает тон в направлении разработки и в целях.
          Один заказчик ли это, или сборная команда с людьми аутсорсера.

          Иногда велосипед это лишь небольшая фича в целом продукте, а ведь в нее действительно придется вкладывать душу (причина 1), а иногда и вовсе сделать из этого отдельный продукт, и если на это денег нет (причина 2), то стоит сосредоточиться на главных целях проекта (причина 3).
          • +1
            Имхо, дело не в деньгах, а во вдохновении идеей. Думаете тот же Сысоев делал nginx ради денег? Делал, что называется for fun, просто изначально всё держится сугобо на любопытстве, интересно сможешь ли сделать велосипед по каким-либо параметрам заметно превосходящим аналоги. Делаешь наброски кода, сравниваешь как сделано у других, что можно было улучшить, и так постепенно погружаешься очень серьезно. Тот же Форд изначально не знал, что его идея сделать дешевый автомобиль обязательно выгорит, он вполне мог и обанкротиться. Но он был увлечен идеей.

            В принципе сам пишу подобный велосипед, потому тема близка, при том на таком очень консервативном сегменте софта, как бэкап сайтов. И пишу не потому, что не знаю о традиционных решениях, а потому что есть идеи как эти решения можно качественно улучшить. И тут до того увлекаешься, что за проверка очередной идеи этого велосипеда, можно легко не заметить как прошла ночь, да и уже следующий день заканчивается.
            • 0
              Это если делается в свободное от работы время.
              • 0
                Ну так перспективные велосипеды и нужно писать в свободное от основной работы время. Для того тот же Google и дает своим работникам время для свободы творчества.
                • 0
                  Насколько я понял, статья все же про велосипеды в рамках рабочих проектов. А не про отдельные велосипеды.
                  • 0
                    Так даже в статье указывается, что Google выделяет 20% времени на велосипеды. Да и упомянутый Сысоев делал nginx не потому, что это была его работа. Понятное дело, что нельзя на работе заниматься исключительно велосипедами.
  • +5
    Согласен с тем, что свои решения изобретать не всегда к месту, но больше всего опыта я получил именно изобретая свои велосипеды и продолжаю это делать.
  • 0
    С точки зрения бизнеса свое производство чего-то лучше покупка этого же у других при прочих равных условиях. Если продолжить тему машиностроения, то некоторые компании переходят чуть ли не на собственную выплавку.
  • +15
    Прямо схватка двух Капитанов Очевидность.
    И тут такой выходит третий КО и говорит «Всем молчать! Вы оба неправы!»

    Я работал в крупной компании, где мне постоянно говорили: «Используй старые наработки компании. У нас уже есть инструмент для этой задачи». В итоге ситуация доходила до абсурда, когда старую наработку было сложнее приспособить, чем написать аналогичное решение".

    «Не изобретайте велосипеды!», «Изобретайте велосипеды!» — просто две догмы.
    Вместо того чтобы попадать на крючок принципов нужно проводить постоянный анализ каждого инструмента: написать свой «велосипед» или взять уже готовое решение. А потом проводить повторный анализ спустя какое-то время его использования. Причем все это и так делают, выбирая API, компоненты, библиотеки, но по случаю с удовольствием холиварят. Ваш КО.
    • –1
      Вообще, говорят, что все уже было сказано до нас в библии. Но, почему-то люди продолжают писать книги и статьи.

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

      И, да, здравый смысл у всех разный.

      Второй КО.
    • 0
      Проблема велосипеда в том, что вы не знаете, что он у вас есть и какой он :-).

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

      Просто велосипеды обычно «не те». Их сложно изучать, не совсем понятна сфера применения, и почти невозможно модифицировать. Они напоминают «таблетки от головы» в шкафу. Какие-то белые кругляшки, в том году кому-то помогли от головной боли. Поможет ли вам? Не факт. Могло бы помочь, если заменить в них какой-нибудь калий на марганец — но это вообще из области фантастики.

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

    Мир не бывает белым и черным. Спорить с пеной у рта изобретать или не изобретать — это удел тех, кто в сущности не понимает смысл этих двух противоположных высказываний.

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

    — Да, я изучил какое-то количество популярных решений и объективно могу доказать, что конкретно в нашем случае лучше будет написать своё. Изобретай!

    — Да, я разбираюсь в том, как работает эта библиотека, она ужасна и от нее воняет. Но, мне нужно сделать апп за день. Мне нужно, чтобы он работал завтра. Не изобретай!

    — Я хочу понять как работает этот алгоритм / как делать 3д движки / как делать свой веб сервер, я знаю, что все уже есть готовое, но мне интересно сделать свое. Изобретай!

    А вы тут холивор затеяли опять…
    • 0
      Да какой холивар. Дополняющий друг друга список причин за «изобретай» и за «не изобретай».
      Хотя, все все равно сделают по своему.
  • 0
    Гугл, который выделяет (или выделял?)

    Выделяет, выделяет. Не понимаю, почему так распространился слух, что это не так.
    • 0
      Сотрудники гугла распространяют!
  • 0
    После этой статьи, чувствую, должен появится кто то, кто напишет статью «Пишите велосипеды».
  • 0
    Почти все сказанное верно.
    Но…
    Мой клиент рассылает 2 раза в неделю по 2000 писем — письма своим постоянным клиентам с новостями и подтверждениями заказа. Если использовать например указанный Вами mailchimp.com/pricing/ — у него в неделю будет уходить по $50. Реализовав отправку писем самостоятельно мы будем эти деньги экономить.
    Так что скорее получается не «не изобретайте велосипеды» а оценивайте, насколько усложнит проект свой велосипед вместо покупного Мерседеса. Если велосипед окупится в ближайшее же время — возможно он того стоит.
    • 0
      До 2000 подписчиков у них вообще бесплатно.
      И есть русскоязычные проекты, с Российскими ценами :) www.unisender.com/ru/prices/
      Мы с ними не работали, поэтому не стал их упоминать.
    • 0
      А в остальном — да, стоит хорошенько изучить вопрос, прежде чем принимать решение :)
  • 0
    Несколько причин, почему свой велосипед иногда нужен.

    1. Чужой велосипед — это внешняя зависимость.
    Зависит от догадки или расчетов лица принимающего решения, но кто вам сказал, что лучше платить за свои Google Docs,
    чем однажды проснуться и узнать, что все ваши расчеты либо недоступны (заблокированы), либо вы должны платить абонентку (в лучшем случае).

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

    И поймете, почему в РФ многие не доверяют свои данные онлайн-системам.

    Если вы думаете, что это только у нас — представьте, что на небольшую CRM, в которой у вас все,
    вдруг подал какой-нибудь монстр или тролль в суд, и ее заблокировали по решению суда.

    Про пожар у хостера MсХост все знают.

    2. Свой велосипед — это ноу-хау. Хотите вы того или нет,
    свое производство позволяет получать такие продукты, которые никогда не были возможны в природе.
    Опять же речь о целесообразности и принятии такого решения.

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

    Или баннерокрутилка. Она за время работы на наших highload сайтах уже давно себя окупила, и позволила создать такие рекламные места, которые потом у нас копировали.

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

    Вспомните, что Google платит Apple миллиард долларов, чтобы быть поисковиком №1 в Safari.
    И поймите силу инновации (не могу назвать велосипедом, но по сути — iPhone есть телефон, iPad есть планшет, принципиально нового нет, кроме интерфейса).

    3. Свой велосипед — это при верном подходе конкурентное преимущество.
    При неверном — ваша слабость.
    • 0
      все так, да
      а что за компания?

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