Live Typing Против Evernote: Как Мы Лаяли На Слона

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

Речь пойдет о компании Evernote.



Начало

В 2015 году Живой ввод текста Мы начали разработку проекта для наших друзей из Австралии.

Проект работал в нише мониторинга продуктивности сотрудников.

За год работы мы прошли с клиентом несколько этапов изменения концепции и кропотливой работы над каждым новым изменением, которое клиент вносил уже на этапе разработки.

Завершающий этап проекта предусматривал глубокую интеграцию с сервисами Google Drive, Evernote и Toggl. По сути, проект скопировал часть функционала этих сервисов и создал новую механику.

С Google Диском все прошло гладко.

Не с Evernote. О том, что пошло не так и как нам удалось это преодолеть, читайте под катом.



Live Typing против Evernote: как мы лаяли на слона

Задача была проста:

  1. Клиент входит в Evernote с помощью нашего мобильного приложения.

  2. Создает блокнот с заметками внутри нашего приложения.

  3. Находит список пользователей, с которыми он хочет поделиться этим блокнотом.

  4. Нажимает кнопку «Поделиться», и пользователи получают электронное письмо с приглашением использовать этот блокнот.
  5. Пользователи подтверждают приглашение, и блокнот клиента появляется в интерфейсе их родного приложения Evernote.
Проблема появилась на 4 шаге.

Скажу, что на этапе проектирования ее было сложно обнаружить, так как документация Evernote выглядела полной.

После выполнения всех необходимых запросов к Evernote API нужный нам метод обмена не заработал.

Мы спросил об этом на StackOverflow и один из представителей Evernote ответил нам, что:

  1. Метод и документация есть, но использовать его нельзя, могут только представители Evernote.
  2. Официальная документация Evernote устарела и этот метод вообще не будет работать, так как уже существует новый метод ShareNotebook, к которому необходимо получить доступ после обновления SDK. Другими словами, SDK существует в свободном доступе, но он неактуален.

Все мобильные и веб-SDK Evernote используют эту платформу.

Бережливость .

Это позволяет интерпретировать ваш код практически на любой язык.

Я заметил, что когда SDK не обновляется, Evernote почти сразу обновляет свой Thrift-код на GitHub. И в новом коде Thrift, конечно же, появился метод ShareNotebook. Мы решили сами обновить текущий код и даже сделали это запрос на вытягивание .

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

Попробовав это, мы решили приостановить разработку и подождать пару месяцев в надежде, что через пару месяцев такая крупная компания, как Evernote, сможет обновить свой мобильный SDK. К сожалению, Evernote, один из лидеров приложений для заметок с годовым доходом около $120 млн, за два месяца так и не сделал официальный SDK для новой версии API, реализующей описанный выше метод. Почему это произошло, можно только догадываться.



Как мы добились изменений в API

Здесь начинается история нашей маленькой победы.

У нас было два варианта:

  1. Отступите и скажите клиенту, что мы ничего не можем сделать, потому что не можем переместить такую машину, как Evernote.
  2. Примите меры и убедитесь, что все SDK, а также обновления API обновлены.

Мы решили не отступать и во что бы то ни стало добиться решения от Evernote. Было три пути:
  1. Найдите людей, которые принимают решения через LinkedIn. Дело в том, что в какой-то степени это связано с репутацией Evernote и мы уверены, что их менеджеры постараются быстро замять проблему.

  2. Свяжитесь со службой поддержки Evernote напрямую, периодически подключая клиент.
  3. Возьмите дело в свои руки и найдите инженера, который работает над выпуском Evernote SDK, узнайте планы на новый релиз и, возможно, предложите ему некоторую помощь.

LinkedIn почти не дал результатов.

Мы также не смогли добиться многого, обратившись в службу поддержки Evernote. Они смиренно приняли наши замечания по поводу своих очевидных ошибок, выслушали нашу позицию, сказали, что будут держать нас в курсе и похоронили наше предложение где-то в стенах своих уютных кабинетов.

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

Но мы очень болели за этот проект и не хотели оставлять его в таком состоянии на завершающем этапе.

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

Из общедоступной информации о нем я нашел только его Твиттер.

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

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

Причина в том, что ключи сторонних разработчиков и ключи, которые используются в официальных приложениях Evernote (веб-клиенте, мобильных приложениях и т. д.), сделаны по-разному.

Это очевидно с точки зрения безопасности и, конечно же, Evernote не смог предоставить нам одинаковые мастер-ключи для нашего приложения.

Также эти главные ключи смогли сгенерировать так называемый общий ключ, который был связующим звеном между SharedNotebook клиента и LinkedNotebook пользователя, которому был предоставлен общий доступ к этому блокноту.

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

Результатом нашего общения стал официальный ответ, что этот метод есть в открытой документации, но использовать его могут только сотрудники Evernote, и стали понятны причины, почему это так.

Но, в отличие от инженеров поддержки, Амар (так звали разработчика) смог сообщить нам сроки реализации этого функционала, объяснить, почему это не является приоритетом на данный момент, и смог спокойно согласовать выпуск эта часть API.

Live Typing против Evernote: как мы лаяли на слона

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

Это была победа!

Заключение

Работая над этим проектом, члены команды несколько раз сдавались по разным причинам.

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

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

Теги: #evernote #работа с клиентом #бережливость #проблемы разработки ПО #интеграция сервисов #открытый исходный код #разработка мобильных приложений #разработка Android #api

Вместе с данным постом часто просматривают: