Ответ
Основная причина — отсутствие возможностей для профессионального роста в области Node.js и современных веб-технологий. На предыдущем проекте использовался устаревший стек: преимущественно callback-стиль вместо async/await, отсутствие TypeScript, монолитная архитектура вместо микросервисов.
Конкретные примеры из опыта:
- Поддержка legacy-кода с глубокой вложенностью callback'ов ("callback hell"):
function processUserOrder(userId, orderId, callback) { db.getUser(userId, (err, user) => { if (err) return callback(err); db.getOrder(orderId, (err, order) => { if (err) return callback(err); // ... ещё несколько уровней вложенности }); }); } - Отсутствие современных практик: не было code review, CI/CD pipeline'ов, автоматического тестирования.
- Технический долг накапливался без планов по рефакторингу.
Я искал позицию, где смогу применять и развивать навыки работы с современным Node.js-стеком: TypeScript, Nest.js/Fastify, микросервисная архитектура, контейнеризация, и где ценятся качество кода и инженерные практики.
Ответ 18+ 🔞
А знаешь, почему я с того места свалил? Да потому что там, ёпта, профессиональный рост в Node.js был как у черепахи в асфальте — никакой, блядь. Сидел я на проекте, где технологии застряли где-то в 2012-м, ей-богу. Всё на коллбэках, этот ваш ад коллбэков, TypeScript — это было ругательство, а про микросервисы там и слыхом не слыхивали, один монолит, который только бензина жрал.
Вот тебе, блядь, живые примеры, от которых волосы дыбом:
- Поддержка этого легаси-кода, где вложенность коллбэков была такая, что я сам от себя охуевал. Называлось это "callback hell", а на деле — просто пиздец, чистая пиздопроебибна. Смотри, какую дичь приходилось читать:
function processUserOrder(userId, orderId, callback) {
db.getUser(userId, (err, user) => {
if (err) return callback(err);
db.getOrder(orderId, (err, order) => {
if (err) return callback(err);
// ... ещё несколько уровней вложенности
});
});
}
Чувак, это ж надо было иметь терпения ноль ебать, чтобы в этом ковыряться. Каждый раз как в джунгли лезешь, только вместо лиан — стрелочные функции.
- А про современные практики там, блядь, и речи не было. Code review? Да похуй. CI/CD пайплайны? Хуй с горы. Автоматические тесты? Это что-то из разряда фантастики. Технический долг копился, как снежный ком, и всем было насрать. Чувствовал себя археологом на раскопках древнего говна, а не разработчиком.
Вот я и искал место, где можно нормально работать с современным стеком: TypeScript, Nest.js или Fastify, микросервисы, контейнеры — всё как у людей. Где качество кода не пустой звук, а инженерные практики ценятся, а не вызывают удивление пиздец. Ну не могу я, понимаешь, в таком болоте киснуть, когда вокруг ебать колотить, сколько всего интересного происходит.