Слово дня: Brownfield
Произносится «брАунфилд», и это дословно коричневое поле. Но, конечно, просто так в лоб перевести недостаточно.
Термин этот возник ещё полвека назад среди застройщиков и описывал разницу между стройкой на новом месте и стройкой там, где раньше уже что-то было. Собственно, «зелёная поляна», где растёт травка это новая площадка, там строить проще. А вот строить на месте, где уже до этого были какие-то заводы, которые к тому же могли почву не только захламить, но ещё и отравляющими химикатами или отходами производства загрязнить это совсем другое дело. Даже если и не отравили, это всё равно надо выяснять, изучать и доказывать разным контрольным службам. Вот от глинисто-землистого цвета таких площадок и пошёл термин, хотя, конечно же, всё коричневое в английском ещё плотно ассоциируется с дерьмецом тоже.
Но потом, с развитием компьютерных технологий, термин переродился и означает уже другое. Теперь «браунфилд» означает не застройку, а ситуацию, когда компания берётся за проект: это проект с нуля или же там уже есть какой-то продукт, процесс, бизнес, который надо чинить или улучшать. И тут, конечно же, вовсе не очевидно, лучше ли это, чем «гринфилд», или хуже — может быть по-разному, но удобно этим термином ёмко и кратко охарактеризовать суть.
У всех, кто занимается большими и сложными технологическими проектами, которые тянутся не первый год, возникает сильный соблазн всё переписать с нуля. И иногда это оправдано, но чаще — нет. Когда думаешь о работе с чистого листа, можно выбрать новые технологии, сразу учесть известные сложности, промасштабировать архитектуру. Но чаще всего это иллюзия. Мир сложный, и старый проект учитывал, как правило, множество непростых обстоятельств, исправлял ограничения и баги систем и платформ, на которых строился. И почти всегда к моменту, когда новая переделка с нуля выходит на уровень сложности и оперативного функционала старой системы, большая часть неприятного багажа опять висит непомерной ношей, ради избавления от которой всё сначала и хотелось переделать. Я бы сказал, что если старая система уже работает и окупает себя, стройка новой с нуля не окупится. Кроме случаев, когда старая уже такая дряхлая, что поддержка дороже выгоды.
На эту тему даже есть закон Мёрфи: «Каждая существующая система кажется устаревшей, а несуществующая — идеальной».
Есть такой чувак Джол Спольски, известный по своему сайту joelonsoftware.com. Я его читаю очень давно, наверное, это был один из первых блогов, которые я вообще начал читать в интернете много-много-много лет назад. Так вот, у него тоже ещё очень давно была статья «Things You Should Never Do» (То, что никогда нельзя делать). Там была часть про худшее, что можно сделать, и он прямо называет переписывание с нуля худшим стратегическим решением компании. Его тезис: старый «уродливый» код содержит тысячи исправлений багов, которые ты не видишь — и при переписывании ты воспроизведёшь все те же ошибки заново.
Но соблазн переписывать всегда велик, и иногда это стоит того. Просто надо помнить про все сложности. Но «браунфилд» — это не только про написание софта. Это ещё и про создание бизнеса. Например, можно построить новый магазин с нуля, а можно взять старый, существующий, и переделать его, оставив связи с покупателями и поставщиками, задействовав старый бренд и «натоптанные тропы». Это всё тоже будет «браунфилдинг».
В общем, «браунфилд» это работа с тем, что есть, то есть с реальностью, а «гринфилд» больше про фантазии или, скажем мягко, стремление к идеализму. Хотя часто это именно то, что нужно.





