Сергей Пузанков "Яндекс.Поиск. Разработка...

64
Разработка интерфейсов в распределенной команде Сергей Пузанков руководитель группы разработки поисковых интерфейсов Я.Субботник в Киеве, 27 апреля 2013

Upload: yandex

Post on 16-Jun-2015

584 views

Category:

Technology


1 download

DESCRIPTION

Команда разработки интерфейсов поиска состоит из 50 человек и находится в четырёх разных городах России и Украины: в Москве, в Санкт-Петербурге, в Киеве и в Симферополе. В докладе рассказывается, как была организована разработка интерфейсов поиска распределенной командой, а также про методологию написания кода, процесс взаимодействия с командой, настройку системы контроля версий и обмен информацией внутри отдела.

TRANSCRIPT

Page 1: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Разработка интерфейсов в распределенной командеСергей Пузанковруководитель группы разработкипоисковых интерфейсовЯ.Субботник в Киеве, 27 апреля 2013

Page 2: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Зачем?

Page 3: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Зачем распределенная команда

• Дополнительный рынок разработчиков

3

Page 4: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Зачем распределенная команда

• Дополнительный рынок разработчиков• Кластеризация

4

Page 5: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Зачем распределенная команда

• Дополнительный рынок разработчиков• Кластеризация - работать на Бали :)

5

Page 6: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Зачем распределенная команда

• Дополнительный рынок разработчиков• Кластеризация - работать на Бали :)• Удешевление разработки

6

Page 7: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Команда

Page 8: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Команда

Отдел разработки интерфейсов поисковых сервисов:

• 50 человек (Поисковая выдача ~20-25)• 2 страны: Россия, Украина• 4 города: Москва, Санкт-Петербург, Симферополь, Киев• Еще множество разработчиков из других отделов

8

Page 9: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

«Всего одна страница»

Page 10: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Search Engine Result Page10

Page 11: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по картинкам11

Page 12: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по видео12

Page 13: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Новости13

Page 14: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по блогам14

Page 15: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по людям15

Page 16: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по авто16

Page 17: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Поиск по недвижимости17

Page 18: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Различные устройства

• Десктопы• Планшеты• Мобильные (touch)• Старые мобильные

18

Page 19: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Как это работает?

Page 20: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Процесс

Как это работает?

Page 21: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Роли

21

Менеджер

Дизайнер

Frontend-разработчикBackend-разработчик

Тестировщик

Page 22: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Дежурство

22

Дежурный frontend разработчик

Релиз инженер (frontend)

Релиз инженер (backend)

Page 23: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Еженедельное планирование

23

Пн. Планы на неделю

Ср. Смотрим/Корректируем

Пт. Сдаем/подводим итоги

Page 24: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Четкий процесс

Page 25: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Коммуникации

• JIRA• Репозиторий• Почта, джабер, телефон• Видео-переговорки, skype• Командировки

25

Page 26: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

VCS

• git + svn• Enterprise github• Зафиксированный процесс

26

Page 27: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

VCS

27

http://clck.ru/8cn-q

Page 28: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Обмен знаниями

Как это работает?

Page 29: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Всеобъемлющая документация29

Page 30: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Мероприятия

• Внешние Я.Субботники

30

Page 31: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Мероприятия

• Внешние Я.Субботники• Внутренние пЯТЬницы

31

Page 32: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Мероприятия

• Внешние Я.Субботники• Внутренние пЯТЬницы• Очень внутренние Четверги

32

Page 33: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Мероприятия

• Внешние Я.Субботники• Внутренние пЯТЬницы• Очень внутренние Четверги• Видео Среда

33

Page 34: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Мероприятия

• Внешние Я.Субботники - 2 раза в квартал• Внутренние пЯТЬницы - 2 раза в квартал• Очень внутренние Четверги - 2 раза в квартал• Видео Среда - 2 раза в месяц

34

Page 35: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Регулярные встречи

Встречи руководителей групп - 2 раза в месяц

35

Page 36: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Регулярные встречи

Встречи группы - 1 раз в неделю

36

Page 37: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Регулярные встречи

Личные встречи - 1 раз в месяц

37

Page 38: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Регулярные встречи

Личные встречи - 1 раз в месяц

• Технологии• Проекты• Люди

38

Page 39: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Код

Как это работает?

Page 40: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Код

• Единая методология написания кода

40

Page 41: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Page 42: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Для разработчика

• Упрощение разработки и поддержки• Переключения между проектами/задачами• Повторное использовании кода

42

Page 43: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Для командной работы

• Быстрое подключение человека к команде• Совместная работа с кодом разных специалистов• Независимая работа над частями проекта

43

Page 44: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Библиотеки блоков

• Общепортальные: шапка, подвал, контролы, выпадушки...

44

Page 45: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Библиотеки блоков

• Общепортальные: шапка, подвал, контролы, выпадушки...• Поисковые: поисковые блоки, ajax, счетчики, global...

45

Page 46: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Библиотеки блоков

• Общепортальные: шапка, подвал, контролы, выпадушки...• Поисковые: поисковые блоки, ajax, счетчики, global...• Contribs: maps, images, market, taxi, translate....

46

Page 47: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

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

Page 48: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Единая экосистема

• Все технологии в BEM терминах• Библиотека блоков • Шаблонизатор• Инструменты (создание, сборка, оптимизация)

48

Page 51: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Code review

51

Page 52: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Code review

52

http://clck.ru/8cmzq

Page 53: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Code style

53

Page 54: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Code style

54

http://clck.ru/8cn-Q

Page 55: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Парное программирование

55

Page 56: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Парное программирование

56

http://clck.ru/8cn-k

Page 57: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

• HTML+CSS• JS (client, server)• Templates• Build

• Десктопы• Планшеры• Мобильные (touch)

57

Page 58: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

• HTML+CSS• JS (client, server)• Templates• Build

• Десктопы• Планшеры• Мобильные (touch)

58

Page 59: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Итого

Page 60: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Процесс

• Четкие роли• Рабочий процесс• Удобные коммуникации• Налаженный VCS flow

60

Page 61: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Обучение

• Документация• Внешние и внутренние конференции/презентации• Обмен информацией между группами

61

Page 62: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

Код

• Единая методология разработки• Code review, code style

62

Page 63: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"
Page 64: Сергей Пузанков "Яндекс.Поиск. Разработка интерфейсов в распределенной команде"

руководитель группы разработки поисковых интерфейсов

[email protected]@puzankovcom

Спасибо

Сергей Пузанков