en ru

Как делались продукты в Maemo

2019-10-21

Любой проект, который выходит за рамки персонального хобби, является в первую очередь предприятием с общественным характером производства. То есть основа всего - люди. Сами по себе средства производства бесполезны без людей. Но чтобы получить хоть какой-то значимый результат от людской деятельности, эта деятельность должна быть организована, отношения людей - структурированы.

Когда-то давно я работал в Нокии в проекте Maemo. В этой статье я просто выпишу то, что ещё помню о том, каким способом была организована разработка таких продуктов как Nokia N9.

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

В Нокии иерархическая структура имела огромный размер и несколько измерений.

Наверное, начинать надо с платформ. Это условное название, потому что слово “платформа” использовалось в разных значениях, но обычно им обозначали базовую операционную систему, на основе которой разрабатывались продукты. Были платформы S40, S60, WindowsPhone и Maemo. Так что строго говоря Maemo был не проектом, а платформой. У каждой платформы был свой большой менеджер.

На основе платформ велись программы возглавляемые соответствующими менеджерами программ. Границы программы определялись базовой конфигурацией железа.

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

Где-то сбоку были ещё менеджеры конфигураций, отвечавшие за конфигурацию продуктов для разных рынков. Например, на встроенных картах Nokia N9, которые продавались в Китае пользователи видели Тайвань частью Китая и т.д. На каких-то рынках по закону камера не должна фотографировать беззвучно и тому подобное.

Обычные разработчики были организованы в команды. Каждая команда занималась какой-то одной подсистемой платформы. Например, команда телефонии и прочего real-time communication, команда applications (калькулятор, галерея изображений и прочее), команда application framework (библиотеки для использования в приложениях), команда imaging (работа с камерой), команда browser (интернет-браузер), команда multimedia (работа со звуком), команда system software (низкоуровневая часть, ядро системы и адаптация к железу) и множество ещё подобных. Кроме них были ещё команды, которые функциональность непосредственно в продукты не доставляли, но обеспечивали работу основных команд. Без них продукт был бы невозможен:

  • команда SDK - кросс-компиляторы, тулчейны;
  • команда performance занималась оптимизацией и поиском узких мест, чтобы устройство не тормозило и батарейку не садило;
  • команда release & integration - наверное, самая важная команда, которая занималась как раз разработкой и сопровождением тех самых инструментов совместной работы, котрые позволяли в автоматическом режиме (до определённой степени) интегрировать результаты работы всех остальных комманд (а это под конец Maemo были сотни людей) в конечный продукт. Позже именно из этой команды началась Jolla.

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

Потом в командах были менеджеры проектов, которые были прокладкой между командой и менеджерами продуктов (команды доставляли функциональность в неколько продуктов сразу). От менеджеров продуктов они получали требования, доносили их до команды и отчитывались о прогрессе. Ну и взаимодействовали с другими командами, потому как, например, applications зависят от application framework, телефония во многом зависит от мультимедии и камеры для видео-звонков, почти все зависят от адаптации железа, и вообще всем нужны компиляторы.

Не стоит также забывать про UX-дизайнеров, промышленных дизайнеров, людей, которые занимались выбором и обеспечением железными компонентами типа центрального процессора, модемов. Потом продажников, рекламщиков,…

Доугими словами разработка мобильных телефонов в 2000-х годах была очень дорогим удовольствием. Хорошая новость заключается в том, что большая часть результатов проделанной работы после закрытия Maemo была открыта. В сочетании с приобретённым опытом это помогло Йолле заняться своими разработками и при этом обходиться затратами на порядок ниже чем в Нокии. Менеджеров там было очень немного, зато было много того, что теперь называется GitOps.