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

3,280 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,280
On SlideShare
0
From Embeds
0
Number of Embeds
2,442
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

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

×