The Pragmatic Engineer

The programming language after Kotlin – with the creator of Kotlin

· Summarized

Share this episode
Anyone with this link can open it.
Share Link
Start at 0:00

Key takeaways

  • Kotlin arose as a solution to the stagnation within Java, incorporating modern programming paradigms and aiming for simplicity and usability.
  • Kotlin's design emphasizes key features such as null safety, reduced boilerplate, smart casts, and bidirectional interoperability with Java.
  • Kotlin became a popular language for Android development due to its evolution in addressing the needs of developers frustrated with Java.
  • Andrew's CodeSpeak project aims to facilitate programming in an era increasingly driven by AI, emphasizing human interaction in coding.
  • The future of software engineering is expected to involve humans increasingly managing complexity while utilizing AI tools to enhance productivity.

Summary

The Origins and Evolution of Kotlin

Andrew Brestler, the creator of Kotlin, discusses the motivations behind developing a new programming language, particularly in the context of the stagnation of Java. Kotlin was designed to replace Java, addressing issues such as verbosity, lack of modern features, and lack of development speed. The interview highlights the process of designing a language, including how the philosophy behind Kotlin was largely influenced by other languages like Scala and C#. Themes include the importance of seeking interoperability with Java, null safety, and the decision-making process that shaped Kotlin’s features.

The Unique Features of Kotlin

Key features of Kotlin that set it apart from Java are discussed extensively. This includes Kotlin's null safety, reduced boilerplate, and design patterns such as smart casts. The conversation deep dives into the challenges in maintaining bidirectional interoperability with Java and the learning curve associated with these features. Additionally, Andrew reflects on choices made during Kotlin’s development, such as the omission of the ternary operator and the complexity of language design.

The Role of Kotlin in Android Development

The podcast reveals how Kotlin became a primary language for Android development. Initial resistance from the Android community transitioned into enthusiastic adoption after Kotlin's release. The discussion covers how the synergy between Kotlin and Android's growing ecosystem enabled broad implementation, driven by the need for better tools and features that were lacking in Java.

The Birth of CodeSpeak and AI in Programming

Andrew introduces CodeSpeak, a new programming language that aims to simplify coding in the age of AI. CodeSpeak seeks to reduce boilerplate code and emphasizes concise, plain-English programming instructions, highlighting the complexities introduced by AI-assisted coding tools. The discussion ends with Andrew asserting the importance of maintaining human control over software development even as AI technologies advance.

Future Directions for Software Engineering

The podcast concludes with Andrew discussing the future of software engineering in the context of AI, offering insights and predictions for how the landscape will evolve. He emphasizes the ongoing need for engineers to handle complexity and the importance of adapting to new coding paradigms while leveraging AI tools.

Sponsors

  • Statsig · The unified platform for flags, analytics, experiments, and more.
  • Sonar · The makers of SonarQube, the industry standard for automated code review
  • WorkOS · Everything you need to make your app enterprise ready.

Show notes

Brought to You By:

• Statsig — ⁠ The unified platform for flags, analytics, experiments, and more.

• Sonar – The makers of SonarQube, the industry standard for automated code review

• WorkOS – Everything you need to make your app enterprise ready.

—

Andrey Breslav is the creator of Kotlin and the founder of CodeSpeak, a new programming language that aims to reduce boilerplate by replacing trivial code with concise, plain-English descriptions. He led Kotlin’s design at JetBrains through its early releases, shaping both the language and its compiler as Kotlin grew into a core part of the Android ecosystem.

In this episode, we talk about what it takes to design and evolve a programming language in production. We discuss the influences behind Kotlin, the tradeoffs that shaped it, and why interoperability with Java became so central to its success. 

Andrey also explains why he is building CodeSpeak as a response to growing code complexity in an era of LLM agents, and why he believes keeping humans in control of the software development lifecycle will matter even more as AI becomes more capable.

—

Timestamps

(00:00) Intro

(01:02) Why Kotlin was created

(06:26) Dynamic vs. static languages

(09:27) Andrey joins the Kotlin project

(14:26) Designing a new language 

(19:40) Frontend vs. Backend in language design

(21:05) Why is it named Kotlin?

(24:37) Kotlin vs. Java tradeoffs

(28:32) Null safety 

(31:24) Kotlin’s influences 

(39:12) Smartcasts 

(40:42) Features Kotlin left out

(44:54) Bidirectional Java interoperability

(55:01) The Kotlin timeline 

(58:00) Kotlin’s development process

(1:07:20) From Java to Android developers

(1:12:12) How Android became Kotlin-first 

(1:18:20) CodeSpeak: a language for LLMs

(1:24:07) LLMs and new languages

(1:28:20) How software engineering is changing with AI

(1:36:12) Developer tools of the future 

(1:39:00) Andrey’s advice for junior engineers and students 

(1:42:32) Rapid fire round

—

The Pragmatic Engineer deepdives relevant for this episode:

• Cross-platform mobile development

• How Swift was built – with Chris Lattner, the creator of the language

• Building Reddit’s iOS and Android app

• Notion: going native on iOS and Android

• Is there a drop in native iOS and Android hiring at startups?

—

Production and marketing by ⁠⁠⁠⁠⁠⁠⁠⁠https://penname.co/⁠⁠⁠⁠⁠⁠⁠⁠. For inquiries about sponsoring the podcast, email podcast@pragmaticengineer.com.



Get full access to The Pragmatic Engineer at newsletter.pragmaticengineer.com/subscribe

Follow this show on AudioBrevity and new episodes get summarized for you. Create a free account

Couldn't load the audio. A blocker may be stopping the show's tracking links. Open the file