SlideShare a Scribd company logo
www.luxoft.com
Still think you know what refactoring
is?
Dmitry Dolzhenko
30-07-2015
www.luxoft.com
О себе:
 Архитектура больших систем
 Failsafe software development
 Совершенный кодинг на любом языке
 Машинное обучение
 Компьютерное зрение
 Системы формальной математики
 Оптимизация
www.luxoft.com
Почему мы начинаем рефакторинг?
www.luxoft.com
Почему мы начинаем рефакторинг?
www.luxoft.com
Почему мы начинаем рефакторинг?
 Закон постоянного улучшения сантехников
 Уверенность в том, что «тут просто поменять прокладку»
 Уверенность в том, что именно это изменение в чужом коде сделает ваш код лучше
 Уверенность в том, что «это можно быстренько обобщить»
 Самое главное: уверенность в том, что мы знаем что такое рефакторинг
www.luxoft.com
К чему все это приводит?
 Кто из вас занимался рефакторингом?
www.luxoft.com
К чему все это приводит?
www.luxoft.com
К чему все это приводит?
 Не могу остановиться
 Срываю сроки
 Уговариваю Лида дать еще денечек, ведь осталось еще чуть-чуть
 Срываю новые сроки
 ???
 Profit FAILED
www.luxoft.com
Что такое рефакторинг?
- Все знают это слово но…
- Никто не умеет рефакторить.
- Что такое?
- Менеджер против (см что такое) (скорее всего сломаете, поскольку никто не умеет)
 Эффект Даннинга — Крюгера
- Что с этим делать?
- YAGNI, KISS, SRP, no Optimization
- SOLID
www.luxoft.com
Эффект Даннинга — Крюгера
Когнитивное искажение которое заключается в том, что люди, имеющие низкий уровень
квалификации, делают ошибочные выводы, принимают неудачные решения и при этом не
способны осознавать свои ошибки в силу низкого уровня своей квалификации
Конфуций («Истинное знание — в том, чтобы знать пределы своего невежества»)
www.luxoft.com
Что такое рефакторинг?
 Wiki: Рефакторинг это реорганизация кода процесс изменения внутренней структуры
программы, не затрагивающий её внешнего поведения и имеющий целью облегчить
понимание её работы.
 Wiki (Eng): Code refactoring is the process of restructuring existing computer code – changing
the factoring – without changing its external behavior.
www.luxoft.com
Почему менеджер против?
 Вы предлагаете «отрефакторить» код
 Менеджер против
 Вы говорите, что основываясь на вашем опыте команда увеличит скорость разработки
если провести рефакторинг
 Менеджер против
 Вы говорите, что это займет всего месяц, а окупится в будущем сторицей, ведь это общая
практика для IT проектов
 Менеджер против
 Вы думаете, что сделали что могли, но менеджер туп.
www.luxoft.com
Так почему же менеджер против?
 Эффект Даннинга — Крюгера
 Статистика
 Цель
 Риски
 Бюджет
 План
www.luxoft.com
Что же делать?
 Осознать
 Учиться
 Повторить
www.luxoft.com
Лестница компетентности
www.luxoft.com
Thank you

More Related Content

What's hot (20)

PPTX
Developmentmanage3.0
WRider
 
PPTX
Developmentmanage1.0
HighLoad2009
 
ODP
Coding dojo
Evgeny Shepelyuk
 
PDF
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
ScrumTrek
 
PDF
"Dealing with legacy code"
HYS Enterprise
 
ODP
Как мы играли в DevOps и как получился Magento Autoscale
Andriy Samilyak
 
PDF
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Atwix
 
PPT
Как стать героем
Yakov Sirotkin
 
PDF
Алексей Лустин. Непрерывная проверка качества кода.
ScrumTrek
 
PPTX
Отбор разработчика за 15 минут с помощью ролевых игр
Roman Yuferev
 
PPTX
Практики гибкой разработки. Пётр Адрианов
NTR Lab
 
PDF
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Mad Devs
 
PPTX
бородин об эмпирической разработке
Magneta AI
 
KEY
Выпрыгнуть из рамок
Kirill Klimov
 
PDF
Переход от монолитной архитектуры к распределенной
Alexander Byndyu
 
PPTX
Software craftsmanship 2
Pavel Veinik
 
PDF
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
 
PPTX
Software craftsmanship meetup #4
Pavel Veinik
 
PDF
Service orientation approaches_of_kanban_method
PilipSychou
 
PDF
Михаил Подурец. Почему Agile не работает (на самом деле нет). Agiledays2017
LuxoftAgilePractice
 
Developmentmanage3.0
WRider
 
Developmentmanage1.0
HighLoad2009
 
Coding dojo
Evgeny Shepelyuk
 
Евгений Джамалов. Agile в условиях мульти-вендорности и распределённых команд.
ScrumTrek
 
"Dealing with legacy code"
HYS Enterprise
 
Как мы играли в DevOps и как получился Magento Autoscale
Andriy Samilyak
 
Андрей Самиляк - Meet Magento Ukraine - Как мы играли в DevOps и как получилс...
Atwix
 
Как стать героем
Yakov Sirotkin
 
Алексей Лустин. Непрерывная проверка качества кода.
ScrumTrek
 
Отбор разработчика за 15 минут с помощью ролевых игр
Roman Yuferev
 
Практики гибкой разработки. Пётр Адрианов
NTR Lab
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Mad Devs
 
бородин об эмпирической разработке
Magneta AI
 
Выпрыгнуть из рамок
Kirill Klimov
 
Переход от монолитной архитектуры к распределенной
Alexander Byndyu
 
Software craftsmanship 2
Pavel Veinik
 
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
 
Software craftsmanship meetup #4
Pavel Veinik
 
Service orientation approaches_of_kanban_method
PilipSychou
 
Михаил Подурец. Почему Agile не работает (на самом деле нет). Agiledays2017
LuxoftAgilePractice
 

Viewers also liked (8)

PDF
Sxsw connected world
Rose Burt
 
PPTX
TellYourStoryBetter_Short
Joan-Marie Ebert
 
PPTX
Life science unit 3
sinegugulethu
 
PPTX
#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]
Security Session
 
PDF
Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...
Security Session
 
PPTX
Ppt ikm
karlinadwie
 
PDF
Physiology Poster
Emelie Obrochta
 
PDF
Звіт UAS - Українського Агенству Стандартизації за 2016
Max Nefyodov
 
Sxsw connected world
Rose Burt
 
TellYourStoryBetter_Short
Joan-Marie Ebert
 
Life science unit 3
sinegugulethu
 
#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]
Security Session
 
Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...
Security Session
 
Ppt ikm
karlinadwie
 
Physiology Poster
Emelie Obrochta
 
Звіт UAS - Українського Агенству Стандартизації за 2016
Max Nefyodov
 
Ad

More from Anna Shymchenko (20)

PPTX
Константин Маркович: "Creating modular application using Spring Boot "
Anna Shymchenko
 
PPTX
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Anna Shymchenko
 
PPTX
Евгений Руднев: "Programmers Approach to Error Handling"
Anna Shymchenko
 
PPTX
Александр Куцан: "Static Code Analysis in C++"
Anna Shymchenko
 
PPTX
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Anna Shymchenko
 
PPTX
Орхан Гасимов: "Reactive Applications in Java with Akka"
Anna Shymchenko
 
PPTX
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Anna Shymchenko
 
PPTX
Денис Прокопюк: “JMX in Java EE applications”
Anna Shymchenko
 
PDF
Роман Яворский "Introduction to DevOps"
Anna Shymchenko
 
PDF
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Anna Shymchenko
 
PDF
Андрей Лисниченко "SQL Injection"
Anna Shymchenko
 
PPTX
Светлана Мухина "Metrics on agile projects"
Anna Shymchenko
 
PPTX
Андрей Слободяник "Test driven development using mockito"
Anna Shymchenko
 
PPTX
Евгений Хыст "Application performance database related problems"
Anna Shymchenko
 
PPTX
Даурен Муса “IBM WebSphere - expensive but effective”
Anna Shymchenko
 
PPTX
Александр Пашинский "Reinventing Design Patterns with Java 8"
Anna Shymchenko
 
PPTX
Евгений Капинос "Advanced JPA (Java Persistent API)"
Anna Shymchenko
 
PPTX
Event-driven architecture with Java technology stack
Anna Shymchenko
 
PPTX
Do we need SOLID principles during software development?
Anna Shymchenko
 
PPTX
Guava - Elements of Functional Programming
Anna Shymchenko
 
Константин Маркович: "Creating modular application using Spring Boot "
Anna Shymchenko
 
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Anna Shymchenko
 
Евгений Руднев: "Programmers Approach to Error Handling"
Anna Shymchenko
 
Александр Куцан: "Static Code Analysis in C++"
Anna Shymchenko
 
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Anna Shymchenko
 
Орхан Гасимов: "Reactive Applications in Java with Akka"
Anna Shymchenko
 
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Anna Shymchenko
 
Денис Прокопюк: “JMX in Java EE applications”
Anna Shymchenko
 
Роман Яворский "Introduction to DevOps"
Anna Shymchenko
 
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Anna Shymchenko
 
Андрей Лисниченко "SQL Injection"
Anna Shymchenko
 
Светлана Мухина "Metrics on agile projects"
Anna Shymchenko
 
Андрей Слободяник "Test driven development using mockito"
Anna Shymchenko
 
Евгений Хыст "Application performance database related problems"
Anna Shymchenko
 
Даурен Муса “IBM WebSphere - expensive but effective”
Anna Shymchenko
 
Александр Пашинский "Reinventing Design Patterns with Java 8"
Anna Shymchenko
 
Евгений Капинос "Advanced JPA (Java Persistent API)"
Anna Shymchenko
 
Event-driven architecture with Java technology stack
Anna Shymchenko
 
Do we need SOLID principles during software development?
Anna Shymchenko
 
Guava - Elements of Functional Programming
Anna Shymchenko
 
Ad

Дмитрий Долженко "You think you know everything about algorithms and refactoring?"

  • 1. www.luxoft.com Still think you know what refactoring is? Dmitry Dolzhenko 30-07-2015
  • 2. www.luxoft.com О себе:  Архитектура больших систем  Failsafe software development  Совершенный кодинг на любом языке  Машинное обучение  Компьютерное зрение  Системы формальной математики  Оптимизация
  • 5. www.luxoft.com Почему мы начинаем рефакторинг?  Закон постоянного улучшения сантехников  Уверенность в том, что «тут просто поменять прокладку»  Уверенность в том, что именно это изменение в чужом коде сделает ваш код лучше  Уверенность в том, что «это можно быстренько обобщить»  Самое главное: уверенность в том, что мы знаем что такое рефакторинг
  • 6. www.luxoft.com К чему все это приводит?  Кто из вас занимался рефакторингом?
  • 7. www.luxoft.com К чему все это приводит?
  • 8. www.luxoft.com К чему все это приводит?  Не могу остановиться  Срываю сроки  Уговариваю Лида дать еще денечек, ведь осталось еще чуть-чуть  Срываю новые сроки  ???  Profit FAILED
  • 9. www.luxoft.com Что такое рефакторинг? - Все знают это слово но… - Никто не умеет рефакторить. - Что такое? - Менеджер против (см что такое) (скорее всего сломаете, поскольку никто не умеет)  Эффект Даннинга — Крюгера - Что с этим делать? - YAGNI, KISS, SRP, no Optimization - SOLID
  • 10. www.luxoft.com Эффект Даннинга — Крюгера Когнитивное искажение которое заключается в том, что люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом не способны осознавать свои ошибки в силу низкого уровня своей квалификации Конфуций («Истинное знание — в том, чтобы знать пределы своего невежества»)
  • 11. www.luxoft.com Что такое рефакторинг?  Wiki: Рефакторинг это реорганизация кода процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы.  Wiki (Eng): Code refactoring is the process of restructuring existing computer code – changing the factoring – without changing its external behavior.
  • 12. www.luxoft.com Почему менеджер против?  Вы предлагаете «отрефакторить» код  Менеджер против  Вы говорите, что основываясь на вашем опыте команда увеличит скорость разработки если провести рефакторинг  Менеджер против  Вы говорите, что это займет всего месяц, а окупится в будущем сторицей, ведь это общая практика для IT проектов  Менеджер против  Вы думаете, что сделали что могли, но менеджер туп.
  • 13. www.luxoft.com Так почему же менеджер против?  Эффект Даннинга — Крюгера  Статистика  Цель  Риски  Бюджет  План
  • 14. www.luxoft.com Что же делать?  Осознать  Учиться  Повторить