Замена проводки в доме как рефакторинг кода
👁 878
Я жил в квартире, где нельзя было включить чайник и микроволновку одновременно.
По студенчеству, когда мои родители развелись, они разъехались, оставив мне квартиру. Не то чтобы я прям горевал от этого, даже наоборот - у меня появилась свобода действий и я решил сделать ремонт. Ну а куда еще можно было пустить повышенную стипендию от факультета в 6700₽ )
Самой главной проблемой была проводка. Алюминиевые провода, которые уже отжили своё и частенько где-то начинали коротить. Особенно это ощущалось на кухне во время готовки.
Чайник, микроволновка и плита вообще не дружили друг с другом. Пропускная способность оставляла желать лучшего. При одновременном включении выбивало автоматы, а замена автоматов на более мощные давала ощутимый запах гари по всей квартире.
В общем живёшь и подстраиваешься. Сначала чайник включил, выключился, потом микроволновку запускаешь.
Первый раз выбило - ладно, бывает. Второй раз - морщишься, но терпишь. Третий раз - идёшь менять проводку.
Это, кстати, ровно то, что в программировании называют "правилом трёх". Столкнулся с проблемой один раз - ок. Второй раз - записал в голове. Третий - рефакторишь. Не раньше.
И вот я оказался перед выбором. Либо менять проводку, а это значит вскрывать стены. Либо не менять и жить с ограничением. Никакой параллельной нагрузки.
Короче я решил сделать рефакторинг проводки, выпилить всё старое и сделать с умом по-новому.
В целом, весь подход и процесс очень схож с принятием решений в программировании.
Рефакторинг - это не про "сделать красиво". Это про пропускную способность системы. Текущий код работает. Но выдержит ли он следующую фичу? А десять следующих? Или я буду каждый раз "выключать чайник перед тем как включить микроволновку"?
А замена автоматов на более мощные без замены проводки - это как увеличить таймауты вместо оптимизации запросов. Формально работает, но пахнет гарью.
Три вопроса перед любым рефакторингом:
Первый - мне реально не хватает мощности? Код тормозит добавление фич, баги лезут из одного места, новый разработчик не может разобраться за день. Если нет - то не надо трогать.
Второй - я точно знаю какой участок менять? Электрик не меняет проводку во всём доме, если проблема в одной комнате. Рефакторинг всего проекта - это не рефакторинг, это переписывание. А переписывание - это новый проект с новыми багами.
Третий - я могу это сделать не останавливая пользователей? В проде живут люди. Они платят деньги. Рефакторинг, который требует двухнедельного фриза на фичи - это не рефакторинг, это ремонт с выселением.
Лучший рефакторинг - как замена розетки. Вскрыл одну точку, поменял, закрыл. Жильцы даже не заметили.
Худший - как мой ремонт на стипендию. Вскрыл все стены, деньги кончились, живёшь без обоев пару месяцев.
Кстати в итоге мой ремонт превратился в стиль жизни и я его делал на протяжении всех 5 курсов института, главное теперь не допускать такого в коде 😅
94