Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Workflow: работа
над проектом в Я
Чистяков Денис
Руководитель группы разработки интерфейсов
Школа Разработки Интерфейсов,
Екатеринбург, 10 декабря 2013
От А до Я

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

2
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Сбор требований и составление ТЗ

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

5
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Всё начинается с таска

• Bugzilla, GitHub, JIRA, Mantis, Redmine, …
• Позволяют отслеживать статус выполнения задачи и
затраченное не неё время
• Получать оповещения об изменениях
• Составлять план ведения работ и релизов

7
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Проектирование макета

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

11
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Верстка

• Заводите отдельные таски для «верстки» и
«программирования»
• Требуйте реальные тексты для «рыбы»
• Используйте сервера приложения с моками
• Среда разработки должна быть доступна в виртуальных
машинах
• Автоматизируйте процесс сборки html, css и js файлов: grunt,
bash, make-файлы, …

14
Верстка

• Используйте готовые сетки: anygrid, bootstrap, …
• Используйте «динамические сниппеты» (emmet, шаблоны в
редакторе)
• Выделяйте общие блоки
• Делайте блоки максимально независимыми

15
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Программирование

• Разворачивайте на виртуальной машине систему аналогичную
продакшин
• Процесс «разворачивания» приложения должен быть
максимально автоматизирован и документирован
• Данные из хранилища должны быть легко заменяемы на моки
• Используйте готовые фреймворки
• Выделяйте общие компоненты в независимые модули

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

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

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

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

19
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Тестирование

• Тестирование должно проходить на отдельном инстансе
приложения, доступному по отдельному URL
• Тестовый сервер должен быть полностью аналогичен продакшн
• Приложение развернутое на тестовом сервере должно
вспоследствие „as is“ с точностью до байта переноситься в
продакшн

21
Денис Чистяков: Workflow. Работа над проектом в Яндексе
„Can you make a build in one
step?“

23

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

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

24
Резюме

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

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

dench@yandex-team.ru
@denchistyakov

Спасибо!

More Related Content

Денис Чистяков: Workflow. Работа над проектом в Яндексе

  • 1. Workflow: работа над проектом в Я Чистяков Денис Руководитель группы разработки интерфейсов Школа Разработки Интерфейсов, Екатеринбург, 10 декабря 2013
  • 2. От А до Я • Сбор требований и составление ТЗ • Проектирование макета и дизайн • Верстка • Программирование • Тестирование • Релиз-деплой • Следующая итерация 2
  • 5. Сбор требований и составление ТЗ • Структурирует мысли и снижает количество бреда • Замечательно, если для этого есть отдельный человек • Помогает дизайнеру и тестировщикам • Крупную задачу проще бить на этапы • Используйте коллаборативные редакторы • ТЗ — не панацея :( 5
  • 7. Всё начинается с таска • Bugzilla, GitHub, JIRA, Mantis, Redmine, … • Позволяют отслеживать статус выполнения задачи и затраченное не неё время • Получать оповещения об изменениях • Составлять план ведения работ и релизов 7
  • 11. Проектирование макета • Начинайте с эскиза • Используйте сетки • Разбивайте всё на отдельные слои • Учитывайте разные длины слов в разных языках Например: Скачать, Завантажити, Download, İndir • Не злоупотребляйте с кастомными шрифтами 11
  • 14. Верстка • Заводите отдельные таски для «верстки» и «программирования» • Требуйте реальные тексты для «рыбы» • Используйте сервера приложения с моками • Среда разработки должна быть доступна в виртуальных машинах • Автоматизируйте процесс сборки html, css и js файлов: grunt, bash, make-файлы, … 14
  • 15. Верстка • Используйте готовые сетки: anygrid, bootstrap, … • Используйте «динамические сниппеты» (emmet, шаблоны в редакторе) • Выделяйте общие блоки • Делайте блоки максимально независимыми 15
  • 17. Программирование • Разворачивайте на виртуальной машине систему аналогичную продакшин • Процесс «разворачивания» приложения должен быть максимально автоматизирован и документирован • Данные из хранилища должны быть легко заменяемы на моки • Используйте готовые фреймворки • Выделяйте общие компоненты в независимые модули 17
  • 18. Программирование • Покрывайте тестами основные страницы и компоненты • Создавайте API с автогенерируемой документацией • Версионируйте API и до последнего поддерживайте обратную совместимость • Создавайте рабочее окружение удобное для всех членов команды разработки 18
  • 19. Программирование • Именуем ветки в соответствии с номерами тасков • Много коммитим в форк / ветку, после завершения «сквошим» • «Финальный» коммит берем из „Commit message“ • Автоматически собираем ченжлог со списком тасков-коммитов перед релизом 19
  • 21. Тестирование • Тестирование должно проходить на отдельном инстансе приложения, доступному по отдельному URL • Тестовый сервер должен быть полностью аналогичен продакшн • Приложение развернутое на тестовом сервере должно вспоследствие „as is“ с точностью до байта переноситься в продакшн 21
  • 23. „Can you make a build in one step?“ 23 Joel Spolsky
  • 24. Релиз-деплой • Автоматизировать можно как угодно: grunt, bash, make-файлы, мы используем deb-пакеты • Собираем автоматически пулл-реквесты через Teamcity • Travis CI, Jenkins, GitHub Web-hooks, … • Изменения должны разворачиваться в продакшине максимально атомарно 24
  • 25. Резюме • Принимайте участие в обсуждении ТЗ, дизайна и технических моментов • Бейте задачу на подзадачи и создавайте дерево тасков • Старайтесь держать «чистой», но полной историю изменений • Севера разработки должны быть легко поднимаемы и требовать минимальной настройки • Упрощайте процесс сборки и релиза до максимума 25
  • 26. Чистяков Денис Руководитель группы разработки интерфейсов dench@yandex-team.ru @denchistyakov Спасибо!