Ответ
Основные сложности были связаны с процессами и технологическим стеком, что ограничивало эффективность и профессиональный рост.
Ключевые проблемы:
- Устаревший стек: Работа преимущественно с Objective-C и UIKit без возможности внедрения SwiftUI/Combine, что тормозило развитие.
- Непрозрачные процессы: Частые изменения требований в середине спринта без корректировки сроков, leading to burnout и снижению качества.
- Формальный Code Review: Ревью часто сводилось к поверхностным замечаниям, что приводило к накоплению технического долга и снижению общего стандарта кода.
- Неэффективный CI/CD: Длительное время сборки (25+ минут) из-за устаревшей инфраструктуры замедляло цикл разработки и демотивировало команду.
Пример архитектурной проблемы: Massive View Controller, характерный для проекта.
// ViewController, нарушающий принцип единственной ответственности
class LegacyViewController: UIViewController {
// Сетевые запросы, парсинг JSON, работа с БД, логика отображения — всё в одном месте
func loadData() {
NetworkService.fetch { [weak self] result in
DispatchQueue.main.async {
let models = self?.parse(result) ?? []
self?.saveToCoreData(models)
self?.updateTableView(models)
self?.configureHeader(with: models)
// ... ещё 10+ методов, обновляющих разные части UI
}
}
}
}