Рефакторинг кода: самое сложное, что я продавал
Рефакторинг — самое сложное, что я продавал. Софт обрастает доработками, как одноэтажный дом, на который решили надстроить ещё четыре этажа: фундамент не держит, вода не доходит. Рассказываю, зачем нужен рефакторинг кода, во что обходится отказ от него и как оттянуть момент, когда без него уже никак.
Самое сложное, что я в жизни продавал — это рефакторинг. Возможно, потому что не умею доносить ценность. Хотя, если что-то не умеешь продавать — это именно это и означает.
Вы разрабатываете софт или сайт. Разработали, внедрили, потом у вас появилось желание кое-что добавить, потом еще что-то. А вот то первое убрать.
Тут как со с строительством дома. Построили одноэтажный, потом решили достроить еще 4 этажа. Но вот проблема, что фундамент не держит, вода по трубам до пятого этажа не доходит, лифт уже не прорубить и приходится делать снаружи.
Иногда проще снести и построить новое. Либо разобрать до фундамента и собрать заново.
Не платите за рефакторинг? Тогда вырастут расходы на:
1. Доработки, они будут занимать больше часов
2. Часов на тестирование нужно больше
3. Рано или поздно приходите к ситуации, что без автотестов никуда. А на них тоже нужны часы программистов
Когда платить не надо:
1. Продукт не развивается
2. а всё, нет других вариантов
Как оттянуть момент:
1. Требования заранее собирать более полные
2. Программистов брать поопытнее
3. Правки вносить только необходимые
4. Изначально вложиться в архитектуру
Вопросы и ответы
Что такое рефакторинг и зачем он нужен?
Софт обрастает доработками, как дом, на который надстроили этажи без нужного фундамента. Иногда проще разобрать до фундамента и собрать заново — это и есть рефакторинг.
Что будет, если не делать рефакторинг?
Доработки и тестирование будут занимать больше часов. Рано или поздно без автотестов уже не обойтись, а на них тоже нужны часы программистов.
Как отложить рефакторинг кода?
Собирать требования полнее заранее, брать опытных программистов, вносить только необходимые правки и с самого начала вложиться в архитектуру.