Издание «pravda.ru» опубликовало материалы, рассказывающие о критериях «легаси-систем» или так называемых унаследованных систем.
Директор по развитию Work Solutions, руководитель ИТ-кластера Ассоциации Развития Диджитал Агентств ARDA Артём Салютин сообщил, что «легаси-системы» — это неизбежная реальность в мире программного обеспечения:
— Любое ПО имеет свой жизненный цикл, от концепции до вывода из эксплуатации. Системы постоянно эволюционируют, и их приходится модернизировать, чтобы идти в ногу с изменениями технологий и бизнес-требований. Современные практики развёртывания позволяют незаметно для пользователей обновлять системы, но под «капотом» ведётся непрерывная работа.
По словам эксперта, «легаси» часто ошибочно применяют к любому виду унаследованных программ:
— Разработчики любую кодовую базу, которую писали не они, могут называть «легаси», но это неверно. Важно различать «легаси» и технический долг. Технический долг — это выбор, сделанный в пользу быстрого, но неоптимального решения для экономии времени в моменте, но в долгосрочной перспективе увеличение стоимости доработок. То есть вы берете в долг у проекта, используя черновое решение. А когда исправляете это решение, как бы выплачиваете проценты. Разница состоит в том, что технический долг может быть намеренным, используются временные решения для ускорения разработки или непреднамеренным из-за недостатка компетенций или отсутствия стандартов. «Легаси» же возникает на уровне инфляции. Как неизбежно дешевеют деньги, так неизбежно устаревают технологии и подходы.
Любой крупный проект, чаще всего начинается не с нуля. Веб существует более 30 лет, и все самое важное — банки, системы бронирования и многое другое уже написано и работает. Конечно, мы говорим о том, что все должно модернизироваться. И действительно, можно согласиться, что хорошая отличительная черта сеньор-разработчика — это умение понять код, написанный предшественниками, разобраться с ним и распутать «спагетти-код» (да, это тоже понятие у программистов).
Салютин отметил, что опытные разработчики не страдают предвзятым отношением, они понимают все хитросплетения и сложности этого мира, осознают, что никто не пишет плохой код намеренно:
— Поэтому они редко критикуют чужой код, умеют взять себя в руки и трезво начать его рефакторинг. Работа с «легаси» часто начинается с масштабного аудита для составления общей картины системы, используемых библиотек, поддерживаемых технологий. Опытные разработчики стремятся визуализировать архитектуру, выявить зависимости компонентов, автоматизировать процессы анализа кодовой базы. Современные IDE и плагины предоставляют инструменты для этого. Однако все равно отдельные участки необходимо разбирать вручную.
Эксперт рассказал, что решение о переписывании «легаси-системы» «с нуля» зависит от требований бизнеса и перспектив используемой технологии:
— Если язык программирования или фреймворк получают активную поддержку и развитие от вендора, выпускаются LTS-версии, то переписывание может быть излишним. Но если технология мертвая или сильно устаревшая, рано или поздно придётся её заменить. Выбор технологического стека также зависит от ландшафта рынка труда в конкретном регионе. Популярность языков и фреймворков различается, компаниям важно использовать распространённые технологии, чтобы обеспечить доступность квалифицированных кадров.
— Несмотря на нежелание многих разработчиков работать с поддержкой «легаси», задачи модернизации воспринимаются ими как профессиональный вызов и интересная инженерная проблема. В таких проектах разработчики обычно видят свет в конце туннеля и мотивированы довести дело до конца, — продолжил Артём Салютин. — Понимание и грамотная работа с «легаси-системами» – важная составляющая профессиональных навыков опытного разработчика высокого уровня. Это сложный процесс, требующий 80% времени на изучение системы и только 20% — на внесение изменений. Но умение распутывать наследие предшественников, не допуская новых ошибок и регрессов, отличает настоящих мастеров своего дела».