Ответ
Часто не хватает глубокого понимания архитектуры приложений, особенно при переходе от простых задач к сложным. Например, не всегда удаётся правильно применить MVVM или Clean Architecture в реальных проектах.
Ещё сложность — работа с legacy-кодом: рефакторинг без поломок, добавление новых фич в старый код.
Иногда мешает недостаток знаний в смежных областях: Kotlin Coroutines, Jetpack Compose, DI (Dagger/Hilt), тестирование (Unit/UI тесты).
Пример:
// Плохо: всё в Activity
class MainActivity : AppCompatActivity() {
override fun onCreate() {
val api = Retrofit.create()
api.getData().enqueue(...) // Network call in UI layer
}
}
// Лучше: разделение на слои
class MainViewModel(repo: DataRepo) : ViewModel() {
val data = repo.fetchData() // Use coroutines/Flow
}
Решение: учиться на реальных проектах, разбирать opensource, участвовать в code review.