Цель этой статьи — убедить всех сомневающихся в том, что, работая в тесном контакте с клиентом, можно даже сдвинуть бюрократические структуры и значительно повысить свою самооценку.
Речь пойдет о компании Evernote.
Начало
В 2015 году Живой ввод текста Мы начали разработку проекта для наших друзей из Австралии.Проект работал в нише мониторинга продуктивности сотрудников.
За год работы мы прошли с клиентом несколько этапов изменения концепции и кропотливой работы над каждым новым изменением, которое клиент вносил уже на этапе разработки.
Завершающий этап проекта предусматривал глубокую интеграцию с сервисами Google Drive, Evernote и Toggl. По сути, проект скопировал часть функционала этих сервисов и создал новую механику.
С Google Диском все прошло гладко.
Не с Evernote. О том, что пошло не так и как нам удалось это преодолеть, читайте под катом.
Задача была проста:
- Клиент входит в Evernote с помощью нашего мобильного приложения.
- Создает блокнот с заметками внутри нашего приложения.
- Находит список пользователей, с которыми он хочет поделиться этим блокнотом.
- Нажимает кнопку «Поделиться», и пользователи получают электронное письмо с приглашением использовать этот блокнот.
- Пользователи подтверждают приглашение, и блокнот клиента появляется в интерфейсе их родного приложения Evernote.
Скажу, что на этапе проектирования ее было сложно обнаружить, так как документация Evernote выглядела полной.
После выполнения всех необходимых запросов к Evernote API нужный нам метод обмена не заработал.
Мы спросил об этом на StackOverflow и один из представителей Evernote ответил нам, что:
- Метод и документация есть, но использовать его нельзя, могут только представители Evernote.
- Официальная документация Evernote устарела и этот метод вообще не будет работать, так как уже существует новый метод ShareNotebook, к которому необходимо получить доступ после обновления SDK. Другими словами, SDK существует в свободном доступе, но он неактуален.
Это позволяет интерпретировать ваш код практически на любой язык.
Я заметил, что когда SDK не обновляется, Evernote почти сразу обновляет свой Thrift-код на GitHub. И в новом коде Thrift, конечно же, появился метод ShareNotebook. Мы решили сами обновить текущий код и даже сделали это запрос на вытягивание .
К сожалению, даже в этом случае метод сработал только наполовину: пользователь, который поделился блокнотом, видит, что блокнот является общим, но пользователи, которым он был предоставлен, не видят этого.
Попробовав это, мы решили приостановить разработку и подождать пару месяцев в надежде, что через пару месяцев такая крупная компания, как Evernote, сможет обновить свой мобильный SDK. К сожалению, Evernote, один из лидеров приложений для заметок с годовым доходом около $120 млн, за два месяца так и не сделал официальный SDK для новой версии API, реализующей описанный выше метод. Почему это произошло, можно только догадываться.
Как мы добились изменений в API
Здесь начинается история нашей маленькой победы.У нас было два варианта:
- Отступите и скажите клиенту, что мы ничего не можем сделать, потому что не можем переместить такую машину, как Evernote.
- Примите меры и убедитесь, что все SDK, а также обновления API обновлены.
- Найдите людей, которые принимают решения через LinkedIn. Дело в том, что в какой-то степени это связано с репутацией Evernote и мы уверены, что их менеджеры постараются быстро замять проблему.
- Свяжитесь со службой поддержки Evernote напрямую, периодически подключая клиент.
- Возьмите дело в свои руки и найдите инженера, который работает над выпуском Evernote SDK, узнайте планы на новый релиз и, возможно, предложите ему некоторую помощь.
Мы также не смогли добиться многого, обратившись в службу поддержки Evernote. Они смиренно приняли наши замечания по поводу своих очевидных ошибок, выслушали нашу позицию, сказали, что будут держать нас в курсе и похоронили наше предложение где-то в стенах своих уютных кабинетов.
Конечно, клиент был в ярости после такого отношения и уже начал сдаваться.
Но мы очень болели за этот проект и не хотели оставлять его в таком состоянии на завершающем этапе.
Выход был только один — найти открытые данные инженера из Evernote, который к нам обратился, и узнать, чем мы можем ему помочь.
Из общедоступной информации о нем я нашел только его Твиттер.
И впервые за пять лет я воспользовался его функционалом чата! После небольшой переписки он поделился со мной своей болью от легаси, которая сейчас находилась на бэкенде.
Как я уже говорил выше, мы как разработчики приложений не смогли воспользоваться этим функционалом.
Причина в том, что ключи сторонних разработчиков и ключи, которые используются в официальных приложениях Evernote (веб-клиенте, мобильных приложениях и т. д.), сделаны по-разному.
Это очевидно с точки зрения безопасности и, конечно же, Evernote не смог предоставить нам одинаковые мастер-ключи для нашего приложения.
Также эти главные ключи смогли сгенерировать так называемый общий ключ, который был связующим звеном между SharedNotebook клиента и LinkedNotebook пользователя, которому был предоставлен общий доступ к этому блокноту.
Я думаю, основная проблема заключалась в том, что публичный общий ключ мог позволить злоумышленникам получить доступ к записным книжкам других людей, и эта функциональность не была приоритетом.
Результатом нашего общения стал официальный ответ, что этот метод есть в открытой документации, но использовать его могут только сотрудники Evernote, и стали понятны причины, почему это так.
Но, в отличие от инженеров поддержки, Амар (так звали разработчика) смог сообщить нам сроки реализации этого функционала, объяснить, почему это не является приоритетом на данный момент, и смог спокойно согласовать выпуск эта часть API.
Через неделю я получил еще одно письмо, в котором говорилось, что функционал выкачен в производство и мы можем использовать его в приложении.
Это была победа!
Заключение
Работая над этим проектом, члены команды несколько раз сдавались по разным причинам.Однако важно то, что мы всегда верили в проект и в свою способность приблизить клиента к успеху.
Эта маленькая история показала, что желание помочь клиенту, вера в проект и личное общение между разработчиками могут привести к успешным результатам.
Теги: #evernote #работа с клиентом #бережливость #проблемы разработки ПО #интеграция сервисов #открытый исходный код #разработка мобильных приложений #разработка Android #api
-
Как Сбросить Пароль На Почте Yahoo
19 Oct, 24 -
Прослушивание Правок В Википедии
19 Oct, 24