Деннис работает в 99designs , и в этой статье он описывает выбор, опыт и преимущества от создания API для дополнения нового сервиса Tasks .
«Хотите увидеть что-нибудь классное?»
Два года назад мой босс, Лахлан, пришел ко мне с секретным сайтом, который он взламывал для быстрого выполнения небольших задач по дизайну. Идея заключалась в том, чтобы клиенты представили краткое описание проекта, которое будет соответствовать дизайнеру, который ждет и готов к работе.
Мы собрали небольшую команду и провели следующие два месяца, работая как сумасшедшие, чтобы выпустить первый публичный релиз и доказать, что это то, чего хотели люди.
Изначальное видение Лахлана включало идею API для графического дизайна по образцу Amazon Mechanical Turk, но более красивого и разработанного специально для графического дизайна.
Мы продолжали совершенствовать задачи 99designs как потребительский сервис, но концепция API для графического дизайна продолжала оставаться в наших умах. Мы просто не были уверены, стоит ли это делать или нет.
Поворотный момент
Тогда мы были застигнуты врасплох. Мы обнаружили, что наши друзья в Сегменте создали автоматизированный инструмент с использованием PhantomJS, который отсканировал наш веб-сайт, чтобы обойти тот факт, что мы еще не создали API!
Я признаю — было довольно неловко быть избитым клиентом по поводу идеи, о которой мы думали в течение двух лет. С другой стороны, вероятно, нет лучшего способа проверить идею, чем сделать так, чтобы клиент сделал это за вас.
Хорошо, давайте сделаем это
Мы быстро поняли, что разработка API будет включать не только технический дизайн и реализацию. Аудитория и проблемы API сильно отличаются от всего, над чем мы работали раньше.
Scoping It Out
Одна из первых проблем, с которыми мы столкнулись, заключалась в выяснении того, какие функции нам нужны в API. У нас уже было несколько клиентов API, которым требовался довольно специфический набор функций для создания задач, но мы хотели открыть возможности и позволить идеи, о которых мы даже не задумывались. Мы приняли решение расширить область действия за пределы создания задачи, чтобы охватить весь рабочий процесс задачи, чтобы обеспечить более широкий набор возможностей.
Маркетинг для разработчиков
Еще один большой вопрос, с которым мы столкнулись, заключался в том, как продавать API? Нашими клиентами обычно являются предприниматели и малые предприятия. Целевая аудитория API сильно отличается от того, к чему мы привыкли.
Есть поговорка, что «если ты это построишь, они придут», но я не уверен, что это правда. Мы знали, что предстоит проделать большую работу, если мы хотим привлечь разработчиков. При рассмотрении API разработчики могут задать несколько вопросов:
«Почему я должен быть взволнован?»
«Каковы преимущества?»
Одна из стратегий, которую мы использовали для привлечения разработчиков, заключалась в том, чтобы иметь коллекцию убедительных примеров, которые вдохновляли бы новые идеи. Проблема состоит в том, что построение этих примеров требует от нас привлечения разработчиков для их создания. Мы решили эту проблему, работая вместе с группой партнеров по запуску в частной бета-версии перед нашей публичной презентацией, чтобы создать несколько отличных качественных приложений, которые мы могли бы продемонстрировать.
Мы также применили подход «собачьей упряжки» в 99designs, когда наша команда разработчиков работала над несколькими идеями приложений внутри компании, включая расширение для браузера и чат-бота, которые все использовали наш API в разработке.
Разработчик Onboarding
Часть привлечения лучших разработчиков означает, что им очень легко начать работу. В этом есть несколько аспектов, которые могут помочь разработчикам.
1. Документация
Очень важно иметь хорошо написанную документацию, которая поможет разработчикам понять, что делает API и как его использовать. Это означает наличие точной и актуальной справочной документации. Это также означает наличие множества практических руководств, учебных пособий и примеров кода.
2. Сообщество и поддержка
Привлечение лучших разработчиков также означает помощь, когда у них есть вопросы. Мы надеемся создать сообщество вокруг нашего API, что будет означать некоторый охват и защиту. Это может включать такие каналы, как списки рассылки, форумы и чат. Это также означает, что вы должны рассказать о своем API разработчикам — например, о том, что вы сейчас читаете!
3. Знакомство
Важно сделать наш API как можно более знакомым для разработчиков, что означает следование отраслевым стандартам и тенденциям. Мы провели некоторое исследование различных стилей API (например, REST vs RPC ) — и то, что мы обнаружили, удивило нас.
Одной из исследованных нами RPC-библиотек была библиотека Thrift, разработанная Facebook. Мы узнали о Thrift от одного из наших партнеров, который уже довольно успешно использовал его. Нам понравилась строгая типизация данных и интерфейсы, а генерация клиентского и серверного кода была довольно убедительной.
С другой стороны, REST — это массовая, почти подавляющая тенденция в отрасли. Однако мы обнаружили, что по-прежнему ведутся споры о том, как правильно сделать REST. Мы были немного удивлены тем, что инструменты и стандарты для создания REST API все еще не совершенны и противоречивы, хотя это гораздо более популярный стиль.
Такое ощущение, что индустрия страдает легким случаем синдрома «не изобретено здесь». Многие API REST изобретают свои собственные пользовательские схемы и заголовки для таких вещей, как аутентификация и подписывание запросов, а также непоследовательное использование глаголов HTTP и кодов состояния. Кажется, это один из тех случаев, когда «чем хуже, тем лучше».
Несмотря на недостатки, мы решили использовать стиль REST, потому что это стиль, который очень доступен и с которым легко начать, что действительно много значит.
Поддержка API: клиент вашего клиента — ваш клиент
Помимо поддержки наших партнеров-разработчиков, нам также необходимо убедиться, что наши партнеры могут эффективно поддерживать своих клиентов. 99designs довольно одержима, когда дело доходит до поддержки клиентов. Но если клиенты используют Задачи 99designs через интеграцию с партнерским API — нам не стоит вмешиваться в дела клиентов, которые не являются нашими. Однако иногда дела идут плохо, поэтому мы должны быть готовы к проблемам.
«Мне нужно, чтобы мой сайт был переработан в течение часа».
«Это слишком много работы».
Мы должны доверять нашим партнерам, чтобы поддержать их клиентов, как они выбирают, поэтому мы предоставили инструменты, чтобы помочь позаботиться об этом. На практике это означает включение уведомлений о событиях webhook, когда необходимо вмешаться в службу поддержки.
Что дальше?
Одна из самых больших предстоящих задач — полная поддержка международных клиентов. Задача начинается с языкового перевода и оплаты в местной валюте — вплоть до того, как мы подбираем клиентов для дизайнера, который им подходит.
Резюме
Если вы думаете о создании общедоступного API для вашего продукта, вот пять вещей, которые вы должны рассмотреть:
- Существует больше для создания API, чем для создания API.
- Партнеры по запуску — ваш друг.
- Создайте свой API-интерфейс, чтобы он был максимально простым в использовании.
- Проблемы усложняются при работе с клиентами клиентов.
- Будьте открыты для творческих идей приложений, которые вы не ожидали.
Мы очень рады возможностям, которые предоставит API для графического дизайна. В настоящее время мы находимся в частной бета-версии. Если вы заинтересованы в партнерстве, пожалуйста, свяжитесь с нами!