Без рефакторинга сложно поддерживать приложение долгое время.

Долг

«Долг - это обязательство, которое требует от одной стороны, должника, уплаты денег или другой согласованной стоимости другой стороне, кредитору». - Википедия

Это соотношение ссуды и долга вполне реально. Страны создают государственный долг, компании получают ссуды, люди получают ипотечные ссуды. После того, как я прочитал «Принципы» Рэя Далио, меня больше заинтересовало то, что он сказал. Нашла вот это видео:

Он объясняет, как работает экономическая машина, и цитата, которую я вспомнил:

В конечном итоге производительность имеет значение. Кредит имеет значение в краткосрочной перспективе. - Рэй Далио

Он показал, как это работает на графике.

Кредит - это то, что позволяет нам ускорить и взять верх над конкурентами. Если задуматься на реальном живом примере: купили ли вы квартиру в городе? Хорошо, я сделал. Я хотел купить его на те деньги, которые у меня были, но цена на рынке росла быстрее, чем я копил. Итак, я получил ипотеку - я заморозил цену, по которой хотел купить, и теперь буду платить проценты своему банку за то, что мне это позволили.

Технический долг

Как программист мне нравится находить реальные примеры того, над чем я работаю. Эта аналогия с долгом заставила меня задуматься о техническом долге. Технический долг всегда растет. Он может расти быстрее или медленнее, но он будет расти, пока мы не проведем ПЕРЕРАБОТКУ. Я подчеркнул это, потому что это модное слово среди программистов. Рефакторинг - это поворотный момент к чистоте кода. Это как день уборки квартиры в субботу или Всемирный день уборки в сентябре. Если бы мы этого не сделали, мы бы утонули в беспорядке.

Раньше я слышал, как владельцы продуктов спрашивали «Почему вы не сделали это с первого раза?». Не так ли? Почему у нас появилось столько функций в приложении за такое короткое время? Мы могли бы оценить функции, которые будут созданы лучше, но на это нужно время. Это как если вы хотите приготовить два блюда. Вы можете подготовить один, очистить рабочее место, а затем подготовить второе, или вы можете подготовить и то, и другое, а потом очистить. Итак, рефакторинг - это очистка.

Иногда требования меняются во время работы над функцией. Обычно мы должны думать, насколько мы далеки от изменений. Подумайте об этом - вы копаете яму, а инвестор подходит к вам и говорит «Я хочу яму побольше». Ничего страшного, ты все равно копаешь. Другое дело, когда вы уже залили его влажным бетоном. Вы ничего не можете сделать. Вы должны дать ему высохнуть, разбить его и вытащить - долг - и тогда вы сможете выкопать более глубокую яму. Я предлагаю вам подумать об этом в следующий раз, когда вы будете работать над какой-нибудь функцией.

Команда продукта

Группа разработчиков сосредоточена на бизнес-части приложения - вы специалист в области технологий. Так же, как вы не понимаете их работу, они не обязательно понимают вашу. Вы должны продать это Продукту, поэтому время от времени требуется спринт по техническому долгу. Нам удалось убедить нашу команду по продукту проводить регулярные спринты по техническому долгу, а также по пятницам для небольшого рефакторинга.

Правильная архитектура

Я не могу сказать, насколько важна архитектура в приложении. Я читал много статей, в которых говорилось, что вам следует начать с POC, отказаться от тестов, потому что никто не хочет за них платить и т. Д. И т. Д. Это может работать в сервисных компаниях, где вы готовите приложение для клиентов, они одобряют, они платят, и они уезжают.

К счастью, мне удалось убедить всех разработчиков в моей команде, что чрезвычайно важно начинать с уровня домена и содержательных тестов. Я большой энтузиаст тестирования - работаю в TDD. Я знаю, что всегда бывает момент, когда ты думаешь "Спасибо, тесты!". С этого момента их пишет каждый разработчик. Это огромная прибыль - вы не работаете над ошибками, вы не работаете над регрессией, и даже если тестировщики или клиенты находят ошибку, вы создаете тест, чтобы охватить этот случай, и он исчезнет навсегда.

А что с архитектурой? Важно, чтобы он был нарисован, например на www.draw.io, чтобы все могли это увидеть. Это помогает с рефакторингом, вы можете легко найти места, к которым стоит вернуться и переосмыслить. У зрелых проектов всегда есть архитектура, и редко можно увидеть, чтобы POC переходил в зрелый проект. Есть такая черта, что если вы ее пройдете, технический долг не сможет быть возвращен, и тогда вы уйдете.

Что будешь делать?