Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Выстраивание процесса и
применение Best Practices с нуля
на существующем продукте.
Живой опыт.
Михаил Селиверстов, Аркадия...
О себе
2
Михаил Селиверстов
Ведущий разработчик
“Аркадия”
mikhail.seliverstov@arcadia.spb.ru
В Аркадии с 2014-го года.
Бол...
Проект
Дано:
• КодЪ на гитхабе - PHP, Laravel, MySQL
• Stories в JIRA
• Продукт уже в продакшене
• Планов на разработку – ...
Команда
5 разработчиков, 2 тестировщика, менеджер
Старт — одновременно
4
Здесь должны быть картинка:
эпичное фото команды
Best Practices против суровой реальности
• SCRUM,
• Continuous Integration,
• Continuous Deployment,
• SOLID, DRY, KISS,
•...
SCRUM. Планирование
6
• Planning poker.
• Предварительный обзор бэклога
• Специализация на проекте
• Незнакомая предметная...
SCRUM. Все подряд
• Внутренний stand-up дополнительно к внешнему
status-митингу
• Четкие критерии для признания таски
выпо...
Git flow
&
8
Pull-requests
Author: Vincent Driessen
Original blog post: http://nvie.com/posts/a-succesful-git-branching-mo...
Workflow.
• Workflow тасок в JIRA
• Gitflow. Релизы. Test -> UAT -> Production (?)
9
Тестовые окружения
• Одна тестовая ма...
Автоматизация билдов
1. sh-скрипт
10
Автоматизация билдов
1. sh-скрипт
2. sh-скрипт + TeamCity. Номер билда!
11
Автоматизация билдов
1. sh-скрипт
2. sh-скрипт + TeamCity. Номер билда!
3. sh-скрипт + TeamCity + Continuous Integration.
...
Автоматизация билдов
1. sh-скрипт
2. sh-скрипт + TeamCity. Номер билда!
3. sh-скрипт + TeamCity + Continuous Integration.
...
Автоматизация тестирования
• Юнит-тесты. Их нет 
• Функциональные тесты. Behat
14
Legacy код. Фреймворк Laravel
И чо?
15
Паттерн ActiveRecord
Статика и “магия” PHP
Laravel – отличный фреймворк для быстрог...
Выводы
• Больше никогда!!!!!!!!!!!1111
• Все идеи улучшений записывать и (!) регулярно обозревать
• Все идеи аргументирова...
Q & A
Upcoming SlideShare
Loading in …5
×

AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля на существующем продукте — живой опыт | Михаил Селиверстов

381 views

Published on

Представьте себе ситуацию: к вам приходит заказчик, у него уже есть продукт, и вам надо организовать процесс и создать соответствующую инфраструктуру так, чтобы сделать работу над продуктом максимально удобной и эффективной. Какие шаги были сделаны и почему, какие проблемы встретились и как были решены проектной командой в вышеописанной ситуации, к чему всё это привело на данный момент — об этом и будет рассказано в докладе.

Published in: Software
  • Be the first to comment

AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля на существующем продукте — живой опыт | Михаил Селиверстов

  1. 1. Выстраивание процесса и применение Best Practices с нуля на существующем продукте. Живой опыт. Михаил Селиверстов, Аркадия, Ведущий разработчик
  2. 2. О себе 2 Михаил Селиверстов Ведущий разработчик “Аркадия” mikhail.seliverstov@arcadia.spb.ru В Аркадии с 2014-го года. Больше 10 лет опыта работы в стеке технологий Майкрософт Последний год занимаюсь техническим руководством на проекте на PHP & Laravel. Почему?
  3. 3. Проект Дано: • КодЪ на гитхабе - PHP, Laravel, MySQL • Stories в JIRA • Продукт уже в продакшене • Планов на разработку – на годы вперед 3
  4. 4. Команда 5 разработчиков, 2 тестировщика, менеджер Старт — одновременно 4 Здесь должны быть картинка: эпичное фото команды
  5. 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. 6. SCRUM. Планирование 6 • Planning poker. • Предварительный обзор бэклога • Специализация на проекте • Незнакомая предметная область • Сложное поведение продукта • «Чужой» код • Незнакомый фреймворк • Слабый уровень организации Сначало шло тяжеловато Но терпение и труд все перетерли Здесь должны быть картинка: метафорическая визуализация идеи блуждания впотьмах
  7. 7. SCRUM. Все подряд • Внутренний stand-up дополнительно к внешнему status-митингу • Четкие критерии для признания таски выполненной • Каналы общения с заказчиком. Почта VS Jira (VS Hipchat?) 7
  8. 8. Git flow & 8 Pull-requests Author: Vincent Driessen Original blog post: http://nvie.com/posts/a-succesful-git-branching-model License: Creative Commons BY-SA
  9. 9. Workflow. • Workflow тасок в JIRA • Gitflow. Релизы. Test -> UAT -> Production (?) 9 Тестовые окружения • Одна тестовая машина • Две тестовых машины для внутреннего и внешнего тестирования. Отгрузка задач пачками. Ветка build в гите. • Две тестовых машины для тестирования веток develop и release N Прочее
  10. 10. Автоматизация билдов 1. sh-скрипт 10
  11. 11. Автоматизация билдов 1. sh-скрипт 2. sh-скрипт + TeamCity. Номер билда! 11
  12. 12. Автоматизация билдов 1. sh-скрипт 2. sh-скрипт + TeamCity. Номер билда! 3. sh-скрипт + TeamCity + Continuous Integration. Coming soon… 12
  13. 13. Автоматизация билдов 1. sh-скрипт 2. sh-скрипт + TeamCity. Номер билда! 3. sh-скрипт + TeamCity + Continuous Integration. Coming soon… 4. sh-скрипт + TeamCity + Continuous Integration + Continuous Deployment. Может быть когда- нибудь… 13
  14. 14. Автоматизация тестирования • Юнит-тесты. Их нет  • Функциональные тесты. Behat 14
  15. 15. Legacy код. Фреймворк Laravel И чо? 15 Паттерн ActiveRecord Статика и “магия” PHP Laravel – отличный фреймворк для быстрого создания приложений, но... Dependency injection Рефакторинг Паттерн DataMapper
  16. 16. Выводы • Больше никогда!!!!!!!!!!!1111 • Все идеи улучшений записывать и (!) регулярно обозревать • Все идеи аргументировать заказчику • Не стесняться задавать заказчику вопросы • Культивировать взаимное доверие в отношениях с заказчиком • Не париться, что сначала все идет не так быстро и хорошо, как хотелось бы! 16 Правильно ли мы все сделали?
  17. 17. Q & A

×