On commercializing nbdev – Hamel’s Blog - Hamel Husain
Хамель Хусейн объясняет, почему он решил не коммерциализировать nbdev — инновационный фреймворк для Python в духе грамотного и исследовательского программирования, над которым он работал в 2020–2023 годах вместе с Jeremy Howard и Wasim Lorgat. Главным препятствием для внедрения была сложность убедить других инженеров пользоваться nbdev: трение при онбординге и конфликты со стандартным стеком разработки (например, невозможность нормального код-ревью ноутбуков на GitHub без платного ReviewNB). Команда рассматривала идею «WordPress для разработчиков» — хостинговую платформу для nbdev, но взрыв генеративного ИИ (Stable Diffusion, а затем ChatGPT) сместил фокус fast.ai и самого автора в сторону консалтинга и работы с языковыми моделями. Хамель вынес ключевые уроки: любовь к проекту не равна готовности к коммерциализации, нужна сильная убеждённость хотя бы у одного человека, важно слушать интуицию, не бояться пивотов и строить собственный бренд. Он не исключает возвращения к nbdev и сейчас консультирует Posit, куда перешёл Wasim, по продукту и стратегии.
Несколько друзей спрашивали меня, почему я решил не коммерциализировать nbdev — особенно после того, как вложил в проект столько труда, вплоть до ухода с постоянной работы ради него. Поэтому я решил написать короткий пост, чтобы объяснить свои соображения.
Предыстория
nbdev — это новаторский фреймворк разработки ПО для Python, опирающийся на грамотное и исследовательское программирование. Я работал над nbdev с 2020 по 2023 год вместе с Jeremy Howard, а позднее и с Wasim Lorgat. Мне выпала честь и радость исследовать границы инструментов для разработчиков и исследовательского программирования, работая с очень талантливыми инженерами. Помимо создания инструмента, который многим пришёлся по душе, я и сам с удовольствием использовал nbdev в личных и рабочих проектах.
Возможности
В ходе продуктового исследования я опросил множество разработчиков из разных сфер, чтобы понять их боли и потребности. Все разработчики, с которыми я разговаривал, сталкивались с одной ключевой трудностью: убедить других инженеров пользоваться nbdev было сложно, если не невозможно.
Вот главные причины, мешавшие внедрению:
Трение при онбординге инженеров. Во многих компаниях уже существуют Python-проекты, и поддерживать разные способы работы бывает вредно, когда компания уже остановилась на одном подходе, вокруг которого выстроены процессы и инструменты. Конфликты с остальным стеком разработки: вести версионный контроль ноутбуков так, чтобы это было удобно для совместной работы, было (и до сих пор остаётся) мучением. На практике вы не можете проводить код-ревью ноутбуков на GitHub, не купив инструмент под названием ReviewNB. Поэтому вместо того чтобы убеждать людей пользоваться nbdev, приходится убеждать их пользоваться nbdev и ReviewNB. Это существенно повышает барьер для первоначального внедрения — ведь закупка ПО во многих организациях это нетривиальный процесс, в который вовлечены проверка безопасности, комплаенс, юристы и другие заинтересованные стороны.
Решение перечисленных выше проблем я рассматривал как потенциальные возможности для коммерциализации nbdev.
Смена фокуса
В конце концов Jeremy, Wasim и я остановились на идее «WordPress для разработчиков» — хостингового сайта, позволяющего людям создавать и делиться nbdev-проектами. Мы думали, что это отличный способ дать людям попробовать nbdev, ничего не устанавливая. Замысел состоял в том, чтобы сузить аудиторию до тех, кому интересно размещать проекты на платформе, поощряющей исследование и обмен, — похожей на Glitch, но такой же простой и практичной, как WordPress.
Примерно в то же время, когда мы начали обсуждать хостинговые инструменты, мир машинного обучения пережил тектонический сдвиг из-за взрыва генеративного ИИ, а именно Stable Diffusion. fast.ai, организация, создавшая nbdev, тоже меняла свой фокус. Главной задачей fast.ai было сделать глубокое обучение доступным как можно большему числу людей, и генеративный ИИ был слишком важен, чтобы его игнорировать. Соответственно, Jeremy сосредоточил всё своё внимание на курсе по Stable Diffusion.
Этот разворот вызвал некоторую турбулентность, пока мы балансировали между разными приоритетами: nbdev, исследованиями в области генеративного ИИ и зарабатыванием денег. В итоге мы остановились на предоставлении консалтинговых услуг по всему, что связано с fast.ai, в формате fast.ai partners — это позволило бы нам обеспечить себя финансово (bootstrap) и взять на себя более масштабную миссию fast.ai (включая генеративный ИИ и исследования). В конце концов я обнаружил, что раздробленный фокус по множеству направлений непродуктивен1, и решил отойти от всего, кроме консалтинга, чтобы вновь обрести опору.
Вскоре после этого на сцену вышел ChatGPT и вызвал в машинном обучении ещё более масштабные сдвиги — на порядки больше, чем его предшественники в области text-to-image. Очень быстро все мои клиенты заинтересовались языковыми моделями, и я обнаружил, что занимаюсь исключительно их операционализацией (навык, который я оттачивал, работая в машинном обучении более 20 лет). Кроме того, LLM глубоко изменили саму природу разработки ПО, особенно того рода разработки, для поддержки которой и был задуман nbdev2. Эти факторы вкупе с рассмотренными ранее подсказывали, что настало подходящее время отойти от nbdev и сосредоточиться на другом.
Чему я научился
В ходе этого процесса я усвоил несколько важных уроков:
То, что вы любите проект и считаете его полезным, ещё не означает, что он созрел для коммерциализации. Мне всегда было трудно обрести уверенность в том, что у nbdev есть хорошая бизнес-модель.3 Я пошёл по этому пути потому, что меня влекла идея начать бизнес с людьми, которые мне по-настоящему нравились. В итоге я понял, что хотя бы у одного человека должна быть сильная убеждённость в дополнение к радости от людей, с которыми работаешь, — а не что-то одно из двух.4 Ещё я понял, что важно быть честным с самим собой насчёт своего (и командного) уровня убеждённости и не пытаться выдавить то, чего нет. Прислушивайтесь к своим инстинктам. На этом пути я несколько раз игнорировал свои инстинкты. С возрастом я научился совершать эту ошибку гораздо реже, но здесь я мог бы поступить лучше. Не бойтесь пивотов. Думаю, мы избежали лишней суеты, держась подальше от ситуации, которая не выглядела перспективной. Я гораздо больше воодушевлён той работой, которой занимаюсь сейчас.5 Владейте собственным брендом. Мой профессиональный бренд всё сильнее связывался с fast.ai и моим другом Jeremy Howard. Я благодарен за рост, который пережил под этим наставничеством, — но я считаю важным выстраивать собственный, отличимый бренд и идентичность. Я обнаружил, что строить собственный бренд бывает непросто, когда работаешь над чужим проектом6, и с этим я как раз боролся. Жду с нетерпением, когда смогу заняться этим основательнее.
Дальнейшие направления
Подозреваю, что я ещё не до конца закончил с nbdev. Возможно, я вернусь к проекту или связанным с ним идеям, когда придёт время. Меня воодушевляет работа, которую Posit ведёт в области грамотного и исследовательского программирования, включающая многие идеи, проработанные в nbdev. Wasim даже присоединился к команде Posit, так что мне любопытно, что они придумают.7
Что касается того, чем я займусь дальше, — свои мысли на этот счёт мне придётся приберечь для другого поста 😊.
Сноски
За время этого процесса я несколько раз выгорал, но тогда не понимал почему. Неудивительно, что корнем проблемы была попытка сосредоточиться на слишком многих вещах одновременно.↩︎ Посмотрите эту демонстрацию, чтобы получить представление о том, как может выглядеть программирование с LLM, особенно с ноутбуками.↩︎ Проблема с хостинговым решением в том, что я и сам не хотел бы им пользоваться. Не могу представить, чтобы я стал размещать код где-то, кроме GitHub/GitLab.↩︎ Без общей убеждённости нет того клея, что держит всех вместе, и люди могут разойтись.↩︎ Я расскажу об этом подробнее в одном из будущих постов.↩︎ Я не считаю, что так бывает всегда, но это может быть верно в зависимости от динамики внутри группы.↩︎ Ранее мы сотрудничали с Posit и JJ Allaire и построили nbdev поверх Quarto. Сейчас я консультирую Posit по их продукту и стратегии. У них в дорожной карте есть и другие проекты, которые я пока не могу раскрыть.↩︎