[pullquote align=right]
Томислав Кар из Infinum подсчитал как различается iOS и Android разработка
[/pullquote]
Мы уже давно понимали, что разработка на Android требует больше времени, чем на iOS. У нас есть доказывающие это метрики, и время представить их.
Если вы разрабатываете мобильное приложение на обе ОС, вы можете заметить, что Android занимает больше времени, чем iOS. Мы решили собрать статистику вместо того, чтобы просто довериться нашим чувствам.
Методология
Мы взяли данные по шести нашим проектам за последние полтора года. Проекты были выбраны соответственно следующим условиям:
- в проекте одинаковые приложения на iOS и Android;
- нет унаследованного кода или технического долга, которые могли бы испортить данные
Мы измеряли следующие параметры:
- строки кода;
- часы работы.
Строки кода
Мы собрали данные по строчкам кода (кроме пустых строк и комментариев) с помощью cloc.
Выводы таковы, что в среднем вы пишете на Android на 40% больше кода. Много из этого кода генерируется автоматически, но это все равно код, и его нужно читать, дебажить и поддерживать.
Кроме того, количество кода в проекте растет, если вы используете подход современной и чистой архитектуры в структуре мобильных приложений. Мы имеем под этим в виду то, что отличает презентационный слой от бизнес-логики, как MVP на Android или VIPER на iOS.
В этом случае — больше кода на самом деле хорошо.
Часы работы
Мы подсчитали часы работы над каждым проектом с помощью Productive.
Здесь вывод таков: вы тратите в среднем на 30% больше времени на Android-проекты. Как можно видеть в таблице, иногда разница может быть заметно меньше или больше, но медианное значение в нашем случае — 30%.
Мы не верим в то, что на это влияет компетентность разработчиков той или иной платформ, потому что наша команда одинакова хороша на обеих, и наш процесс HR не дискриминирует никого.
Так почему разработка на Android медленнее?
Это очень хороший вопрос. Мы обсуждали это долгое время и поняли, что это комбинация нескольких факторов:
- Просто больше кода — приложения на Android пишутся на Java, в котором просто больше слов, чем в Objective-C или Swift. Вы вынуждены писать больше. Очень часто больше кода — больше работы и больше потенциальных багов.
- Эмуляторы медленнее. Даже с GenyMotion Android-эмуляторы медленнее, чем на симуляторы iOS. Это замедляет весь процесс разработки.
- Фрагментация — больше устройств, на которых нужно проводить тесты, больше особенных багов, характерных только для одного производителя («Черт, эта ошибка появляется только на китайском телефоне, который продается только в Литве!»).
- Разметка XML — на Android разметка пишется вручную на XML, поэтому техники WYSIWYG используются реже, чем на iOS.
Что это значит?
Когда мы начинали аутсорс разработку на iOS и Android, мы предполагали, что обе ОС занимают примерно одинаковое время.
Мы отошли от этого два года назад и теперь закладываем на 20-30% больше времени на Android.
Если мы оцениваем приложение в 500 часов на iOS, то на Android нужно оценивать его в примерно 650 часов (и платить соответственно).
Каковы тренды?
Хорошо, что все менятся. Инструменты для Android становятся все лучше, так что, возможно, в будущем, «налог» на Android снизится. Только метрикам можно верить.
Конечно, эти метрики не учитывают все сценарии и задачи при разработке ПО. Но мы хотели просто сказать: Android требует больше времени.
Спасибо моему коллеге Ивану Косияну за помощь в подготовке этой статьи.