Teaching and mentoring Developers to hone their craft is a passion of mine and I am a firm believer in promoting continual, deliberate practice through delivering Pairing/Emsemble sessions, Katas, Dojos and now public training offerings.

If you would like to engage me to help your teams improve, please get in touch.

Real World Kotlin Development Workshop

real world kotlin


Would you love to take full advantage of Java without its verbosity? Wish there was a better way to avoid NullPointerExceptions? Want to be able to still rely on first-class tooling and industry support? If so then this workshop will show that is now possible.

Kotlin is a statically-typed language focused on conciseness and interoperability with Java. Its primary target is the JVM and can also be cross-compiled to JavaScript and native code using LLVM.

In this 2 day workshop you'll learn the language’s powerful, developer-friendly features, how they relate to what you know already, and to safely and incrementally migrate existing Java codebases to Kotlin.

Target Audience

Developers who are already using JVM languages such as Java or Scala to deliver either mobile or server-side applications.


To fully benefit from this workshop, attendees should have prior experience with Java.

Most of the exercises will use IntelliJ IDEA as the development environment.

This is a highly practical workshop so attendees should bring their laptop setup with a Java 8 development environment installed.

Learning outcomes

  • Apply a range of language features to write smaller, more straightforward and safer code.
  • Take advantage of the practical interoperability with Java to migrate existing code to Kotlin safely and effectively.
  • Learn several IntelliJ intentions and refactoring tricks for increased productivity.
  • Follow the language's functional approaches and promote immutability and declarative code style.

Course dates

No public offerings are currently scheduled. Please get in touch for private and custom offerings.

Schedule (customisable)

Day 1

  • Kotlin initiation
    • Variables
    • Functions
    • Expressions
    • Control structures
    • Classes
  • Power features 1
    • Data classes
    • Nullability
    • Extensions
    • Objects

Day 2

  • Functional programming
    • Collection manipulation
    • Ranges and Progressions
    • Lambdas
    • Receivers (let/apply/with/run)
  • Power features 2
    • Type aliases
    • Operators and Infixes
    • Sealed classes hierarchies
  • Java interop recap
    • @JvmX annotations
    • Automated conversions
    • Incremental migration