azovdevmeetup 2016 | Выстраивание процесса и применение best...
TRANSCRIPT
Выстраивание процесса и применение Best Practices с нуля на существующем продукте. Живой опыт.
Михаил Селиверстов, Аркадия,
Ведущий разработчик
О себе
2
Михаил Селиверстов
Ведущий разработчик
“Аркадия”[email protected]
В Аркадии с 2014-го года.
Больше 10 лет опыта работы в стеке технологий Майкрософт
Последний год занимаюсь техническим руководством на проекте на PHP & Laravel. Почему?
Проект
Дано:• КодЪ на гитхабе - PHP, Laravel, MySQL• Stories в JIRA• Продукт уже в продакшене• Планов на разработку – на годы вперед
3
Команда
5 разработчиков, 2 тестировщика, менеджерСтарт — одновременно
4
Здесь должны быть картинка:эпичное фото команды
Best Practices против суровой реальности
• SCRUM,
• Continuous Integration,
• Continuous Deployment,
• SOLID, DRY, KISS,
• TDD,
• Version Control,
• Code style,
• Naming Convention,
• Pull Requests,
• Code architecture…
5
VS
“А теперь со всей этой фигней мы попробуем взлететь”
SCRUM. Планирование
6
• Planning poker.
• Предварительный обзор бэклога
• Специализация на проекте
• Незнакомая предметная область
• Сложное поведение продукта
• «Чужой» код
• Незнакомый фреймворк
• Слабый уровень организации
Сначало шло тяжеловато
Но терпение и труд все перетерли
Здесь должны быть картинка:метафорическая визуализация идеи блуждания впотьмах
SCRUM. Все подряд
• Внутренний stand-up дополнительно к внешнему status-митингу
• Четкие критерии для признания таски выполненной
• Каналы общения с заказчиком. Почта VS Jira (VS Hipchat?)
7
Git flow
&
8
Pull-requests
Author: Vincent DriessenOriginal blog post: http://nvie.com/posts/a-succesful-git-branching-modelLicense: Creative Commons BY-SA
Workflow.
• Workflow тасок в JIRA
• Gitflow. Релизы. Test -> UAT -> Production (?)
9
Тестовые окружения
• Одна тестовая машина
• Две тестовых машины для внутреннего и внешнего тестирования. Отгрузка задач пачками. Ветка build в гите.
• Две тестовых машины для тестирования веток develop и release N
Прочее
Автоматизация билдов
1. sh-скрипт
2. sh-скрипт + TeamCity. Номер билда!
3. sh-скрипт + TeamCity + Continuous Integration. Coming soon…
12
Автоматизация билдов
1. sh-скрипт
2. sh-скрипт + TeamCity. Номер билда!
3. sh-скрипт + TeamCity + Continuous Integration. Coming soon…
4. sh-скрипт + TeamCity + Continuous Integration + Continuous Deployment. Может быть когда-нибудь…
13
Legacy код. Фреймворк Laravel
И чо?
15
Паттерн ActiveRecord
Статика и “магия” PHP
Laravel – отличный фреймворк для быстрого создания приложений, но...
Dependency injection
Рефакторинг
Паттерн DataMapper
Выводы
• Больше никогда!!!!!!!!!!!1111
• Все идеи улучшений записывать и (!) регулярно обозревать
• Все идеи аргументировать заказчику
• Не стесняться задавать заказчику вопросы
• Культивировать взаимное доверие в отношениях с заказчиком
• Не париться, что сначала все идет не так быстро и хорошо, как хотелось бы!
16
Правильно ли мы все сделали?