SlideShare a Scribd company logo
1 of 14
История одного
портирования
Докладчик: Алексей Зиновьев
Super Puper Library SDK
Яблоко от
Андроида
недалеко
падает
● Кусок JS, который надо портировать под Android & iOS
● Вызовы сервера и много глобальных переменных,
ведущих в никуда
● Библиотека для других разработчиков, теперь банановый
Моя первая мысль
● Я продамся
яблофилам?
● Я продамся java-
скриптизерам?
● НЕНАВИСТЬ!!!!!!
Мой первый коммерческий
проект на Android
Что такое делать библиотеку на
аутсорсе
● Другие
разработчики
обязательно
напишут злой
отзыв
● Поддержка
ляжет на плечи
заказчика
● Превосходная
документация
● Тестовое приложение,
использующее вашу
библиотеку
А кому это надо?
И как с ним говорить?
● Два индуса и один разработчик
● Индусы ездят в Индию каждую неделю и отвечают
изредка на 1 вопрос из 10.
● Простые WASP разработчики не многословны и суровы
● Отличная возможность прокачать hinglish
● Доминирование письменных коммуникаций
● Hangout животворящий в лицах
Фаза исследования
● Заказчик хочет от нас решения всех проблем
● Аккуратные аналитические документы с плюсами и
минусами, выверенные native speakerом
● Фаза аналитики повлияла на конечные оценки и
архитектуру библиотеки
● Максимум вопросов на старте + прототипирование
экономит время и снижает риски
Они следят за нами
● Одной из задач был вопрос
авторизации клиента, эдакие
мобильные куки
● Легальность и лицензирование
подобной деятельности
● OpenUDID, IDFA, MAC - адрес,
собственный ID
● Единый среди всех
приложений, использующих
данную библиотеку
● Политика Apple
Библиотека для Android
● Library Project или real jar
● Проблемы с ресурсами
● Открытость кода или
закрытость
● Необходимо тестирующее
приложение (а то и парочка)
● Debug версия библиотеки с
Toasts
● Тестировщик тестирует не lib, а
тестирующие приложения
● Последние два пункта лишние?
Библиотека для iOS
● Открытый код или static library
● Сложный delpoy для разных
версий iOS
● Директивы компиляции
● Разные Targets для сборки
● 1 код, n сборок
● Разные фреймворки для
реализации одной фичи в
разных версиях iOS
Docs
● Берёшь хорошую документацию и выгрызаешь её
изнутри
● Документация для пользователей и будущих
разработчиков бибилиотеки
● JavaDocs + их аналог для private методов
● DevCases в коде и диаграммах
● Проверка документации техническим native speakerом
● Даешь коллеге, который, прочтя ее, попробует
использовать библиотеку
Тестирование
● Ошибки в REST заказчика
● 0 строк документации
● Неясные цели куска кода для портирования
● Задержка в 2 дня для верификации правильности
запроса
● Отрицание заказчиком текущих проблем
Итоги
● Все довольны
● Заказчик написал, что я задал
слишком много вопросов и им
пришлось поработать, исправляя
баги в своем REST
● Все мобильные архитектуры
похожи
● iOS расширил мои "мобильные"
возможности
● На JS я написал небольшую игру
про бояр на LudumDare

More Related Content

What's hot

Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
SBTech
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest
 

What's hot (20)

Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
 
Как мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.RuКак мы делаем раскладку Календаря@Mail.Ru
Как мы делаем раскладку Календаря@Mail.Ru
 
Progopedia - OSDN
Progopedia - OSDNProgopedia - OSDN
Progopedia - OSDN
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
 
О пользе Open Source
О пользе Open SourceО пользе Open Source
О пользе Open Source
 
Golang
GolangGolang
Golang
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
Советы бывалого тестировщика менеджеру проектов
Советы бывалого тестировщика менеджеру проектовСоветы бывалого тестировщика менеджеру проектов
Советы бывалого тестировщика менеджеру проектов
 
Введение в язык программирования Go
Введение в язык программирования GoВведение в язык программирования Go
Введение в язык программирования Go
 
Desktop-like Games. How and why?
Desktop-like Games. How and why?Desktop-like Games. How and why?
Desktop-like Games. How and why?
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
ньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройствньюансы разработки видео для мобильных устройств
ньюансы разработки видео для мобильных устройств
 
1. Введение в Java
1. Введение в Java1. Введение в Java
1. Введение в Java
 
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
 
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016
 
Зачем нужен Go?
Зачем нужен Go?Зачем нужен Go?
Зачем нужен Go?
 
Python dependencies
Python dependenciesPython dependencies
Python dependencies
 
Опыт Автоматизации тестирования
Опыт Автоматизации тестированияОпыт Автоматизации тестирования
Опыт Автоматизации тестирования
 

Viewers also liked

Yii2 - от Alpha до GA (release)
Yii2 - от Alpha до GA (release)Yii2 - от Alpha до GA (release)
Yii2 - от Alpha до GA (release)
Alexandr Bordun
 
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
it-people
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 

Viewers also liked (15)

Silver Inning Foundation Sugestions for Draft NCSC BILL 2014
Silver Inning Foundation Sugestions for Draft NCSC BILL 2014Silver Inning Foundation Sugestions for Draft NCSC BILL 2014
Silver Inning Foundation Sugestions for Draft NCSC BILL 2014
 
Crypto Coin Wallet Cards Files 301 Citation of Prior Artwork
Crypto Coin Wallet Cards Files 301 Citation of Prior ArtworkCrypto Coin Wallet Cards Files 301 Citation of Prior Artwork
Crypto Coin Wallet Cards Files 301 Citation of Prior Artwork
 
Digital marketing designer
Digital marketing designerDigital marketing designer
Digital marketing designer
 
Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.Google Maps. Zinoviev Alexey.
Google Maps. Zinoviev Alexey.
 
"Говнокод-шоу"
"Говнокод-шоу""Говнокод-шоу"
"Говнокод-шоу"
 
Yii2 - от Alpha до GA (release)
Yii2 - от Alpha до GA (release)Yii2 - от Alpha до GA (release)
Yii2 - от Alpha до GA (release)
 
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
 
Алгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерностиАлгоритмы и структуры данных BigData для графов большой размерности
Алгоритмы и структуры данных BigData для графов большой размерности
 
Big data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsBig data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphs
 
Hadoop Jungle
Hadoop JungleHadoop Jungle
Hadoop Jungle
 
Google I/O туда и обратно.
Google I/O туда и обратно.Google I/O туда и обратно.
Google I/O туда и обратно.
 
Google Docs. Zinoviev Alexey
Google Docs. Zinoviev AlexeyGoogle Docs. Zinoviev Alexey
Google Docs. Zinoviev Alexey
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
 
Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)
 

Similar to How to port JavaScript library to Android and iOS

Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12
HappyDev
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Sergey Polazhenko
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJ
Ivan Golodov
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
ITCrowd Almaty
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Anthony Marchenko
 

Similar to How to port JavaScript library to Android and iOS (20)

Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
Собрать нельзя клонировать. Как выбрать подход к созданию кроссплатформенных ...
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12
 
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав БахмутовGo в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
 
«Велогосипед», Данил Ильиных
«Велогосипед», Данил Ильиных«Велогосипед», Данил Ильиных
«Велогосипед», Данил Ильиных
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма..."Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
 
Анализ доменной зоны TJ
Анализ доменной зоны TJАнализ доменной зоны TJ
Анализ доменной зоны TJ
 
Использование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииИспользование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложении
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 

More from Alexey Zinoviev

HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
Alexey Zinoviev
 

More from Alexey Zinoviev (19)

Kafka pours and Spark resolves
Kafka pours and Spark resolvesKafka pours and Spark resolves
Kafka pours and Spark resolves
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
 
JavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projectsJavaDayKiev'15 Java in production for Data Mining Research projects
JavaDayKiev'15 Java in production for Data Mining Research projects
 
Joker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDBJoker'15 Java straitjackets for MongoDB
Joker'15 Java straitjackets for MongoDB
 
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
 
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
Python's slippy path and Tao of thick Pandas: give my data, Rrrrr...
 
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
Thorny path to the Large-Scale Graph Processing (Highload++, 2014)
 
Joker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data ScientistJoker'14 Java as a fundamental working tool of the Data Scientist
Joker'14 Java as a fundamental working tool of the Data Scientist
 
First steps in Data Mining Kindergarten
First steps in Data Mining KindergartenFirst steps in Data Mining Kindergarten
First steps in Data Mining Kindergarten
 
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
EST: Smart rate (Effective recommendation system for Taxi drivers based on th...
 
Android Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find youAndroid Geo Apps in Soviet Russia: Latitude and longitude find you
Android Geo Apps in Soviet Russia: Latitude and longitude find you
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)ALMADA 2013 (computer science school by Yandex and Microsoft Research)
ALMADA 2013 (computer science school by Yandex and Microsoft Research)
 
GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!GDG Devfest Omsk 2013. Year of events!
GDG Devfest Omsk 2013. Year of events!
 
Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012Поездка на IT-DUMP 2012
Поездка на IT-DUMP 2012
 
MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?
 
ORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs HibernateORM battle. MyBatis vs Hibernate
ORM battle. MyBatis vs Hibernate
 
GDG DevFest 2012
GDG DevFest 2012GDG DevFest 2012
GDG DevFest 2012
 

How to port JavaScript library to Android and iOS

  • 2. Super Puper Library SDK Яблоко от Андроида недалеко падает ● Кусок JS, который надо портировать под Android & iOS ● Вызовы сервера и много глобальных переменных, ведущих в никуда ● Библиотека для других разработчиков, теперь банановый
  • 3. Моя первая мысль ● Я продамся яблофилам? ● Я продамся java- скриптизерам? ● НЕНАВИСТЬ!!!!!!
  • 5. Что такое делать библиотеку на аутсорсе ● Другие разработчики обязательно напишут злой отзыв ● Поддержка ляжет на плечи заказчика ● Превосходная документация ● Тестовое приложение, использующее вашу библиотеку
  • 6. А кому это надо?
  • 7. И как с ним говорить? ● Два индуса и один разработчик ● Индусы ездят в Индию каждую неделю и отвечают изредка на 1 вопрос из 10. ● Простые WASP разработчики не многословны и суровы ● Отличная возможность прокачать hinglish ● Доминирование письменных коммуникаций ● Hangout животворящий в лицах
  • 8. Фаза исследования ● Заказчик хочет от нас решения всех проблем ● Аккуратные аналитические документы с плюсами и минусами, выверенные native speakerом ● Фаза аналитики повлияла на конечные оценки и архитектуру библиотеки ● Максимум вопросов на старте + прототипирование экономит время и снижает риски
  • 9. Они следят за нами ● Одной из задач был вопрос авторизации клиента, эдакие мобильные куки ● Легальность и лицензирование подобной деятельности ● OpenUDID, IDFA, MAC - адрес, собственный ID ● Единый среди всех приложений, использующих данную библиотеку ● Политика Apple
  • 10. Библиотека для Android ● Library Project или real jar ● Проблемы с ресурсами ● Открытость кода или закрытость ● Необходимо тестирующее приложение (а то и парочка) ● Debug версия библиотеки с Toasts ● Тестировщик тестирует не lib, а тестирующие приложения ● Последние два пункта лишние?
  • 11. Библиотека для iOS ● Открытый код или static library ● Сложный delpoy для разных версий iOS ● Директивы компиляции ● Разные Targets для сборки ● 1 код, n сборок ● Разные фреймворки для реализации одной фичи в разных версиях iOS
  • 12. Docs ● Берёшь хорошую документацию и выгрызаешь её изнутри ● Документация для пользователей и будущих разработчиков бибилиотеки ● JavaDocs + их аналог для private методов ● DevCases в коде и диаграммах ● Проверка документации техническим native speakerом ● Даешь коллеге, который, прочтя ее, попробует использовать библиотеку
  • 13. Тестирование ● Ошибки в REST заказчика ● 0 строк документации ● Неясные цели куска кода для портирования ● Задержка в 2 дня для верификации правильности запроса ● Отрицание заказчиком текущих проблем
  • 14. Итоги ● Все довольны ● Заказчик написал, что я задал слишком много вопросов и им пришлось поработать, исправляя баги в своем REST ● Все мобильные архитектуры похожи ● iOS расширил мои "мобильные" возможности ● На JS я написал небольшую игру про бояр на LudumDare