SlideShare a Scribd company logo
1 of 44
Download to read offline
Денис Воскобойник
Докладчик
Как работать с легаси проектом,
которому > 10 лет
Кто я такой?
Team Lead отдела внутренних разработок
● В программировании c 2012 года
● Работал с более 60 проектами
● Создал 2 проекта в Netpeak, которые
работают уже больше 2 лет.
● Сейчас Team Lead команды из ~ 10
человек
Netpeak Group
О чем поговорим?
1. Легаси — это плохо или хорошо.
2. Построение процессов разработки.
3. Нужно развивать программистов!
4. Внедрение / обновление стека технологий.
5. Внедрить стандарты разработки.
6. IoC.
7. Как рефакторить? И нужно ли оно?
8. Как понять, что нужно вынести отдельно и нужно ли это?
9. Как тестировать то что никогда не тестировалось?
10. Code Review.
Легаси — это хорошо?
Почему плохо? 1. Никто не знает, как это работает.
2. Никто не знает, почему все работает именно так.
3. Время на внедрение фич постоянно растет.
4. Кол-во багов растет.
5. Внедрение фич делает код еще “легасее”.
6. Очень просто пропустить ошибку в безопасности.
7. Программисты превращаются в базу знаний проекта
и становятся незаменимы.
Построение процессов разработки
1. SCRUM не зря придумали
2. Не брать в работу фичу, пока программисты не
поймут какую проблему она решает.
3. Если на проекте нет тестирования — срочно начать!
4. Автоматизировать процесс деплоя.
Нужно развивать
программистов
1. Команда, которая писала этот проект на разных
этапах и скорее всего не знает как писать правильно.
2. Человек, который давно сидит на проекте.
Что у нас есть?
1. К разработке ключевых узлов системы подключить
как можно больше программистов.
2. Заставить читать книги, ходить на конференции.
Примеры книг: Эрик Эванс, http://martinfowler.com/
3. Подключить в тематическим чатам, примеры таких
чатов https://t.me/symfony_php,
https://t.me/prophp7
4. Настроить процесс code review
5. Организовать кружки по программированию
Что делать?
Внедрение /
обновление стека
технологий
Зачем?
Обеспечить безопасность на минимальном
уровне
С новыми технологиями работать приятнее
1. Легко найти документацию
2. Легко найти ответ на свой вопрос
3. Много специалистов
4. Возможно найти больше готовых решений
Новые технологии работают быстрее
Необходимость диктуемая зависимостями
1. Использовать статические анализаторы кода.
Например phpstan, phan, psalm
2. composer outdated --direct
3. Долго тестировать работу продукта и ключевых его
модулей
Как обновить стек?
1. Синтаксические стандарты — psr
2. PHP_CodeSniffer
3. Описать структуру директорий
4. Описать подходы используемые в разработке
Внедрить стандарты разработки
IoC
Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор
рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент
системы должен быть как можно более изолированным от других, не полагаясь в своей работе на
детали конкретной реализации других компонентов.
Dependency Injection (внедрение зависимостей) — это одна из реализаций этого принципа
(помимо этого есть еще Factory Method, Service Locator).
IoC-контейнер — это какая-то библиотека, фреймворк, программа если хотите, которая
позволит вам упростить и автоматизировать написание кода с использованием данного подхода
на столько, на сколько это возможно.
Определения
1. Явное указание зависимостей
2. Слабо связанный код
Что нам даст внедрение IoC
Как рефакторить?
И нужно ли?
1. В коде никто не может разобраться
2. Частые фиксы
3. Код никак не отображает бизнес-процессы
Причины рефакторить:
Как рефакторить?
https://refactoring.guru/
1. Код должен стать чище
2. В процессе рефакторинга не создаётся новая
функциональность
3. Все существующие тесты должны успешно проходить
Что нам говорит refactoring.guru?
Как понять, что нужно
вынести отдельно и
нужно ли это?
1. Убирает возможность привязаться к другому модулю
2. Возможность использования в нескольких системах
3. Легкость обновления
4. Выделение конкретной команды на конкретный сервис
5. Возможность тестирования новых подходов на одном
маленьком сервисе
6. Распределение нагрузки
7. Отказоустойчивость
Чем отдельные сервисы лучше?
1. Сложность трассировки запросов (https://zipkin.io)
2. Асинхронное взаимодействие
3. Распределенные транзакций
4. Сложности деплоймента
В чем минусы?
Как тестировать то, что
никогда не
тестировалось?
1. Регрессионное тестирование
2. Постоянное расширение регрессии
3. Мануальное тестирование каждой новой фичи
4. Тестировать связку фич, которые сделаны за спринт
5. Автоматическое тестирование
Сложно
Code Review
1. Автоматизировать ревью стилистических ошибок
2. Не жалеть время на ревью
3. Максимально упростить процесс ревью
4. Новые решения обсуждать всей командой и
регламентировать
Правильный code review
1. Использовать специализированный софт
2. Упростить создание ревью
3. Упростить процесс ревью
4. Упростить отчетность по ревью
Максимально упростить процесс ревью
1. Есть возможность автоматического создания ревью
2. Встроенная web IDE
3. Полная интеграция c PhpStorm
4. Интеграция с таск трекерами JIRA and YouTrack
5. Если у вас другой таск трекер, то есть хуки
6. Настройка dashboards
Чем удобен upsource
Примеры работы в upsource
Примеры работы в upsource
Примеры работы в upsource
Ответы на вопросы
1. Как решать проблемы с проектом, на которые нет
времени? (выполнение Duty задач)?
2. Какие “угрозы” есть в долгом использовании legacy кода
в проекте?
3. Критерии легаси проекта.
4. Какие появились инструменты, для работы с SEO на
период начала 2019 года?
5. Какой процесс обработки документации использовать,
когда её много и она не систематизирована?
/NetpeakTalks
Денис Воскобойник
ERP Team Lead
+3080956765850
d.voskoboinik@netpeak.net
denya.netpeak
Буду рад ответить на все ваши
вопросы
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник

More Related Content

What's hot

Test Automation as a way of Natural Evolution of a Project
Test Automation as a way of Natural Evolution of a ProjectTest Automation as a way of Natural Evolution of a Project
Test Automation as a way of Natural Evolution of a ProjectKateryna Nesmyelova
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочинеAlexei Lupan
 
Eva Sokolyanskaya, QA Stand Up: Episode 4
Eva Sokolyanskaya, QA Stand Up: Episode 4Eva Sokolyanskaya, QA Stand Up: Episode 4
Eva Sokolyanskaya, QA Stand Up: Episode 4Provectus
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияzheldak
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаAlexei Lupan
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурцеAlexander Byndyu
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Ontico
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?SQALab
 
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...7bits
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Ontico
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
Построение процесса тестирования
Построение процесса тестированияПостроение процесса тестирования
Построение процесса тестированияAlexander Byndyu
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нтAlexei Lupan
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиkosyakov
 

What's hot (20)

Test Automation as a way of Natural Evolution of a Project
Test Automation as a way of Natural Evolution of a ProjectTest Automation as a way of Natural Evolution of a Project
Test Automation as a way of Natural Evolution of a Project
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
 
Eva Sokolyanskaya, QA Stand Up: Episode 4
Eva Sokolyanskaya, QA Stand Up: Episode 4Eva Sokolyanskaya, QA Stand Up: Episode 4
Eva Sokolyanskaya, QA Stand Up: Episode 4
 
Ошибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы примененияОшибки начинающих Tdd практиков, плюсы применения
Ошибки начинающих Tdd практиков, плюсы применения
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчика
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурце
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)Highway to Сontinuous Integration, Денис Трифонов (2GIS)
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
 
Sqa8 urazov
Sqa8 urazovSqa8 urazov
Sqa8 urazov
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Refactoring
RefactoringRefactoring
Refactoring
 
Построение процесса тестирования
Построение процесса тестированияПостроение процесса тестирования
Построение процесса тестирования
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
 

Similar to Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник

Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY
 
12 reasons to love symfony2
12 reasons to love symfony212 reasons to love symfony2
12 reasons to love symfony2Alexei Smolyanov
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийTatyanazaxarova
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыBoris Volfson
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenchesGleb Rybalko
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)Ontico
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0AlexeyParhomenko
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчейVitebsk DSC
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаZestranec
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика SQALab
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Provectus
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java DeveloperOlexandra Dmytrenko
 

Similar to Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник (20)

Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
 
12 reasons to love symfony2
12 reasons to love symfony212 reasons to love symfony2
12 reasons to love symfony2
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
TAP
TAPTAP
TAP
 
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложений
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 
Тестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщикаТестирование крупного проекта командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
 
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика Тестирование крупных проектов командой из одного тестировщика
Тестирование крупных проектов командой из одного тестировщика
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 

More from Образовательные мероприятия "Netpeak Talks"

Как поставить написание текстов на поток и почему важно делиться личным опыто...
Как поставить написание текстов на поток и почему важно делиться личным опыто...Как поставить написание текстов на поток и почему важно делиться личным опыто...
Как поставить написание текстов на поток и почему важно делиться личным опыто...Образовательные мероприятия "Netpeak Talks"
 

More from Образовательные мероприятия "Netpeak Talks" (11)

Netpeak Talks №1: Продажи и развитие клиентов в IT | Червяков Константин | Че...
Netpeak Talks №1: Продажи и развитие клиентов в IT | Червяков Константин | Че...Netpeak Talks №1: Продажи и развитие клиентов в IT | Червяков Константин | Че...
Netpeak Talks №1: Продажи и развитие клиентов в IT | Червяков Константин | Че...
 
Netpeak Talks №17: Как облегчить жизнь клиенту? | Александр Плуток
 Netpeak Talks №17: Как облегчить жизнь клиенту? | Александр Плуток Netpeak Talks №17: Как облегчить жизнь клиенту? | Александр Плуток
Netpeak Talks №17: Как облегчить жизнь клиенту? | Александр Плуток
 
Хороший Email Marketing. Плохой Email Marketing
Хороший Email Marketing. Плохой Email MarketingХороший Email Marketing. Плохой Email Marketing
Хороший Email Marketing. Плохой Email Marketing
 
Как поставить написание текстов на поток и почему важно делиться личным опыто...
Как поставить написание текстов на поток и почему важно делиться личным опыто...Как поставить написание текстов на поток и почему важно делиться личным опыто...
Как поставить написание текстов на поток и почему важно делиться личным опыто...
 
Netpeak Talks X | Netpeak: 3 шага за 10 лет
Netpeak Talks X | Netpeak: 3 шага за 10 летNetpeak Talks X | Netpeak: 3 шага за 10 лет
Netpeak Talks X | Netpeak: 3 шага за 10 лет
 
Netpeak Talks #9 «Эволюция PM: откуда мы пришли и куда двигаться дальше?» | А...
Netpeak Talks #9 «Эволюция PM: откуда мы пришли и куда двигаться дальше?» | А...Netpeak Talks #9 «Эволюция PM: откуда мы пришли и куда двигаться дальше?» | А...
Netpeak Talks #9 «Эволюция PM: откуда мы пришли и куда двигаться дальше?» | А...
 
Netpeak Talks #8 Запуск и ведение PPC проектов в СНГ и на Западе.
Netpeak Talks #8 Запуск и ведение PPC проектов в СНГ и на Западе.Netpeak Talks #8 Запуск и ведение PPC проектов в СНГ и на Западе.
Netpeak Talks #8 Запуск и ведение PPC проектов в СНГ и на Западе.
 
Netpeak Talks #7 Как прокачать в себе дизайнера?
Netpeak Talks #7 Как прокачать в себе дизайнера? Netpeak Talks #7 Как прокачать в себе дизайнера?
Netpeak Talks #7 Как прокачать в себе дизайнера?
 
Netpeak Talks #7 Продвижение на западных рынках при помощи платформы Quora
Netpeak Talks #7 Продвижение на западных рынках при помощи платформы QuoraNetpeak Talks #7 Продвижение на западных рынках при помощи платформы Quora
Netpeak Talks #7 Продвижение на западных рынках при помощи платформы Quora
 
Netpeak Talks 5: Как сформировать команду маркетинга для продвижения на Запад
Netpeak Talks 5: Как сформировать команду маркетинга для продвижения на ЗападNetpeak Talks 5: Как сформировать команду маркетинга для продвижения на Запад
Netpeak Talks 5: Как сформировать команду маркетинга для продвижения на Запад
 
Netpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHPNetpeak Talks #3: Масштабируемое приложение на PHP
Netpeak Talks #3: Масштабируемое приложение на PHP
 

Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник

  • 1. Денис Воскобойник Докладчик Как работать с легаси проектом, которому > 10 лет
  • 2. Кто я такой? Team Lead отдела внутренних разработок ● В программировании c 2012 года ● Работал с более 60 проектами ● Создал 2 проекта в Netpeak, которые работают уже больше 2 лет. ● Сейчас Team Lead команды из ~ 10 человек
  • 4. О чем поговорим? 1. Легаси — это плохо или хорошо. 2. Построение процессов разработки. 3. Нужно развивать программистов! 4. Внедрение / обновление стека технологий. 5. Внедрить стандарты разработки. 6. IoC. 7. Как рефакторить? И нужно ли оно? 8. Как понять, что нужно вынести отдельно и нужно ли это? 9. Как тестировать то что никогда не тестировалось? 10. Code Review.
  • 5. Легаси — это хорошо?
  • 6.
  • 7. Почему плохо? 1. Никто не знает, как это работает. 2. Никто не знает, почему все работает именно так. 3. Время на внедрение фич постоянно растет. 4. Кол-во багов растет. 5. Внедрение фич делает код еще “легасее”. 6. Очень просто пропустить ошибку в безопасности. 7. Программисты превращаются в базу знаний проекта и становятся незаменимы.
  • 8. Построение процессов разработки 1. SCRUM не зря придумали 2. Не брать в работу фичу, пока программисты не поймут какую проблему она решает. 3. Если на проекте нет тестирования — срочно начать! 4. Автоматизировать процесс деплоя.
  • 10. 1. Команда, которая писала этот проект на разных этапах и скорее всего не знает как писать правильно. 2. Человек, который давно сидит на проекте. Что у нас есть?
  • 11. 1. К разработке ключевых узлов системы подключить как можно больше программистов. 2. Заставить читать книги, ходить на конференции. Примеры книг: Эрик Эванс, http://martinfowler.com/ 3. Подключить в тематическим чатам, примеры таких чатов https://t.me/symfony_php, https://t.me/prophp7 4. Настроить процесс code review 5. Организовать кружки по программированию Что делать?
  • 14. Обеспечить безопасность на минимальном уровне
  • 15. С новыми технологиями работать приятнее 1. Легко найти документацию 2. Легко найти ответ на свой вопрос 3. Много специалистов 4. Возможно найти больше готовых решений
  • 18. 1. Использовать статические анализаторы кода. Например phpstan, phan, psalm 2. composer outdated --direct 3. Долго тестировать работу продукта и ключевых его модулей Как обновить стек?
  • 19. 1. Синтаксические стандарты — psr 2. PHP_CodeSniffer 3. Описать структуру директорий 4. Описать подходы используемые в разработке Внедрить стандарты разработки
  • 20. IoC
  • 21. Inversion of Control (инверсия управления) — это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов. Dependency Injection (внедрение зависимостей) — это одна из реализаций этого принципа (помимо этого есть еще Factory Method, Service Locator). IoC-контейнер — это какая-то библиотека, фреймворк, программа если хотите, которая позволит вам упростить и автоматизировать написание кода с использованием данного подхода на столько, на сколько это возможно. Определения
  • 22. 1. Явное указание зависимостей 2. Слабо связанный код Что нам даст внедрение IoC
  • 24.
  • 25. 1. В коде никто не может разобраться 2. Частые фиксы 3. Код никак не отображает бизнес-процессы Причины рефакторить:
  • 27. 1. Код должен стать чище 2. В процессе рефакторинга не создаётся новая функциональность 3. Все существующие тесты должны успешно проходить Что нам говорит refactoring.guru?
  • 28. Как понять, что нужно вынести отдельно и нужно ли это?
  • 29. 1. Убирает возможность привязаться к другому модулю 2. Возможность использования в нескольких системах 3. Легкость обновления 4. Выделение конкретной команды на конкретный сервис 5. Возможность тестирования новых подходов на одном маленьком сервисе 6. Распределение нагрузки 7. Отказоустойчивость Чем отдельные сервисы лучше?
  • 30. 1. Сложность трассировки запросов (https://zipkin.io) 2. Асинхронное взаимодействие 3. Распределенные транзакций 4. Сложности деплоймента В чем минусы?
  • 31. Как тестировать то, что никогда не тестировалось?
  • 32. 1. Регрессионное тестирование 2. Постоянное расширение регрессии 3. Мануальное тестирование каждой новой фичи 4. Тестировать связку фич, которые сделаны за спринт 5. Автоматическое тестирование Сложно
  • 34. 1. Автоматизировать ревью стилистических ошибок 2. Не жалеть время на ревью 3. Максимально упростить процесс ревью 4. Новые решения обсуждать всей командой и регламентировать Правильный code review
  • 35. 1. Использовать специализированный софт 2. Упростить создание ревью 3. Упростить процесс ревью 4. Упростить отчетность по ревью Максимально упростить процесс ревью
  • 36.
  • 37. 1. Есть возможность автоматического создания ревью 2. Встроенная web IDE 3. Полная интеграция c PhpStorm 4. Интеграция с таск трекерами JIRA and YouTrack 5. Если у вас другой таск трекер, то есть хуки 6. Настройка dashboards Чем удобен upsource
  • 41.
  • 42. Ответы на вопросы 1. Как решать проблемы с проектом, на которые нет времени? (выполнение Duty задач)? 2. Какие “угрозы” есть в долгом использовании legacy кода в проекте? 3. Критерии легаси проекта. 4. Какие появились инструменты, для работы с SEO на период начала 2019 года? 5. Какой процесс обработки документации использовать, когда её много и она не систематизирована?
  • 43. /NetpeakTalks Денис Воскобойник ERP Team Lead +3080956765850 d.voskoboinik@netpeak.net denya.netpeak Буду рад ответить на все ваши вопросы