Представьте себе ситуацию: к вам приходит заказчик, у него уже есть продукт, и вам надо организовать процесс и создать соответствующую инфраструктуру так, чтобы сделать работу над продуктом максимально удобной и эффективной. Какие шаги были сделаны и почему, какие проблемы встретились и как были решены проектной командой в вышеописанной ситуации, к чему всё это привело на данный момент — об этом и будет рассказано в докладе.
Ähnlich wie AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля на существующем продукте — живой опыт | Михаил Селиверстов (20)
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля на существующем продукте — живой опыт | Михаил Селиверстов
1. Выстраивание процесса и
применение Best Practices с нуля
на существующем продукте.
Живой опыт.
Михаил Селиверстов, Аркадия,
Ведущий разработчик
2. О себе
2
Михаил Селиверстов
Ведущий разработчик
“Аркадия”
mikhail.seliverstov@arcadia.spb.ru
В Аркадии с 2014-го года.
Больше 10 лет опыта работы в стеке технологий
Майкрософт
Последний год занимаюсь техническим
руководством на проекте на PHP & Laravel.
Почему?
3. Проект
Дано:
• КодЪ на гитхабе - PHP, Laravel, MySQL
• Stories в JIRA
• Продукт уже в продакшене
• Планов на разработку – на годы вперед
3
4. Команда
5 разработчиков, 2 тестировщика, менеджер
Старт — одновременно
4
Здесь должны быть картинка:
эпичное фото команды
5. Best Practices против суровой реальности
• SCRUM,
• Continuous Integration,
• Continuous Deployment,
• SOLID, DRY, KISS,
• TDD,
• Version Control,
• Code style,
• Naming Convention,
• Pull Requests,
• Code architecture…
5
VS
“А теперь со всей этой фигней
мы попробуем взлететь”
6. SCRUM. Планирование
6
• Planning poker.
• Предварительный обзор бэклога
• Специализация на проекте
• Незнакомая предметная
область
• Сложное поведение продукта
• «Чужой» код
• Незнакомый фреймворк
• Слабый уровень организации
Сначало шло тяжеловато
Но терпение и труд все перетерли
Здесь должны быть картинка:
метафорическая визуализация идеи блуждания впотьмах
7. SCRUM. Все подряд
• Внутренний stand-up дополнительно к внешнему
status-митингу
• Четкие критерии для признания таски
выполненной
• Каналы общения с заказчиком. Почта VS Jira (VS
Hipchat?)
7
9. Workflow.
• Workflow тасок в JIRA
• Gitflow. Релизы. Test -> UAT -> Production (?)
9
Тестовые окружения
• Одна тестовая машина
• Две тестовых машины для внутреннего и
внешнего тестирования. Отгрузка задач
пачками. Ветка build в гите.
• Две тестовых машины для тестирования веток
develop и release N
Прочее
15. Legacy код. Фреймворк Laravel
И чо?
15
Паттерн ActiveRecord
Статика и “магия” PHP
Laravel – отличный фреймворк для быстрого создания приложений,
но...
Dependency injection
Рефакторинг
Паттерн DataMapper
16. Выводы
• Больше никогда!!!!!!!!!!!1111
• Все идеи улучшений записывать и (!) регулярно обозревать
• Все идеи аргументировать заказчику
• Не стесняться задавать заказчику вопросы
• Культивировать взаимное доверие в отношениях с заказчиком
• Не париться, что сначала все идет не так быстро и хорошо, как
хотелось бы!
16
Правильно ли мы все сделали?