SlideShare une entreprise Scribd logo
1  sur  87
Télécharger pour lire hors ligne
Dealing with Legacy Code
3
2
1
не Автор
Владимир Гарбар
.NET Developer, Leader
@ HYS Enterprise
15+ years experience
6
Содержание
Существует ли
Legacy Code?
1
2
3
Симптомы
Последствия
Содержание
Решение №1:
Костыль?
7
4
5
6
Решение №2:
Переписать
Решение №4:
Микадо
Содержание
8
Решение №5:
Душитель
7
8
9
Качество
как Причина
Скорость
как Причина
Удача
как Причина
Расплата
Надежда
Содержание
9
10
11
12
1. ЕСТЬ ЛИ LEGACY CODE?
1.ЕСТЬЛИLEGACYCODE?
1. ЕСТЬ ЛИ LEGACY CODE?
1.ЕСТЬЛИLEGACYCODE?
Коллеги говорят
● Лучше “проект с нуля”
● Не люблю сидеть на
поддержке
● Перенести на новый
фреймворк
● Проект отдали нам после
неудачи с предыдущим
исполнителем
1. ЕСТЬ ЛИ LEGACY CODE?
1.ЕСТЬЛИLEGACYCODE?
Коллеги говорят
● Лучше “проект с нуля”
● Не люблю сидеть на
поддержке
● Перенести на новый
фреймворк
● Проект отдали нам после
неудачи с предыдущим
исполнителем
Чем грозит?
● Отсутствие роста
● Старые технологии
● Поддержка
● Постоянные
исправления багов
“
Мнениеспециалистов
Legacy code is simply
code without tests.”
— Michael Feathers
“
Мнениеспециалистов
An old running system
critical for the business,
hard and expensive to
maintain, improve and
expand.”
— Uberto Barbini
“
Мнениеспециалистов
Valuable code we’re
afraid to change.”
— J.B. Rainsberger
“
Мнениеспециалистов
Code that’s too scary
to update and too
profitable to delete.”
— Dylan
Beattie
● Legacy code is simply
code without tests ● Код без тестов
● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Valuable code we’re
afraid to change
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
● Ценный
● Страшный
● Legacy code is simply
code without tests
● An old running system
critical for the
business, hard and
expensive to maintain,
improve and expand
● Valuable code we’re
afraid to change
● Code that’s too scary
to update and too
profitable to delete
● Код без тестов
● Критически важный для
бизнеса
● Сложный
● Дорогой в поддержке и
развитии
● Ценный
● Страшный
● Слишком прибыльный, чтобы
выбросить
2. СИМПТОМЫ
Перегруженность
2.Симптомы
Добавление новой
функциональности может
привести к трагическим
последствиям
Постоянный
багфиксинг
2.Симптомы
Количество задач по
багфиксам значительно
превосходит задачи
разработки новой
функциональности
Состояние
срочности
2.Симптомы
Высокая стоимость
изменений
2.Симптомы
Изменения
невозможны
2.Симптомы
2. СИМПТОМЫ LEGACY CODE
2.Симптомы
● Перегруженность
● Постоянные исправления багов
● Состояние срочности
● Небольшое изменение требует
много времени
● Незначительное изменение
невозможно
3. ПОСЛЕДСТВИЯ
3.Последствия
3. ПОСЛЕДСТВИЯ LEGACY CODE
Начало: Быстрая разработка
3.Последствия
3. ПОСЛЕДСТВИЯ LEGACY CODE
Начало: Быстрая разработка
3.Последствия
Болезненная разработка
3. ПОСЛЕДСТВИЯ LEGACY CODE
Начало: Быстрая разработка
3.Последствия
Болезненная разработка
Горят Сроки
3. ПОСЛЕДСТВИЯ LEGACY CODE
Начало: Быстрая разработка
3.Последствия
Болезненная разработка
Горят Сроки
Потеря денег
3. ПОСЛЕДСТВИЯ LEGACY CODE
РЕШЕНИЯ
Решение №1:
Костыль?
Решение №1:
Костыль?
Изолента!
Решение №1:
Костыль?
Startup
“Speed to market”
“Надо на вчера”
Закон битых стекол
Решение №2:
Переписать с нуля
Зная текущие проблемы,
их можно избежать в версии
написанной с чистого листа
A PICTURE ALWAYS
REINFORCES THE CONCEPT
Ожидание
Реальность
Сложность выше, чем
предполагали.
Выяснение требований из кода.
Заказчик хочет новый
функционал.
Решение N4:
Метод Микадо
Решение N3:
Рефакторинг
Решение N4:
Метод Микадо
День Сурка
● Изменить.
● Проверить.
● Откатить.
● Повторить.
Спорим, сдадитесь? :)
Решение №5:
Душитель
PRESENTATIONTITLE/YOURNAME
Strangler pattern
Progressive rewrite
Новое решение строится
поверх старого приложения
Внедрить. Заместить. Уничтожить.
Strangler application vs Cut-over rewrite (Martin Fowler)
Снижает риски
Требует больше времени
Безопасно - не значит быстро
8. КАЧЕСТВО
8. КАЧЕСТВО КАК ПРИЧИНА
PRESENTATIONTITLE/YOURNAME
8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
Другое мнение?
8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
Что такое качество?
● Design Patterns
● Clean code
● TDD, DDD, BDD
● Functional programming
● When you look at routine and
it is pretty much what you’ve
expected.
● Time to implement new
feature or fix a bug
Другое мнение?
VS
8. КАЧЕСТВО КАК ПРИЧИНА
8.Качество
● Откладывание на потом. “Завтра переделаю”
● Technical debt настолько высок, что никогда не
будет “выплачен”
● Малопонятный код. “Дизайн под себя”.
9. СКОРОСТЬ
9. СКОРОСТЬ КАК ПРИЧИНА
9.Скорость
Заказчик: Сколько времени сделать Web API?
Разработчик: 1 день
Заказчик: Отлично!
Тестировщик: И 2 дня на тестирование.
Заказчик: Ну, хорошо.
Разработчик: И надо будет отрефакторить код. 5 дней.
Заказчик: WTF?
9. СКОРОСТЬ КАК ПРИЧИНА
9.Скорость
● Быстрая разработка
● Плохое понимание бизнес идеи
10. УДАЧА
10. УДАЧА КАК ПРИЧИНА
10.Удача
● Вера в свой код
● Отсутствие тестов
● Рефакторинг на удачу
● Документация - потом
● Люди знают
Закон Мерфи
● Правим код по 20 раз
● Занимаемся дебагом
● Рефакторинг изменяет
функциональность и
приносит сюрпризы
● Документации нет
● Ключевые люди ушли
11. РАСПЛАТА
12. НАДЕЖДА
12.Надежда
Жизненный цикл разработки
Поддержка
Время жизни продукта
Уход на пенсию
Миграция данных
12. НАДЕЖДА
12.Надежда
Legacy code под контролем
Песочница
Швы
Тестирование
Документация
12.Надежда
Легаси проект доказывает
свою ценность уже одним
своим существованием.
Если плохо реализованная
идея приносит прибыль,
то хорошо работающая - тем
более.
ИСТОЧНИКИ
ИСТОЧНИКИ
Источники
Michael Feathers - Working effectively with Legacy code
Robert Martin - Clean Architecture
Martin Fowler - Refactoring
Источники
Источники
ИСТОЧНИКИ
Источники
● Dylan Beattie. Ctrl-Alt-Del: Learning to Love Legacy Code. .NET Fest
2018
https://www.youtube.com/watch?v=cagKbOTXRuA
● Legacy Code: Big Rewrite or Progressive Rejuvenation? - Uberto
Barbini | #LeadDevLondon 2018
https://www.youtube.com/watch?v=-lB74Zg3QSw
● Surviving Legacy Code with JB Rainsberger
https://www.youtube.com/watch?v=d9ktOSUH63w
ИСТОЧНИКИ
● The Strangler pattern in practice
https://www.michielrook.nl/2016/11/strangler-pattern-practice/
● Lessons from 6 software rewrite stories
https://medium.com/@herbcaudill/lessons-from-6-software-rewrite-
stories-635e4c8f7c22
● StranglerFigApplication
https://martinfowler.com/bliki/StranglerFigApplication.html
● Testing and Refactoring Legacy Code
https://www.youtube.com/watch?v=_NnElPO5BU0
Источники
Спасибо!
Вопросы?
vladimir.garbar@hys-enterprise.com
vgarbar@gmail.com

Contenu connexe

Tendances

Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)Smartling
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...RIF-Technology
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромKirill Kovalchuk
 
Refactoring Legacy Code - Breaking Dependencies Techniques
Refactoring Legacy Code - Breaking Dependencies TechniquesRefactoring Legacy Code - Breaking Dependencies Techniques
Refactoring Legacy Code - Breaking Dependencies TechniquesDmitry Pavlov
 
Александр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentАлександр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentScrumTrek
 
Код-ревью в Drupal
Код-ревью в DrupalКод-ревью в Drupal
Код-ревью в DrupalShvetsGroup
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаAleksandr Makhomet
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling eventViktoriya Pridatko
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.ScrumTrek
 
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1Sergey Ponomarev
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1Krivoy Rog IT Community
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12HappyDev
 
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?Жизнь в стиле стартап в корпоративной среде: Agile в помощь?
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?ScrumTrek
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...ScrumTrek
 
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...ScrumTrek
 
Алексей Аникутин
Алексей АникутинАлексей Аникутин
Алексей АникутинDevGAMM Conference
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
Manager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyManager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyVictor Bogomolov
 

Tendances (20)

Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 
Refactoring Legacy Code - Breaking Dependencies Techniques
Refactoring Legacy Code - Breaking Dependencies TechniquesRefactoring Legacy Code - Breaking Dependencies Techniques
Refactoring Legacy Code - Breaking Dependencies Techniques
 
Александр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentАлександр Андронов, Engineering Assessment
Александр Андронов, Engineering Assessment
 
Код-ревью в Drupal
Код-ревью в DrupalКод-ревью в Drupal
Код-ревью в Drupal
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
 
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв-Современный программист 2.1
 
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
kranonit S01E01 Серёжа Пономарёв: Современный программист 2.1
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12
 
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?Жизнь в стиле стартап в корпоративной среде: Agile в помощь?
Жизнь в стиле стартап в корпоративной среде: Agile в помощь?
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...
Антон Бевзюк; Матвей Григорьев. Domain Driven Design: строительные блоки, цем...
 
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...
Сергей Смирнов, Виталий Александров. Оздоровление унаследованной информационн...
 
Алексей Аникутин
Алексей АникутинАлексей Аникутин
Алексей Аникутин
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
Manager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyManager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodology
 

Similaire à "Dealing with legacy code"

Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчейVitebsk DSC
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failAndrew Mayorov
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoBadoo Development
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Имплементация инженерных практик для 1C
Имплементация инженерных практик для 1CИмплементация инженерных практик для 1C
Имплементация инженерных практик для 1CAlexey Lustin
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0AlexeyParhomenko
 
kranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапkranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапKrivoy Rog IT Community
 
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...it-people
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...borovoystudio
 
В.Денисенков Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков   Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...В.Денисенков   Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...borovoystudio
 
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...SQALab
 
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...Conformato
 
Сколько денег теряет компания, не работая с негативом?
 Сколько денег теряет компания, не работая с негативом? Сколько денег теряет компания, не работая с негативом?
Сколько денег теряет компания, не работая с негативом?Комплето
 
Презентация EASYNODES
Презентация EASYNODESПрезентация EASYNODES
Презентация EASYNODESDmitryChernov12
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаSQALab
 

Similaire à "Dealing with legacy code" (20)

Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Имплементация инженерных практик для 1C
Имплементация инженерных практик для 1CИмплементация инженерных практик для 1C
Имплементация инженерных практик для 1C
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
kranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартапkranonit S10E01 Андрей Бабак- Запускаем стартап
kranonit S10E01 Андрей Бабак- Запускаем стартап
 
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков - Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
 
В.Денисенков Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков   Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...В.Денисенков   Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
В.Денисенков Семь раз отмерь. Все что надо знать о выборе подрядчиков, прог...
 
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...
Продуктсорсинг - меняем аутсорсинг или как вместе с заказчиком создавать клас...
 
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
 
Сколько денег теряет компания, не работая с негативом?
 Сколько денег теряет компания, не работая с негативом? Сколько денег теряет компания, не работая с негативом?
Сколько денег теряет компания, не работая с негативом?
 
Презентация EASYNODES
Презентация EASYNODESПрезентация EASYNODES
Презентация EASYNODES
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до заката
 
Развитие ИТ
Развитие ИТРазвитие ИТ
Развитие ИТ
 

Plus de HYS Enterprise

Magic of web components
Magic of web componentsMagic of web components
Magic of web componentsHYS Enterprise
 
“ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” “ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” HYS Enterprise
 
How to create a perfect CV and make a good impression at an interview
How to create a perfect CV and make a good impression at an interviewHow to create a perfect CV and make a good impression at an interview
How to create a perfect CV and make a good impression at an interviewHYS Enterprise
 
Top soft skills to get a job
Top soft skills to get a jobTop soft skills to get a job
Top soft skills to get a jobHYS Enterprise
 
Wild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsWild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsHYS Enterprise
 
Contract testing. Getting started with Pact IO.
Contract testing. Getting started with Pact IO.Contract testing. Getting started with Pact IO.
Contract testing. Getting started with Pact IO.HYS Enterprise
 
Testing strategies in a microservices architecture. Independence vs integration
Testing strategies in a microservices architecture.  Independence vs integrationTesting strategies in a microservices architecture.  Independence vs integration
Testing strategies in a microservices architecture. Independence vs integrationHYS Enterprise
 
Leonid Sushenko "Pro scrum"
Leonid Sushenko "Pro scrum"Leonid Sushenko "Pro scrum"
Leonid Sushenko "Pro scrum"HYS Enterprise
 
"Test Design Techniques"
"Test Design Techniques" "Test Design Techniques"
"Test Design Techniques" HYS Enterprise
 
Essentials soft skills for a developer
Essentials soft skills for a developerEssentials soft skills for a developer
Essentials soft skills for a developerHYS Enterprise
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”HYS Enterprise
 
“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”HYS Enterprise
 
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”HYS Enterprise
 
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."HYS Enterprise
 
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."HYS Enterprise
 
Я твой Expected Result шатал
Я твой Expected Result шаталЯ твой Expected Result шатал
Я твой Expected Result шаталHYS Enterprise
 
“Elasticsearch for .NET developers”
“Elasticsearch for .NET developers”  “Elasticsearch for .NET developers”
“Elasticsearch for .NET developers” HYS Enterprise
 
“Microservices: how to avoid making the same mistake twice.”
“Microservices: how to avoid making the same mistake twice.”“Microservices: how to avoid making the same mistake twice.”
“Microservices: how to avoid making the same mistake twice.”HYS Enterprise
 
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made Solutions
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made SolutionsCheap and Cheerful: Useful Tools for Fast Development of Ready-Made Solutions
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made SolutionsHYS Enterprise
 

Plus de HYS Enterprise (20)

Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
“ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” “ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture”
 
How to create a perfect CV and make a good impression at an interview
How to create a perfect CV and make a good impression at an interviewHow to create a perfect CV and make a good impression at an interview
How to create a perfect CV and make a good impression at an interview
 
Top soft skills to get a job
Top soft skills to get a jobTop soft skills to get a job
Top soft skills to get a job
 
Saga pattern
Saga patternSaga pattern
Saga pattern
 
Wild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scoutsWild Async .NET world: AID Kit for boy-scouts
Wild Async .NET world: AID Kit for boy-scouts
 
Contract testing. Getting started with Pact IO.
Contract testing. Getting started with Pact IO.Contract testing. Getting started with Pact IO.
Contract testing. Getting started with Pact IO.
 
Testing strategies in a microservices architecture. Independence vs integration
Testing strategies in a microservices architecture.  Independence vs integrationTesting strategies in a microservices architecture.  Independence vs integration
Testing strategies in a microservices architecture. Independence vs integration
 
Leonid Sushenko "Pro scrum"
Leonid Sushenko "Pro scrum"Leonid Sushenko "Pro scrum"
Leonid Sushenko "Pro scrum"
 
"Test Design Techniques"
"Test Design Techniques" "Test Design Techniques"
"Test Design Techniques"
 
Essentials soft skills for a developer
Essentials soft skills for a developerEssentials soft skills for a developer
Essentials soft skills for a developer
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 
“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”
 
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”
Evgeniy Burak (HYS Enterprise): “Spring Data REST or intellectual job VS manual”
 
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."
Dmitriy Mustafin (HYS Enterprise) "Web UI for Back-end developer."
 
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."
Nikolay Tsyb (HYS Enterprise) "Immortal system as a piece of cake."
 
Я твой Expected Result шатал
Я твой Expected Result шаталЯ твой Expected Result шатал
Я твой Expected Result шатал
 
“Elasticsearch for .NET developers”
“Elasticsearch for .NET developers”  “Elasticsearch for .NET developers”
“Elasticsearch for .NET developers”
 
“Microservices: how to avoid making the same mistake twice.”
“Microservices: how to avoid making the same mistake twice.”“Microservices: how to avoid making the same mistake twice.”
“Microservices: how to avoid making the same mistake twice.”
 
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made Solutions
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made SolutionsCheap and Cheerful: Useful Tools for Fast Development of Ready-Made Solutions
Cheap and Cheerful: Useful Tools for Fast Development of Ready-Made Solutions
 

"Dealing with legacy code"