День двести пятьдесят первый. #Оффтоп #97Вещей

97 Вещей, Которые Должен Знать Каждый Программист

1. Действуйте с осторожностью



Что бы вы ни предпринимали, действуйте с осторожностью и учитывайте последствия.

- Анон



Неважно, насколько приятно выглядит график разработки в начале итерации, вы не сможете избежать работы под давлением от случая к случаю. Если вам приходится выбирать между «сделать правильно» и «сделать быстро», часто бывает соблазнительно «сделать быстро», подразумевая, что вы вернётесь и исправите это позже. Когда вы обещаете это себе, своей команде или своему клиенту, вы действительно намерены это исправить. Но слишком часто следующая итерация приносит новые проблемы, и вы сосредотачиваетесь на них. Этот вид отложенной работы известен как технический долг, и это ваш враг. В частности, Мартин Фаулер называет это преднамеренным техническим долгом, и его не следует путать с непреднамеренным.

Технический долг подобен займу: вы получаете выгоду от него в краткосрочной перспективе, но должны платить по нему проценты, пока он не будет полностью погашен. Костыли в коде затрудняют добавление функций или рефакторинг. Они являются питательной средой для ошибок и недостаточно полных тестов. Чем дольше вы их оставляете, тем хуже становится. К тому времени, когда вы приступите к выполнению первоначального исправления, может появиться целый набор не совсем правильных вариантов дизайна, наслоенных поверх исходной проблемы, что сделает код намного сложнее для рефакторинга и исправления. На самом деле, зачастую вы возвращаетесь к исправлению изначальной проблемы только тогда, когда всё становится настолько плохо, что вам не остаётся ничего другого. А к этому моменту это уже настолько трудно сделать, что вы в реальности не можете позволить себе потратить столько времени или пойти на такой риск.

Есть моменты, когда вы должны взять на себя технические долги, чтобы уложиться в срок или реализовать небольшой фрагмент функциональности. Постарайтесь не оказываться в таком положении, но, если ситуация этого требует, действуйте. Но (и это значительное «но») вы должны отслеживать технические долги и быстро их погашать, или дела быстро пойдут вниз. Как только вы примете решение пойти на компромисс, создайте задачу в своей системе отслеживания ошибок, чтобы не забыть это исправить.

Если вы планируете погашение долга на следующей итерации, стоимость будет минимальной. Оставляя долг неоплаченным, вы попадаете на проценты, и за ними нужно следить, чтобы знать цену исправления. Это позволит надлежащим образом расставлять приоритеты задач. Выбор того, как рассчитывать и отслеживать стоимость исправления технического долга, будет зависеть от конкретного проекта, но отслеживать её необходимо.



Погашайте технический долг как можно быстрее.



Источник: https://www.oreilly.com/library/view/97-things-every/9780596809515/