# Kotlin Coroutines book is finally ready!

A year has passed since I started working on the book. Though when I started writing it, I already had a clear picture of what I wanted to present there, as the book is based on the workshop I am conducting for three years already. I had over 20 editions of this workshop, and with each group, I was improving my explanations and learning what is interesting for developers learning about coroutines. As a fruit of all that work, I am now proud to present the Kotlin Coroutines book.

But to be fair, this book was also highly influenced by our technical reviewers. This team includes Nicola Corti (GDE for Kotlin), Garima Jain (GDE in Android), Ilmir Usmanov (working on Kotlin compiler), Sean McQuillan (Developer Advocate at Google), Vsevolod Tolstopyatov (team lead of the Kotlin Libraries team), Igor Wojda (Android Developer Advocate) and others. They all made significant contributions to this book. Along with suggestions for improvements, they pushed my understanding forward and forced me to dig deeper into some topics. Language revision was done by Michael Timberlake. Without all of them, this book would not be as good.

I am a happy user of Kotlin Coroutines since its early versions, and I firmly believe that it is a revolutionary solution. However, it is not easy to use coroutines well. I constantly see on a variety of projects, structures that absolutely make no sense (like withContext(SupervisorJob()), async { ... }.await() or coroutineScope { launch { ... } }). I can guess what their authors wanted to achieve, but whoever understands Kotlin Coroutines, can immediately see that the produced code makes no sense. That is why I started teaching Kotlin Coroutines, but soon I realized it is not enough. In over 20 editions of the workshop, I trained over 200 developers, but it is a fraction of all the users. So based on that workshop, I started writing this book. It was supposed to be a simple project, but as always, while writing, I could see more and more topics that need to be explained. Over time, different reviewers joined the project, with amazing suggestions. Applying them all took time, but I am happy with the final result. Finally, my new child is born.