workflow: работа над проектом в Яндексе

26
Руководитель группы разработки интерфейсов Workflow: работа над проектом в Я Чистяков Денис Школа Разработки Интерфейсов, Екатеринбург , 10 декабря 2013

Upload: denis-chistyakov

Post on 24-Jul-2015

110 views

Category:

Software


2 download

TRANSCRIPT

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

Workflow: работа над проектом в Я

Чистяков Денис

Школа Разработки Интерфейсов,Екатеринбург, 10 декабря 2013

От А до Я

• Сбор требований и составление ТЗ

• Проектирование макета и дизайн• Верстка• Программирование• Тестирование• Релиз-деплой• Следующая итерация

2

Сбор требований и составление ТЗ

• Структурирует мысли и снижает количество бреда

• Замечательно, если для этого есть отдельный человек• Помогает дизайнеру и тестировщикам• Крупную задачу проще бить на этапы• Используйте коллаборативные редакторы• ТЗ — не панацея :(

5

Всё начинается с таска

• Bugzilla, GitHub, JIRA, Mantis, Redmine, …

• Позволяют отслеживать статус выполнения задачи и затраченное не неё время

• Получать оповещения об изменениях• Составлять план ведения работ и релизов

7

Проектирование макета

• Начинайте с эскиза

• Используйте сетки• Разбивайте всё на отдельные слои• Учитывайте разные длины слов в разных языках

Например: Скачать, Завантажити, Download, İndir• Не злоупотребляйте с кастомными шрифтами

11

Верстка

• Заводите отдельные таски для «верстки» и «программирования»

• Требуйте реальные тексты для «рыбы»• Используйте сервера приложения с моками• Среда разработки должна быть доступна в виртуальных

машинах• Автоматизируйте процесс сборки html, css и js файлов: grunt,

bash, make-файлы, …

14

Верстка

• Используйте готовые сетки: anygrid, bootstrap, …

• Используйте «динамические сниппеты» (emmet, шаблоны в редакторе)

• Выделяйте общие блоки• Делайте блоки максимально независимыми

15

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

• Разворачивайте на виртуальной машине систему аналогичную продакшин

• Процесс «разворачивания» приложения должен быть максимально автоматизирован и документирован

• Данные из хранилища должны быть легко заменяемы на моки• Используйте готовые фреймворки• Выделяйте общие компоненты в независимые модули

17

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

• Покрывайте тестами основные страницы и компоненты

• Создавайте API с автогенерируемой документацией• Версионируйте API и до последнего поддерживайте обратную

совместимость• Создавайте рабочее окружение удобное для всех членов

команды разработки

18

• Именуем ветки в соответствии с номерами тасков

• Много коммитим в форк / ветку, после завершения «сквошим»• «Финальный» коммит берем из „Commit message“• Автоматически собираем ченжлог со списком тасков-коммитов

перед релизом

19

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

• Тестирование должно проходить на отдельном инстансе приложения, доступному по отдельному URL

• Тестовый сервер должен быть полностью аналогичен продакшн• Приложение развернутое на тестовом сервере должно

вспоследствие „as is“ с точностью до байта переноситься в продакшн

21

Тестирование

„Can you make a build in one step?“

23Joel Spolsky

Релиз-деплой

• Автоматизировать можно как угодно: grunt, bash, make-файлы, мы используем deb-пакеты

• Собираем автоматически пулл-реквесты через Teamcity• Travis CI, Jenkins, GitHub Web-hooks, …• Изменения должны разворачиваться в продакшине

максимально атомарно

24

Резюме

• Принимайте участие в обсуждении ТЗ, дизайна и технических моментов

• Бейте задачу на подзадачи и создавайте дерево тасков• Старайтесь держать «чистой», но полной историю изменений• Севера разработки должны быть легко поднимаемы и

требовать минимальной настройки• Упрощайте процесс сборки и релиза до максимума

25

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

[email protected]@denchistyakov

Спасибо!

Чистяков Денис