MVVM is a design pattern that can make your life so easy when it is correctly applied and maintained. In the past I saw different ways of implementing the communication between the view model and the view controller. Everybody did it in a different way and it was hard to follow it.
This is a good introduction talk about MVVM and how RxSwift can help you communicate between the view model and the controller and also on how it can help you cut down boilerplate code.
Video url: https://realm.io/news/slug-max-alexander-mvvm-rxswift/
RxSwift url: https://github.com/ReactiveX/RxSwift