me

Переезд на новые технологии

Предположим, что у вас возникла необходимость кардинально сменить некоторые из технологий, использующихся на проекте: переписать на другом языке (PHP → Java), сменить СУБД, перенести бизнес-логику из БД на бэкенд и т.д. Какие пути в этом случае у вас есть?

  1. Предположим, что у вас есть ТЗ на все фичи приложения.
    В этом случае всё очень просто – берём ТЗ и по ним пишем. Наличие уже работающей старой системы является лишь приятным дополнением, на ней можно проверять какие-то неясные моменты постановок или отлаживать end-to-end тесты.

  2. В каких-то редких случаях старая и новая технологии являются настолько схожими, что можно практически напрямую транслировать старый код в новый: Java → C#, Oracle (PL/SQL) → PostgreSQL (PL/pgSQL). Впрочем, ситуация редкая и всё равно вряд ли реализуемая, поэтому не рассматриваем её совсем.

  3. Самая печальная (и про этом самая распространённая) ситуация – постановок нет, прямая трансляция невозможна.
    В этом случае работа будет идти в два этапа:

    1. Сначала с помощью реверс-инжиниринга по существующему коду восстанавливаем требования (ТЗ, постановки). Для этой цели лучше всего подойдут разработчики, хорошо разбирающиеся в старой технологии и хорошо знающие предметную область.

    2. По готовым постановкам пишем новый код. Понятно, что здесь уже нужны разработчики, владеющие новой технологией.

Описанная здесь последовательность действий, к сожалению, не всегда соблюдается, и на первый этап назначается разработчик, который плохо знает предметную область и/или старую технологию. Не делайте так, не надо!


Дедушка Волшебник, 2021-06-14