SlideShare a Scribd company logo
1 of 60
Download to read offline
Этот код плохой, 

его нужно переписать
Нужно ли, когда, почему?
Частый вопрос
Как доказать бизнесу, что это нужно
Термины
Рефакторинг и переписывание
Если вы правы, то как
доказать это бизнесу?
Думай как бизнес - решай чужую проблему, 

а не свою
с какой мы стороны
денег?
2*2 = ? 



а мы покупаем или продаем?
Чаще переписывают
не плохой код
а вполне хороший, но больше не решающий
бизнес задачу
Критерии кодеров не
относятся к решению
бизнес задач
Кроме одного - они больше не могут деливерить. 

Технические критерии не имеют значения -
паттерны, старые/новые языки, это все очень
интересно (самим кодерам)
мало кто говорит что его код
плохой. 

плохой код всегда писали
предшественники
«Добро» и «зло» в
бизнесе и технологиях
одинаковы
Менеджер уходит за квартал до итогов года

Программист перед релизом
автор и технология
язык + фреймворк и/или библиотеки

проблемы могут быть и там и там
автор свой код переписывает или чужой?
Культура переписывания была
развита у XP программистов,
они рефакторили (постоянно)
Пишут код 1 раз
Читают 10+ раз

Разные люди. 

Уважайте их и они будут уважать вас
7ми летних детей учат
писать так, чтобы не
переписывать
Кто видел желающих
переписать любой
OpenSource проект?
Почему живет Legacy
код на Java 1.2, COBOL,
AngularJS 1?
Мейнфреймы. Их пытаются
закрыть, но клиенты
держатся "за любые деньги"
Почему вкладывают деньги
в поддержку Legacy, 

а не переписывание?
Факт 1 - бизнес сделает
все, чтобы ничего не
переписывать
Кода на COBOL - море
• Он хорошо работает. 

• С точки зрения не только джуна, просто с роли кодера
код на COBOL СЕГОДНЯ - ПЛОХОЙ. 

• Программист - больше, чем кодер
• Бизнес - больше, чем программист
Что такое плохой код?
И почему это не объективно?
появление проблемы
до релиза первой
версии
MVP - этот код плохой и его .. - ОК
SoundCloud -
переписали на MSA
Почему? Код не плохой
Две крайности - «софт
пограничников» vs
«CTO стартапа растет»
Почему Google не пишет
фронт на JS/React, как парни
на соседней вечеринке?
Почему в начале чуждые фронтам схемы Java
to JS и тп?

Почему AngularDart, почему на AngularJS не
перешли раньше, почему проскочили весь JS?
Культура ценностей в компании
Личный интерес разработчиков
- конфликт или синергия?
Сдержать эгоистичных
разработчиков от
переписывания кода
Дать возможность
разработчикам с инженерной
этикой переписать код
Покажите
инженерную этику
ТЕХ. ДОЛГ
• Кто что кому должен?

• Кто одолжил? Он знает или у него просто взяли в долг
без его ведома?

• Кто будет возвращать?

• Проценты ниже доходов или выше?

• Процедура банкротства - переписывание
«Костыль»
сознательный (костыль) и неосознанный (делали на пределе
умений, но предел был ниже уровня сложности проекта)

костыль - все работает, ошибок нет

делаем новые фичи - появляются ошибки или долго делать
фичу, мешает костыль явно или неявно
Философия Windows,
Mac, FreeBSD, Linux
Обновления системы, апгрейд версии со стороны
разработчиков и пользователей

by design - судьба на десят лет +

вы не смените архитектуру после MVP
Если это что-то
важное, то оно с чем-
то связано
SOAP, REST, ПРИВЫЧКИ ЮЗЕРОВ

переписывайте компоненты, 

но не интерфейсы
Совместимость
• ABI

• SOA

• MSA
Критерии для бизнеса
• время до выхода продукта на рынок

• время вывода новой фичи (SoundCloud MSA, DevOps,
TDD), цена фичи

• Цена фичи / ценность фичи

• Риски по качеству - «влет» из-за дефектов (после
релиза)

• Риски по кадрам - уйдут туда, где разрешат GraphQL
Вести ли переговоры
с террористами?
Что будет с бизнесом, если вся команда уйдет на
НОВЫЕ ТЕХНОЛОГИИ?
НОВОЕ
• зачем бизнесу emergent technology?
DevOps - бизнес
термин
При правильном DevOps ничего не придется
переписывать. Но где вы видели правильный
DevOps?

В треугольник цена, сроки, качество добавим
интеллект
Бизнес - это люди
• Собственники с правом решать

• Акционеры без права решать, но с рекомендацией
отправить все в облако, чтобы сэкономить

• CEO

• Менеджеры

• Линия потери смыслов - аутсорс
Пользователи - тоже
люди
• Пользователи не могут хотеть фичи (пользователь
входит в когорты и не имеет личности, только
настройки фона в кабинете)

• За них это делают представители бизнеса

• Они берут на себя РИСК проверить, будут ли
пользователи платить, ВЛОЖИВ В ЭТО ДЕНЬГИ, ЗА
КОТОРЫЕ ОНИ ОТВЕЧАЮТ
Бизнес вес фич и
предпосылки к
переписыванию
Второй критерий оценки - добавлять ли фичу?
Системное
мышление
Цепочки от хороших идей до больших проблем
Критерии качества
архитектуры
ISO-25010
Сквозная
функциональность
Очевидно -
Maintainability
Шаг вперед, два шага назад. Переписываем
Новые требования к
Reliability
Сильный рост
нагрузки
«Не тянем» нагрузку

Дорого тянуть
Новые требования к
безопасности
React Native ->
Native
Case как FB сделал Native app сам когда-то
React Native ->
Flutter
«Принцип торнадо»
В облако с или без
переписывания?
С переписыванием - операционка иначе
считается
Лямбды - повод
переписать?
Home Work
риски / возможности
• рост влияния рисков

• типы компаний по роли софта в бизнесе

• мы чем-то рискуем (новые конкуренты) или нам за это
заплатят пользователи? (обновление продукта)
На что переписать?
• Когда MS затеял TypeScript, они сначала написали что-
то на JS и решили это переписать (но без JS)? 

• или решили создать язык ради языка или рынка
(лопаты золотоискателям)?
Переписывать на что
• Смена фреймворка (был «неправильный», появился
лучше (решающий бизнес задачу (меньше кода, лучше
структура)))

• Смена языка

• Смена поколения языка

• Смена архитектуры - SOA, MSA, MVC, introduce Kafka,
AWS
уровни экспертизы - выше
старого кода или ниже
• знание об этом менеджера исполнителя 

• знание об этом клиента

• знание об этом пользователя

• знание об этом контролирующих органов (самолет)
как пережить кризис и не
переписывать?
• 1го года

• 2го года

• 3го года

• каждый продукт на Agile через 2-3 года заходит в
«опасные земли»
Когда мы перешли от
как переписать к как не
переписывать?
А это и есть главная цель - переписать нужно.
НО ОДИН РАЗ. Или даже не начинайте разговор
Когда таки нужно
переписывать?
• Есть план, как не переписывать снова через 2-3 года

• Скорость внесения новых фич сейчас делает убытки
бизнесу и ведет его к катастрофе

• Нефункциональные требования нельзя реализовать -
они не компонент системы, а ее свойство!

• Иначе кодеры уйдут, все развалится и бизнес тоже.
Дай террористам то, что они хотят, но не дай себя *** в
следующий раз
Код не плохой, но нужно
переписывать
• Чем меньше модуль, тем лучше - MSA - «да»

• Авторов м сервиса на Rust больше нет - MSA было «да»

• Код написан на Haskell и я его не понимаю (и не
должен, кому в голову пришло написать это на
Haskell?)

• Код написан сеньором, меня назначили сеньором, но я
не сеньор, бизнес в меня вкладывается
Спасибо
max.bezugly@gmail.com
International Software Architect Club (FB, T)

More Related Content

What's hot

Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileScrumTrek
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.ScrumTrek
 
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software DevelopmentAlexey Krivitsky
 
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программистаMikhail Payson
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps_Fest
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8Pavel Veinik
 
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеКак учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеMIkhail Neverov
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D Prit2010
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellencePavel Veinik
 
Первый опыт устройства на работу
Первый опыт устройства на работуПервый опыт устройства на работу
Первый опыт устройства на работуSam Faktorovich
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовrit2010
 
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновCoub
 
Алексей Аникутин
Алексей АникутинАлексей Аникутин
Алексей АникутинDevGAMM Conference
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgilePavel Veinik
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
 
Лайфхаки при аутсорсе - Эдуард Христусь, Func
Лайфхаки при аутсорсе - Эдуард Христусь, FuncЛайфхаки при аутсорсе - Эдуард Христусь, Func
Лайфхаки при аутсорсе - Эдуард Христусь, FunciDealMachine
 

What's hot (20)

Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
 
структура It компании
структура It компанииструктура It компании
структура It компании
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.
 
Things To Unlearn In Software Development
Things To Unlearn In Software DevelopmentThings To Unlearn In Software Development
Things To Unlearn In Software Development
 
Как воспитать программиста
Как воспитать программистаКак воспитать программиста
Как воспитать программиста
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
 
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеКак учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D P
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
 
Первый опыт устройства на работу
Первый опыт устройства на работуПервый опыт устройства на работу
Первый опыт устройства на работу
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
 
Правила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил ТабуновПравила отличного разработчика, Михаил Табунов
Правила отличного разработчика, Михаил Табунов
 
Алексей Аникутин
Алексей АникутинАлексей Аникутин
Алексей Аникутин
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Agile testing
Agile testingAgile testing
Agile testing
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы Agile
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Лайфхаки при аутсорсе - Эдуард Христусь, Func
Лайфхаки при аутсорсе - Эдуард Христусь, FuncЛайфхаки при аутсорсе - Эдуард Христусь, Func
Лайфхаки при аутсорсе - Эдуард Христусь, Func
 

Similar to "Этот код плохой, его нужно переписать". Слышали? Как обосновать

Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#geekfamilyrussia
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
Пишем вакансии для Job сайтов
Пишем вакансии для Job сайтовПишем вакансии для Job сайтов
Пишем вакансии для Job сайтовOlga Kotova
 
Код-ревью в Drupal
Код-ревью в DrupalКод-ревью в Drupal
Код-ревью в DrupalShvetsGroup
 
методики управления развитием ис на базе 1с
методики управления развитием ис на базе 1сметодики управления развитием ис на базе 1с
методики управления развитием ис на базе 1сFFelix87
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneMax Klymyshyn
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сHelen Kopteva
 
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...ScrumTrek
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT0leGG
 
Эволюция внутренних процессов в большой команде
Эволюция внутренних процессов в большой командеЭволюция внутренних процессов в большой команде
Эволюция внутренних процессов в большой командеAgilie Team
 
Who is Delivery Manager?
Who is Delivery Manager?Who is Delivery Manager?
Who is Delivery Manager?Anton Vityaz
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаSQALab
 

Similar to "Этот код плохой, его нужно переписать". Слышали? Как обосновать (20)

Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#Как попасть на следующий уровень карьеры и зарплаты в C#
Как попасть на следующий уровень карьеры и зарплаты в C#
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Пишем вакансии для Job сайтов
Пишем вакансии для Job сайтовПишем вакансии для Job сайтов
Пишем вакансии для Job сайтов
 
Код-ревью в Drupal
Код-ревью в DrupalКод-ревью в Drupal
Код-ревью в Drupal
 
методики управления развитием ис на базе 1с
методики управления развитием ис на базе 1сметодики управления развитием ис на базе 1с
методики управления развитием ис на базе 1с
 
AgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get DoneAgileBaseCamp 2013 - Start Up and Get Done
AgileBaseCamp 2013 - Start Up and Get Done
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1с
 
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Эволюция внутренних процессов в большой команде
Эволюция внутренних процессов в большой командеЭволюция внутренних процессов в большой команде
Эволюция внутренних процессов в большой команде
 
Who is Delivery Manager?
Who is Delivery Manager?Who is Delivery Manager?
Who is Delivery Manager?
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
 
Развитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до закатаРазвитие IT-организации - от рассвета до заката
Развитие IT-организации - от рассвета до заката
 

"Этот код плохой, его нужно переписать". Слышали? Как обосновать