SDLC нашей жизни

Просто мысли озвучиваю, пока допиливаю не реализованные в исходнике права mattermost... И я не знаю - чего меня на такую тему повело - наверное как многое в моей голове - "просто потому что".

Рождение - открытие IDE.

Создаётся пустой файл. Пока только одно свойство: name = "Человек". Дальше - подключение базы. Сначала простейшей: SQLite. В неё складываются первые данные: кто рядом, что можно, что нельзя. Появляются методы: ходить(), бежать(), сказать(), попросить(). Всё просто. Всё работает.

Школа - первый рефакторинг

База не тянет. Данных становится много. Переходим на MySQL. Появляются связи: friends, grades, conflicts. Классы разрастаются. Новые методы: учиться(), дружить(), ссориться(), мириться(). Иногда код падает - и ты не знаешь, почему. Иногда ты смотришь на других и закрадывается мысль - какие классы они в своих проектах добавили, что так все работает хорошо? Только не думаешь, что у тебя тоже есть уникальные классы, которых нет у окружающих.

Институт - второй рефакторинг

Ты уже понимаешь, что писать с нуля - неэффективно. Берёшь готовый фреймворк. Какой? По популярности. По совету родителей. По тому, что "все так делают". Подключаешь. Появляются роуты, контроллеры, миграции. Ты уже не просто пишешь, ты проектируешь. Конструируешь собственный реальность, хотя пока не очень понимаешь как фреймворк работает и что он вообще может. А фреймворки не всегда делает то, что ты хочешь. И ты пытаешься понять, но по большей части не понимаешь, как оно устроено. Ты пытаешься понять, как работает мир, а он не даёт документации и приходится лепить костыли в коде, чтобы соответствовать видимой части окружающего мира.

Поиск второй половинки - работа с API

Ты подключаешься к внешнему API - "знакомства". Через него приходят данные. Ты фильтруешь, сортируешь, тестируешь. Некоторые ответы приходят с ошибкой - 401 Unauthorized. Другие - с пустым телом. Ты меняешь запросы. Пробуешь другие ключи. Иногда API отвечает, и ты получаешь валидный объект. Начинаешь с ним работать. Интегрируешь его в свою систему. Проект становится сложнее за счет межсерверной интеграции. В конечном итоге, вы получаете сертификат SSL и становитесь кластером "семья".

Работа - третий рефакторинг

Выходишь в прод. Нагрузка растёт. MySQL уже не тянет. Приходится ставить PostgreSQL. А то и MongoDB для неструктурированных данных. Появляются очереди, кэши, микросервисы. Ты уже не просто разработчик. Ты - архитектор собственного сервера. Ты управляешь проектами, взаимосвязями с другими людьми-серверами, сроками. Но иногда смотришь на написанный ранее код, и понимаешь: ты подключил столько зависимостей, что уже не помнишь, какой из них критический. А в корне всего лежит тот самый файл с единственным свойством name = "Человек".

Пенсия - поддержка легаси

Ты уже не пишешь новый код. Ты поддерживаешь старый. Иногда обращаешься в техподдержку "поликлинника" для исправления багов. Обновляешь зависимости, потому что иначе всё упадёт. Смотришь на код, написанный 20-40-60 лет назад, и думаешь: "Как я мог такое написать?". Но он работает. И ты боишься его трогать.

Смерть - die('R.I.P.');

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

Жизнь - это проект

И ты - его главный разработчик. Ты выбираешь стек, архитектуру, подходы. Ты подключаешь библиотеки, которых не знаешь. Ты интегрируешься с внешними API. Ты решаешь, когда делать рефакторинг, а когда оставить как есть.

И главное - ты решаешь, будет ли твой код жить после тебя.

Да... Удачи всем в продакшене!