- PVSM.RU - https://www.pvsm.ru -
Цель этой статьи – убедить всех сомневающихся, что при плотной работе с клиентом можно сдвинуть даже бюрократические структуры и сильно поднять свою самооценку. Речь пойдёт о компании Evernote.
В 2015 году Лайв Тайпинг [1] стартовал разработку проекта для наших друзей из Австралии. Проект работал в нише контроля производительности сотрудников. За год работы мы прошли с клиентом несколько стадий изменения концепции и кропотливой работы над каждым новым изменением, которое клиент вносил уже на этапе разработки. Конечная стадия проекта предполагала глубокую интеграцию с сервисами Google Drive, Evernote и Toggl. По сути проект копировал часть функциональности этих сервисов и создавал новую механику.
С Google Drive всё прошло гладко. С Evernote – нет. О том, что пошло не так и как нам это удалось преодолеть, читайте под катом.
Задача была простая:
Проблема появлялась на шаге 4. Оговорюсь, что обнаружить её на этапе проектирования было сложно, так как документация Evernote выглядела полной. После реализации всех необходимых запросов к API Evernote нужный нам метод шаринга не работал. Мы спросили об этом на StackOverflow [2] и один из представителей компании Evernote ответил нам, что:
Все мобильные и веб SDK Evernote используют фреймворк Thrift [3]. Он позволяет интерпретировать свой код почти в любой язык. Я заметил, что при необновлённых SDK Evernote почти сразу обновляет свой Thrift-код на GitHub. И в новом Thrift-коде, конечно же, был метод shareNotebook. Мы решили обновить текущий код сами и даже сделали pull request [4]. К сожалению, даже так метод работал только наполовину: пользователь, расшаривший блокнот, видит, что блокнот расшарен, но пользователи, которым он был расшарен, его не видят.
Попробовав это, мы приняли решение поставить разработку на паузу и подождать пару месяцев с надеждой, что уж за пару месяцев такая большая компания как Evernote сможет произвести обновления своих мобильных SDK. К сожалению, компания Evernote, один из лидеров заметочных приложений с годовым доходом около 120 млн. $, за два месяца так и не сделала официального SDK для новой версии API с реализацией метода, описанного выше. Почему это произошло, остаётся только гадать.
Тут начинается история нашей маленькой победы. У нас было два варианта:
Мы решили не отступать и всеми путями добиться от Evernote решения. Пути было три:
LinkedIn не дал почти никаких результатов. Связавшись с поддержкой Evernote, мы тоже не смогли многого добиться. Они покорно приняли наши замечания об их явных ошибках, выслушали нашу позицию, сказали, что будут держать нас в курсе и похоронили наше предложение где-то в стенах своих уютных офисов.
Конечно же, клиент после такого отношения был в ярости и уже начал опускать руки. Но мы очень болели за этот проект и не хотели оставлять его на финальной стадии в таком состоянии.
Выход был один – найти открытые данные инженера из Evernote, который с нами связывался, и узнать, как мы можем ему помочь. Из открытой информации о нём, я нашёл только его Twitter. И впервые за пять лет я воспользовался функциональностью его чата! После небольшой переписки он поделился со мной своей болью от того легаси, который в данный момент находился на бэкенде.
Как я уже говорил выше, мы как разработчики приложений не могли воспользоваться этой функциональностью. Причина в том, что ключи third-party разработчиков и ключи, которые используются в официальных приложениях Evernote (веб-клиенте, мобильных приложениях и проч.), сделаны по-разному. Это очевидно с точки зрения безопасности и, конечно же, Evernote не мог предоставить нам такие же мастер-ключи для нашего приложения. Также эти мастер-ключи умели генерировать так называемый sharedKey, который был связующим между SharedNotebook клиента и LinkedNotebook пользователя, которому этот блокнот был расшарен. Я думаю, основной проблемой было то, что открытый sharedKey мог позволить злоумышленникам получать доступы к чужим блокнотам и эта функциональность была не в приоритете.
Результатом нашего общения был официальный ответ, что в открытой документации этот метод есть, но использовать его могут только сотрудники Evernote, а также стали понятны причины, почему это именно так. Но, в отличие от инженеров поддержки, Амар (так звали разработчика) смог назвать нам сроки по реализации этой функциональности, объяснить, почему она в данный момент не является приоритетной, и смог благополучно скоординировать релиз этой части API.
Через неделю я получил очередное письмо о том, что функциональность выкатили на продакшн и мы можем использовать её в приложении. Это было победой!
В работе над этим проектом члены команды несколько раз опускали руки по разным причинам. Однако важно то, что мы всегда верили в проект и в то, что мы способны приблизить клиента к успеху. Эта маленькая история показала, что желание помочь клиенту, вера в проект и персональная коммуникация между разработчиками могут приводить к успешным результатам.
Автор: Skunk
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/253708
Ссылки в тексте:
[1] Лайв Тайпинг: http://livetyping.com
[2] спросили об этом на StackOverflow: http://stackoverflow.com/questions/37069259/evernote-sdk-authenticate-to-shared-notebook/#comment61832650_37122308
[3] Thrift: https://thrift.apache.org/
[4] pull request: https://github.com/evernote/evernote-sdk-python/pull/51
[5] Источник: https://habrahabr.ru/post/327212/
Нажмите здесь для печати.