Ответ
Основная причина — отсутствие профессионального роста и технологического развития.
Конкретные триггеры для смены проекта:
1. Технологический застой
- Работа с устаревшим стеком без миграции на современные решения (например, только Objective-C, UIKit без SwiftUI, ручное управление памятью).
- Отсутствие внедрения новых архитектурных подходов (MVVM, Clean Architecture, TCA) и современных фреймворков (Combine, Swift Concurrency).
2. Некачественные процессы разработки
- Отсутствие CI/CD, автоматического тестирования, код-ревью.
- Постоянные авралы и техдолг, которые не планируется устранять.
- Культура «работает — не трогай» вместо рефакторинга.
3. Ограниченное влияние и сфера ответственности
- Невозможность влиять на архитектурные решения или продуктовую стратегию.
- Выполнение только узких, рутинных задач без возможности менять стек или процессы.
4. Неинтересная предметная область
- Проект не представляет интеллектуального вызова или не решает значимых проблем.
Пример антипаттерна, который демотивирует:
// Legacy-код, который нельзя рефакторить
func loadData() {
// Синхронный сетевой запрос на главном потоке ❌
let data = try! Data(contentsOf: someURL!)
// Массивный View Controller без разделения ответственности ❌
parseAndUpdateUI(data)
}
Идеальный проект предполагает современный стек, чистую архитектуру, автоматизированные процессы и возможность вносить значимый вклад в продукт.