Backend-проблемы, которых не видно в туториалах
Когда я начинал учить Java, задачи были яснее. Есть класс, есть метод, есть база; приходит запрос, уходит ответ. Задание закончено — программа работает.
В реальной системе «работает» — очень низкая планка.
Что будет, если запрос придёт дважды? Если база ответит медленно? Если другой сервис не отвечает? Если оператор введёт неверные данные? Можно ли сегодня трогать вчерашнюю операцию? Что если одну и ту же комнату забронируют на двоих? Что если оплата прошла, а ответ потерялся?
Главное, что я понял
Backend-разработка для меня всё меньше про «писать код» и всё больше про то, чтобы заранее продумать, что может произойти.
Сам код важен. Но для системы, которая живёт в продакшене, состояние, отказы, согласованность данных, логирование, безопасность и восстановление важны не меньше.
Я не считаю, что знаю всё это до конца. Наоборот: в каждом реальном проекте всплывает новая деталь, и часть подходов, в которых я был уверен, приходится обдумывать заново.
В этом и есть интересная сторона software engineering. Учиться не перестаёшь. Просто меняются задачи, с которыми сталкиваешься.