среда, 15 октября 2014 г.

Работа над проектом

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

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

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

Верстка
Заводите отдельные таски для верстки и программирования
- Требуйте реальные тексты для рыбы
- Используйте сервера приложения с моками
- Среда разработки должна быть доступна в виртуальных машинах
- Автоматизируйте процесс сборки html, css и js файлов: grunt, bash, make-файлы, …
- Используйте готовые сетки: anygrid, bootstrap, …
- Используйте динамические сниппеты (emmet, шаблоны в редакторе)
- Выделяйте общие блоки
- Делайте блоки максимально независимыми

Программирование
- Разворачивайте на виртуальной машине систему аналогичную продакшин
- Процесс «разворачивания» приложения должен быть максимально автоматизирован и документирован
- Данные из хранилища должны быть легко заменяемы на моки
- Используйте готовые фреймворки
- Выделяйте общие компоненты в независимые модули
- Покрывайте тестами основные страницы и компоненты
- Создавайте API с автогенерируемой документацией
- Версионируйте API и до последнего поддерживайте обратную совместимость
- Создавайте рабочее окружение удобное для всех членов команды разработки
- Именуем ветки в соответствии с номерами тасков
- Много коммитим в форк / ветку, после завершения сквошим
- Финальный коммит берем из "Commit message"
- Автоматически собираем ченжлог со списком тасков-коммитов перед релизом

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

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

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

Комментариев нет:

Отправить комментарий