Сергей Пузанков "Яндекс.Поиск. Разработка...
DESCRIPTION
Команда разработки интерфейсов поиска состоит из 50 человек и находится в четырёх разных городах России и Украины: в Москве, в Санкт-Петербурге, в Киеве и в Симферополе. В докладе рассказывается, как была организована разработка интерфейсов поиска распределенной командой, а также про методологию написания кода, процесс взаимодействия с командой, настройку системы контроля версий и обмен информацией внутри отдела.TRANSCRIPT
Разработка интерфейсов в распределенной командеСергей Пузанковруководитель группы разработкипоисковых интерфейсовЯ.Субботник в Киеве, 27 апреля 2013
Зачем?
Зачем распределенная команда
• Дополнительный рынок разработчиков
3
Зачем распределенная команда
• Дополнительный рынок разработчиков• Кластеризация
4
Зачем распределенная команда
• Дополнительный рынок разработчиков• Кластеризация - работать на Бали :)
5
Зачем распределенная команда
• Дополнительный рынок разработчиков• Кластеризация - работать на Бали :)• Удешевление разработки
6
Команда
Команда
Отдел разработки интерфейсов поисковых сервисов:
• 50 человек (Поисковая выдача ~20-25)• 2 страны: Россия, Украина• 4 города: Москва, Санкт-Петербург, Симферополь, Киев• Еще множество разработчиков из других отделов
8
«Всего одна страница»
Search Engine Result Page10
Поиск по картинкам11
Поиск по видео12
Новости13
Поиск по блогам14
Поиск по людям15
Поиск по авто16
Поиск по недвижимости17
Различные устройства
• Десктопы• Планшеты• Мобильные (touch)• Старые мобильные
18
Как это работает?
Процесс
Как это работает?
Роли
21
Менеджер
Дизайнер
Frontend-разработчикBackend-разработчик
Тестировщик
Дежурство
22
Дежурный frontend разработчик
Релиз инженер (frontend)
Релиз инженер (backend)
Еженедельное планирование
23
Пн. Планы на неделю
Ср. Смотрим/Корректируем
Пт. Сдаем/подводим итоги
Четкий процесс
Коммуникации
• JIRA• Репозиторий• Почта, джабер, телефон• Видео-переговорки, skype• Командировки
25
VCS
• git + svn• Enterprise github• Зафиксированный процесс
26
Обмен знаниями
Как это работает?
Всеобъемлющая документация29
Мероприятия
• Внешние Я.Субботники
30
Мероприятия
• Внешние Я.Субботники• Внутренние пЯТЬницы
31
Мероприятия
• Внешние Я.Субботники• Внутренние пЯТЬницы• Очень внутренние Четверги
32
Мероприятия
• Внешние Я.Субботники• Внутренние пЯТЬницы• Очень внутренние Четверги• Видео Среда
33
Мероприятия
• Внешние Я.Субботники - 2 раза в квартал• Внутренние пЯТЬницы - 2 раза в квартал• Очень внутренние Четверги - 2 раза в квартал• Видео Среда - 2 раза в месяц
34
Регулярные встречи
Встречи руководителей групп - 2 раза в месяц
35
Регулярные встречи
Встречи группы - 1 раз в неделю
36
Регулярные встречи
Личные встречи - 1 раз в месяц
37
Регулярные встречи
Личные встречи - 1 раз в месяц
• Технологии• Проекты• Люди
38
Код
Как это работает?
Код
• Единая методология написания кода
40
Для разработчика
• Упрощение разработки и поддержки• Переключения между проектами/задачами• Повторное использовании кода
42
Для командной работы
• Быстрое подключение человека к команде• Совместная работа с кодом разных специалистов• Независимая работа над частями проекта
43
Библиотеки блоков
• Общепортальные: шапка, подвал, контролы, выпадушки...
44
Библиотеки блоков
• Общепортальные: шапка, подвал, контролы, выпадушки...• Поисковые: поисковые блоки, ajax, счетчики, global...
45
Библиотеки блоков
• Общепортальные: шапка, подвал, контролы, выпадушки...• Поисковые: поисковые блоки, ajax, счетчики, global...• Contribs: maps, images, market, taxi, translate....
46
Contrib z-taxi
47
blocks.bemlevel.js
b-menu_typeb-menu_type_taxi-switcher.css
z-taxiz-taxi.bemhtmlz-taxi.cssz-taxi.deps.jsz-taxi.ie.cssz-taxi.jsz-taxi.priv.js
GNUmakefile
Единая экосистема
• Все технологии в BEM терминах• Библиотека блоков • Шаблонизатор• Инструменты (создание, сборка, оптимизация)
48
49
bem.info
Комьюнити
• @bem_ru• fb.com/groups/bem.info• github.com/bem
50
Code review
51
Code style
53
Парное программирование
55
• HTML+CSS• JS (client, server)• Templates• Build
• Десктопы• Планшеры• Мобильные (touch)
57
• HTML+CSS• JS (client, server)• Templates• Build
• Десктопы• Планшеры• Мобильные (touch)
58
Итого
Процесс
• Четкие роли• Рабочий процесс• Удобные коммуникации• Налаженный VCS flow
60
Обучение
• Документация• Внешние и внутренние конференции/презентации• Обмен информацией между группами
61
Код
• Единая методология разработки• Code review, code style
62
руководитель группы разработки поисковых интерфейсов
[email protected]@puzankovcom
Спасибо
Сергей Пузанков